input="$(
sudo gdb -n -q -batch-silent \
-ex "set logging on" \
-ex "set logging file /dev/null" \
-ex "set logging redirect on" \
-ex "attach $PID" \
-ex "set \$dlopen = (void*(*)(char*, int)) dlopen" \
-ex "call \$dlopen(\"/$filename\", 1)" \
-ex "detach" \
-ex "quit"
)"
基本上我想把我的文件$filename附加到$PID中,但我不想让$PID知道$filename在它的映射中?我该怎么做
最佳答案
我该怎么做
这并不容易:有太多的方法可以让进程发现$filename
在其地址空间中:
读取这些文件:
/proc/$pid/maps
/proc/$pid/task/$tid/maps
调用这些函数:
dl_iterate_phdr
dladdr
读取这些全局变量:
_DYNAMIC[] /* points to _r_debug */
_r_debug.r_map /* points to linked list of DSOs */
可能还有其他的方法。你会明白所有这些,否则这个过程可能会发现你的诡计。
关于linux - 无论如何,有没有附加到流程 map 上的文件,同时保持文件对 map 的隐藏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46615574/