学习过程之记录贴
本帖最后由 Chost 于 2019-5-19 18:37 编辑1. 利用ESP定律手工脫殼
2. 介紹ESP定律运用的是堆栈平衡原理,一般的加壳软件在执行时,首先要初始化,保存环境(保存各个寄存器的值),一般利用PUSHAD(相当于把eax,ecx,edx,ebx,esp,ebp,esi,edi都压栈),当加壳程序的外 壳执行完毕以后,再来恢复各个寄存器的内容,通常会用POPAD(相当与把eax,ecx,edx,ebx,esp,ebp,esi,edi都出栈),通过跨区段的转移来跳到程序的OEP来执行原程序!
在脱壳的时候,我们可以根据堆栈平衡来对ESP进行下断,进而快速到达OEP!
3. 查殼 UPX殼
4. 寻找OEP并脫殼
(1) 用OD载入该程序
(2) 按下F8单步步过,注意观察OD右上角的寄存器中ESP有没有成红色
(3)选中红色ESP部分,右键HW break下硬件断点
(4)然后按F9找到popad
(5)在popad附近找到一个大跳jmp,直接这行f4运行到指定位置。
(6)然后取消硬件断点,按f7进入jmp跳过去就是OEP了
(7)右键选择OD脱殼
(8)把重建输入表前面的勾去掉,并复制修正的地址28F883之后用到,在点脱殼
(9)保存名为test2,
不要关掉OD,打开ImportREC选择刚才的程序载入
在OEP处填上刚才复制的地址28F883,并点击TAT自动搜索,如果出现已发现一些信息就说明地址正确
然后获取导入表,查看是否有无效的
接下来修正
修正刚才保存的test2
5. 最后查殼
相关文件供大家参考学习,一同交流进步,(注意文件程序可能涉及病毒,请于虚拟机中学习使用。)
链接:https://pan.baidu.com/s/1rW_g3NQGSsXoWSAg23uaXQ 提取码:yrkb
夜陌 发表于 2019-5-19 22:28
其实 壳 这东西吧 有没有 都无所谓了解就是咯
.net混淆壳的程序不脱壳,修改不了{:301_1008:} 学习一下 感谢楼主分享 其实 壳 这东西吧 有没有 都无所谓 {:301_1001:} 了解就是咯 多谢楼主分享啊! 好复杂,学习了{:1_893:} 兄弟这都是几十年前的教程了,没啥意义,别学了 总之,谢谢分享!!!