pushad
和popad
指令。我有一个64位可执行文件,所以我假设我必须查找所有寄存器的压入和弹出操作。到目前为止,我一直可以用
readelf -h
获取入口点,并设置一个gdb
中此地址的断点。使用layout asm
,我也可以按照反汇编的说明进行操作。据我了解,在popad
指令中,解压缩已完成,我可以得到原始的入口点。但是,因为在64bit上没有popad
,所以我不确定原始入口点在哪里。全部寄存器会弹出还是只有几个?我也不知道如何修复导入。
pushad
和popad
指令。我有一个64位可执行文件,所以我假设我必须查找所有寄存器的压入和弹出操作。readelf -h
获取入口点,并设置一个gdb
中此地址的断点。使用layout asm
,我也可以按照反汇编的说明进行操作。据我了解,在popad
指令中,解压缩已完成,我可以得到原始的入口点。但是,因为在64bit上没有popad
,所以我不确定原始入口点在哪里。全部寄存器会弹出还是只有几个?
评论
我无法帮助重建ELF导入,但是对于查找原始入口点(OEP),找到UPX过渡到OEP的最简单方法是从打包文件的入口点开始并继续分解(在OllyDbg中,这是有效地意味着只向下滚动),直到看到一个JMP,然后是一长串空(00)字节。 JMP的目的地是OEP。图示如下:deamonftp.free.fr/deamoncrack/Tuts/Kef/UPX/Cours%20upx_fichiers/…(显然,您不会使用OllyDbg,但是在Linux上也可以使用相同的方法。)