duangsuse::Echo
https://tttttt.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 不需要几行代码就能实现「文件变更的监听和删除文件的保存」
众所周知写程序先写测试:
#cplusplus #code 草,居然不支持文件名…… 真的只能看目录么 那样只能 fstat() readdir() 扫 dirent 了,而且也没法知道具体什么文件有变更,非常草。之前还以为是不能递归监听
https://www.linuxjournal.com/article/8478 #linux #dev
https://github.com/NexusBots/Umbreon-Rootkit/blob/master/readlink.c
关于 dnotify 如何取得 path 的问题可以
#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 的确更不方便呢
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>fs watch 是 Ruby/Node 系 CLI 应用重要的特性,包括 jekyll, inotifywatch 在内支持者不在少数,封装好的东西例子就不举了 睡大觉😴。
#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;
}
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 的确更不方便呢
GitHub
NexusBots/Umbreon-Rootkit
Contribute to NexusBots/Umbreon-Rootkit development by creating an account on GitHub.