本帖最后由 tie1zhu 于 2026-1-13 23:55 编辑
FSG v2.0脱壳 实战
看了 B站上面的《吾爱破解论坛官方入门教学培训(Windows逆向入门)》,尝试完成了第一课作业三,写个帖子记录一下。
工具:
- ExeinfoPe:查壳工具。
- OllyDbg:调试程序,寻找OEP。
- LordPE:抓取内存映像【dump】。
- ImportREConstructor:重建输入表。
下文中的演示文件来自于 爱盘, 吾爱破解论坛官方入门教学培训第一期文件夹下面。
使用单步跟踪法脱壳。
具体的步骤:
-
查壳,FSG壳,压缩壳。
-
-
使用OllyDbg调试。
-
-
单步步过向下运行;遇到循环要向上跳转时,在跳转的下一行汇编指令,右键-断点-运行到选定位置,继续单步步过向下运行。
-
-
直到这一行:
-
-
这个图里面有4个跳转,分别是 js、jnz、2个jmp。关于这4个跳转有以下3点需要注意:
- js和第2个jmp 都是向上跳转,可见这两个跳转构成了 一个2层的循环体。
- jnz的作用只有一个:跳过第一个jmp。
- 我在 第2个jmp下面使用 运行到选定位置 后,程序运行结束了。
-
根据以上三点,可以得出这样一个结论:第一个jmp通往OEP。
-
运行到第一个jmp。
-
-
单步步过一次。右键-分析-分析代码,即可看到OEP 1DDAC。
-
-
-
使用LordPE来dump内存映像。
-
-
右键-修正镜像大小,右键-完整转存。
-
单步步入这个call,看到下面调用了不少函数。
-
-
在下面,随便选一个函数,右键-在数据窗口跟随-内存地址。
-
-
在左下角,内存区,右键-长型-地址。
-
-
往上滑,找到第一个导入函数的地址是 432000。减去基址400000就是32000,这就是IAT的RVA。
-
-
往下滑,找到最后一个导入函数的地址是 432554。减去基址432000就是554,这就是IAT的大小。
-
-
使用ImportREConstructor重建输入表,选进程,填写OEP、RVA、大小,获取导入表。
-
-
显示无效函数,右键-剪切指针。
-
-
修正转储 到刚才dump下来的文件,并运行。
-
默认密码:52pojie 或者 www.52pojie.cn
|