对于我的硕士论文,我需要手动解压打包文件并在 Ghidra 中可视化它们,但我在 Ghidra 的工作中遇到了一些问题,所以我暂时切换到 IDA。我用CPP编写了一个程序,将其编译为ELF,然后对其使用UPX加壳。当我使用 EXEInfoPE 分析它时,我得到的信息是它不再是可执行文件,而是共享对象。当用IDA分析它时,它也说它是一个动态链接库而不是可执行文件。
正如您所看到的,它还指出没有 UPX0 或 UPX1 部分,这是没有意义的,因为当程序运行时,它应该在保留的 UPX0 部分中解包。
有人能指出我的错误在哪里吗?我使用的UPX命令是
upx final
,我也尝试过upx final --best
我不认为静态分析是处理 UPX 打包文件的最佳方法。 :)
免责声明:我的大部分经验都在于Web或Windows逆向。我对 Linux 不太熟悉,但我记得 UPX 打包的基础知识。
这里有一个提示:寻找原始入口点(OEP)。搜索这些说明:
popad
jmp OEP
在调试器中设置断点,当您点击 OEP 时,进行转储。