我想知道您是否可以从相应的 .dmp 文件中将 dll 保存到您的硬盘驱动器中。此外,如果没有,除了 .data/.text 部分 bin 文件之外,是否可以从同一个 .dmp 文件中完全获取 asm 代码?通过获取 asm 代码,我的意思是就像你在 IDA 中打开一个解压的 .exe 一样(这样你就可以将函数重构为 c 代码等)
从 .dmp 获取原始 .dll 文件?
逆向工程
部件
2021-06-11 11:59:03
2个回答
如果您有 .dmp(完整的内核内存转储),则不确定各自的转储文件是什么
并且您已将其加载到 windbg 中,您可以使用 .writemem 命令将页面写回
一个样品
kd> lm m null
Browse full module list
start end module name
fcad2000 fcad2b80 Null (pdb symbols) e:\symbols\null.pdb\77840F8CB3624E438D5D2F0913E4D30E1\null.pdb
kd> r cr3
cr3=00039000
kd> ?? @$proc->Pcb.DirectoryTableBase
unsigned long [2] 0x81291848
0x39000
kd> .writemem c:\null.bin fcad2000 L?(fcad2b80-fcad2000)
Writing b80 bytes..
是的,这是可能的,但是这个过程没有自动化。从技术上讲,它类似于解包过程:您获得可执行文件的内存转储(在这种情况下,您需要从内存转储中提取 dll),调整 PE 标头,使各部分与转储中的偏移量匹配,如果需要,恢复导入部分,恢复重定位。
如果你只是想卸载 dll,而不打算重用二进制文件,那么你可以在 IDA 中打开 dmp 文件并在模块中找到它。IDA 允许您直接在转储中反汇编它,但您将无法应用签名。并且不会显示导入,因为 dmp 是进程所有模块的混合。
其它你可能感兴趣的问题