详见:
- https://www.cnblogs.com/DirWang/p/12234943.html
- https://zhuanlan.zhihu.com/p/34263050
- https://www.cnblogs.com/zpchcbd/p/15983349.html
peid查看:
upx0可直接执行命令脱壳,但是upx1无法用如下命令脱壳:
upx.exe -d test.exe
脱壳原理:esp平衡。
工具:通过x64dbg来实现,主要是想利用scylla插件来修复PE文件。
x64dbg源码和下载地址:https://github.com/x64dbg/x64dbg/releases
upx的oep一般是在popad后面最后一个跳转指令的目的地址。
upx脱壳的难点在于dump后pe文件的修复,此处使用了x64dbg中的scylla插件。找到oep之后,需要将pe文件在内存中的数据DUMP出来,但是此时dump出来的文件需要修复导入导出表等信息。scylla修复PE文件的界面和步骤如下:
同时要删除错误的导入导出表项,保留被修复的导入导出表项:
当然也可以从文件读入内存后再修复文件:
如果不行就先dump,再PE Rebuild,然后Fix Dump。