浅浅记录一下第一次手动脱壳的经历
如果写的有错误,大佬们可以帮帮忙指正以下 ~ 谢谢 Thanks♪(・ω・)ノ
前言
动调前一定要关闭杀毒软件!
我不知道为什么我开着杀毒软件一直弄不好,关掉杀软就一次成功
(我比较懒就不配图了)
内容
首先用 Exeinfo PE 查看壳的类型,判断需要手动脱壳。
接着用 StudyPE+ 禁用 ASLR 来固定 PE 基质方便接下来的操作。
然后在 dbg 选项中关闭系统断点,让程序开始停在软件模块。(我才知道原来可以这样子让程序停在软件模块,我以前都是直接输入地址,跳转到入口附近下断点)
接下来用 ESP 定律,按一下 F8 ,看到 ESP / RSP 变红之后在 ESP / RSP 下个断点,然后 F9 。
接下来就是 F8 一步步找到 OEP(程序的入口点)。
接下来打开 Scylla ,直接 dump ,然后修复 IAT ,Fix Dump。
注:IAT(Import Address Table,导入地址表)由于导入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于一个或者多个 DLL 中。当 PE 文件被装入内存的时候,Windows 装载器才将 DLL 装入,并将调用导入函数的指令和函数实际所处的地址联系起来(动态连接),这操作就需要导入表完成。其中导入地址表就指示函数实际地址。
然后就脱壳完了(这么简单?)。
接下来就可以直接在 IDA 静态调试了。
参考资料:
- TSCTF-J2022 官方WP https://md.byr.moe/s/b5cZWnhDa
- x64dbg手脱64位程序upx3.96壳后修复 https://www.52pojie.cn/thread-1534675-1-1.html
- IAT https://baike.baidu.com/item/IAT/20444498
- ESP定律原理详解 https://baijiahao.baidu.com/s?id=1662196196423030806
- 单步跟踪法 https://ctf-wiki.org/reverse/windows/unpack/trace/
评论区