这里是用的是用yoda's cryptor 1.2加壳的记事本,新手附件不能传上来
1)把Od中的异常选项卡中
除了“忽略在内存访问”异常不打勾,其余的全部打勾.
因为Yoda就一次内存异常是最后一次异常.
2)用OD载入程序后。
确定第一个入口点警告,Od提示程序加壳,选不继续分析。
3)按F9运行程序,遇到异常,来到OO4OD769处。观察堆槛窗口。找“SE处理程序”前面那句
0012FFBC 0012FFE0 指向下一个 SEH 记录的指针
0012FFC0 0040D70C SE处理程序
0012FFC4 77E71AF6 返回到 KeRnEl32.77E71AF6
0012FFC8 00000000
0012FFCC 00000000
看到0040D70C这就是程序经过最后一次异常,开始正常运行的地方。
OK 直接CTRL+G来到0040D70C处。在这里下断,重新载入程序。遇到异常就SHIFT+F9
直到0040D70C处,好了。我们看到:
0040D70C 55 PUSH EBP
从0040D70C开始慢慢一路F8往下
0040D70D 8BEC MOV EBP,ESP
0040D70F 57 PUSH EDI
0040D710 8B45 10 MOV EAX,DWORD PTR SS:[EBP+10]
0040D713 8BB8 C4000000 MOV EDI,DWORD PTR DS:[EAX+C4]
0040D719 FF37 PUSH DWORD PTR DS:[EDI]
0040D71B 33FF XOR EDI,EDI
0040D71D 64:8F07 POP DWORD PTR FS:[EDI] (注意这里了,离OEP不远了)
0040D720 8380 C4000000 0>ADD DWORD PTR DS:[EAX+C4],8
0040D727 8BB8 A4000000 MOV EDI,DWORD PTR DS:[EAX+A4]
0040D72D C1C7 07 ROL EDI,7
0040D730 89B8 B8000000 MOV DWORD PTR DS:[EAX+B8],EDI(可以看到EDI=004010CC)
0040D736 B8 00000000 MOV EAX,0
0040D73B 5F POP EDI (可以看到EDI=004010CC)
这里的EDI=004010CC就是OEP了“
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法