页次: 1
一个lib.so已经被载入内存后,
archlinux系比如我更新了这个lib.so文件,这时候除非程序自己有重载lib的机制,不然通过pmap查看到的进程载入的lib还是旧版本。
这时候我想获得旧版lib.so文件应该如何做。 或者获取这个lib的哈希值也可以。
离线
从 /proc/<pid>/maps 拿到 inode 号之后拿 debugfs 或者类似的手段把文件弄出来。
离线
类似的手段是什么手段?
最近编辑记录 atmouse (2015-01-30 13:35:32)
离线
对了, 这个inode 是保留inode么? inode所在的实际物理扇区不会被新写入的文件覆盖吧?
离线
对了, 这个inode 是保留inode么? inode所在的实际物理扇区不会被新写入的文件覆盖吧?
不会。只要文件还在被使用,整个文件都是安全的。
目测拿 debugfs link 不会增加 link count。你写个内核模块搞吧。
离线
好像没办法避免被覆盖的样子,通过inode 导出看来不靠谱, 还有maps左边的那段内存地址也不知道是不是完整的整个文件,估计只是所需要用的函数才导入内存
离线
能找下完全确认不会被覆盖的说明么?。 只是再写个内核模块感觉麻烦了,我是想,内存里面会不会有保存完整的整个文件(不确定会不会经过内核解析后变成其他数据? 我看内存地址也分了好几块)
最近编辑记录 atmouse (2015-01-30 13:59:51)
离线
页次: 1