duangsuse::Echo
715 subscribers
4.24K photos
127 videos
583 files
6.46K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
See you at @fishing_daily ! | (Archived) YuutaW 的版聊频道
darkeet 的编程技术真的很好呢(黑脸
https://t.me/kn007_channel/7253 (这个) #Android #dev 完全没改 🌝..

好吧,我承认对于一个优秀的设计者而言,视付费(或共享)软件为自己的私有之物并没有问题,但是我也觉得 Xposed 或 Lucky Unlocker (1)是搞机圈广泛使用的 (2)是用户的自由 ,开发者无权干涉或者做进一步限制,没有必要对破解太敏感。

dreamtonics.com 和它的 SynthesizerV 也遭到过声库授权验证的破解,作者对这个软件花了很大心思,但是他也没有把这个问题迁怒到*任何使用者*身上,增加一些对用户而言很多余的限制。

不过对于「持久化跟踪破解者」的方法,我觉得还是不要看得太重。理论上 Xposed,Magisk 什么的去 AOP 就相当于复制所有有效代码的「抄袭版」应用的…… 而且持久封禁什么的也别太指望,其实用 ramdisk 的 Android x86 每次都是全新开机, adb 连上就能直接调试(大不了虚拟机写 init.rc 开机自动双清),这种纯客户端应用的反破解(注意不是反逆向工程)造成不了太大麻烦😒

整个应用对真的了解「运行时」概念的人都是运行在沙箱里的;总有方法能 trace 。你用文件系统别人可以 fs watch 嘛😒,dnotify inotify 树变动监听机制,fs IO 都是透明的。 Win32 下也有 Spy++, process explorer 等「实际上不算是调试」的工具能查看,只是见闻不够而已(当然 drakeet 自己也说了『存储重定向』里列得很清楚,不过跟踪破解者还是容易误会成恶意跟踪)。

而且我真不觉得 Xposed 注入代码是问题之源, AOP 本来就是对用户很有利的事情,能实现既有代码缺失的功能,许多人的代码就是缺乏一些用户需要的选项,所以才有 Xposed 和辅助功能去改变。为什么要站到极客们的对立面呢,明明应该是一起的。 #reveng

补充 SAF 访问 Android/data :
"content://com.android.externalstorage.documents/tree/primary:Android/${name}/document/primary:Android/${name}"
#Java #Android #code
Intent intent = new Intent("android.intent.action.OPEN_DOCUMENT_TREE");
intent.putExtra("android.provider.extra.INITIAL_URI", Uri.parse("content://com.android.externalstorage.documents/tree/primary%3AAndroid%2F${name}/document/primary%3AAndroid%2F${name}"));
startActivityForResult(intent, SOME_RESULT_CODE);
duangsuse::Echo
https://t.me/kn007_channel/7253 (这个) #Android #dev 完全没改 🌝.. 好吧,我承认对于一个优秀的设计者而言,视付费(或共享)软件为自己的私有之物并没有问题,但是我也觉得 Xposed 或 Lucky Unlocker (1)是搞机圈广泛使用的 (2)是用户的自由 ,开发者无权干涉或者做进一步限制,没有必要对破解太敏感。 dreamtonics.com 和它的 SynthesizerV 也遭到过声库授权验证的破解,作者对这个软件花了很大心思,但是他也没有…
#cplusplus 嘛,为了避免有人说我指点江山 🐸我就写几行证明下 fcntl() dnotify 是超级简单地。
Android 除了 RootFS 和 libc 结构外本质就是为嵌入式优化的 Linux ,而 DNotify 是 Linux 2.4 引入的目录变更监听机制(为兼容性, in_ 是 2.6 feature),所以我用 C++11 lambda 不需要几行代码就能实现「文件变更的监听和删除文件的保存」

众所周知写程序先写测试:
touch a b; echo 1>b
rm a b
cat saved/b

预期 ./fsw_amd . 输出 Aa Ab Mb Da Db 行。
#cplusplus #code ,居然不支持文件名…… 真的只能看目录么 那样只能 fstat() readdir() 扫 dirent 了,而且也没法知道具体什么文件有变更,非常草。 之前还以为是不能递归监听
#include <fcntl.h>
#include <csignal>
#include <unistd.h>
#include <cstdio>
const int sigPrior = SIGRTMIN+1;
#define notNeg(v) v; if (v<0) return -1
void printFPath(int signo, siginfo_t* si, void*) {
auto o = *si;
getFPath(o.si_fd); printf(" %s\n", fpDesc);
}
int main(int argc, char** argv) {
auto fp = (argc>1)? argv[1] : ".";
int fd = notNeg(open(fp, O_RDONLY));
fcntl(fd, F_SETSIG, sigPrior);
fcntl(fd, F_NOTIFY, DN_MULTISHOT|DN_CREATE|DN_MODIFY|DN_DELETE);
struct sigaction dnAct = { .sa_sigaction=printFPath, .sa_flags=SA_SIGINFO };
sigemptyset(&dnAct.sa_mask);
sigaction(sigPrior, &dnAct, NULL);
while(true) pause();
return 0;
}

fs watch 是 Ruby/Node 系 CLI 应用重要的特性,包括 jekyll, inotifywatch 在内支持者不在少数,封装好的东西例子就不举了 睡大觉😴
https://www.linuxjournal.com/article/8478 #linux #dev
https://github.com/NexusBots/Umbreon-Rootkit/blob/master/readlink.c
关于 dnotify 如何取得 path 的问题可以 readlink /proc/self/fd/0 ,看这个

#DontKnow MAX_CANON PATH_MAX 第一次知道 canon 是指 termios 意义的…… 难怪 termcontrol 会有相关常量名 😳

https://gist.github.com/duangsuse/a8984950c563894eea54fc2f537b5003#file-inotify-cpp
唉现在想着初学时不知道 stdio, fcntl, unistd, stdlib 这些 header 都是干什么的呢…… 不知道怎么选。不过,或许新手会觉得 C 的 std in/out/err; fprintf,fscanf; fread,fwrite 比 Java 的 I/O Stream 要方便些,其实 libc 的确更不方便呢
啊哈,直接完整封装 inotify 的所有功能了,不过 70 行代码 😋
下载代码clang fsw.cpp -O3 &&install -Dm755 a.out /usr/bin/infsw 就可以收获简单易用的 fs watcher 了 😊
$ infsw #sysadmin #cplusplus #tools
R M attrib close close.rd open move.from move.to A D self.D self.move self.unmount in.queovf in.ignore
evNames=above evFlags=dFu1 hasPrefix=1 bufSize=1360
#bilibili #science #learn #drawing (当然 composition 不是学绘制的人首先要学的,应该说你 #Python 的 IDLE turtle 才是首先要学的
python -m turtle ; python -m turtledemo 一下吧 🌝
为什么不试着接触一下绘制?无论 Qt, Android, C# 还是 DOM/CSS ,在计算机上绘图甚至制造模式化的动画、游戏的能力都是值得学习的,尤其是——它还那么有趣。
#Java #typing 泛型
Forwarded from dnaugsuz
面试题都是屑,有胆就让通过的人在实际工程里写出那样精巧的代码啊
就是无聊的智商测试,过滤人的而已,根本不在乎实际应用能力。

应聘的人等于做题家,学习的过程等于填鸭,内卷死了。 你能做成什么样和用成什么样根本是两码事。
Forwarded from 螺莉莉的黑板报
Forwarded from dnaugsuz
噢是这样啊
#security 真眼尖。 😳 这都能看出来,很会写工具啊
Forwarded from 一碗脑脊液。
Perseverance 降落伞上的花纹是「Dare Mighty Things」

https://twitter.com/FrenchTech_paf/status/1363992051734478852?s=20
#PLT #lang 有意思: duck.io 🌚
#os #linux #sysadmin #js 支持 userfs 的 /init 也有 initramfs boot ,否则默认 node REPL 作 PID 1
Forwarded from 回忆的梦想赞助商️ (U2Fちゃん)
https://node-os.com
梦想的实现,万物皆可 JS(基于 Linux Kernel

#旧闻