朱朱你堕落了 发表于 2022-12-26 21:12

程序找OEP的问题

本帖最后由 朱朱你堕落了 于 2022-12-26 23:22 编辑

放入OD,第一处肯定是壳的入口点:



程序OEP处:


那么肯定在到OEP前一步,有一个跳,跳到了OEP,这个OEP怎么找,用od的trace能不能找到?把trace走的每一步都保存到TXT里,分析这个TXT, 感觉方法可行,但是试了一下,并没有找到,
是方法不对,但是这种肯定不可行?

就是说,现在我已经提前知道了OEP了,我直接在OEP这里下了硬件执行断点,程序走到OEP处肯定要断下来,不走了。那么在走到OEP的前一步,肯定是跳到OEP处的这么一个指令存在。
问,能不能用OD自身的这个能力跟踪出来?

附件网盘: https://cowtransfer.com/s/21d99863f50345

fq3803 发表于 2022-12-26 21:12

朱朱你堕落了 发表于 2022-12-27 10:56
hr esp方法(壳的入口为pushad,然后F7,再下hr esp断点,多次也可以找到OEP的,也可找到跳转,
0426E7A...

这个方法需要确定是多少次可以到达代码段(对这个程序应该是44次),然后重新用OD加载程序,
F7 一次,再下hr esp,之后运行程序43次,再单步F7,就可以找到跳转地址了

wgz001 发表于 2022-12-26 22:00

最近研究上脱壳了啊,666
到OEP才是第一步
FFF的注册机一般都是这个壳

woflant 发表于 2022-12-26 23:50

像一般的壳,可以通过断VirtualProtect函数,因为大部分壳解密都会涉及到区段改写,需要修改区段内存属性

查看VirtualProtect函数断下次数,记录最后一次,手动跟踪,普通壳分析一会就能跟到OEP

根据分析思路,转换成OD脚本

这个壳有IAT加密,直接莽着修复IAT破坏处汇编会踩坑,因为还有部分IAT没有加密

fq3803 发表于 2022-12-27 09:47

理论上来说,可以通过OD自身跟踪功能,来找出OEP的。但实际上,由于时间原因,跟踪文件的大小的原因等,可能你跟踪不下去了。
实际上,这个壳ACP这个壳可以用两次内存断点法来查找 OEP的,或者用hr esp方法(壳的入口为pushad,然后F7,再下hr esp断点,多次也可以找到OEP的,也可找到跳转,
0426E7A- FF25 BC6E4200   jmp dword ptr ds: )。

朱朱你堕落了 发表于 2022-12-27 10:56

fq3803 发表于 2022-12-27 09:47
理论上来说,可以通过OD自身跟踪功能,来找出OEP的。但实际上,由于时间原因,跟踪文件的大小的原因等,可 ...

hr esp方法(壳的入口为pushad,然后F7,再下hr esp断点,多次也可以找到OEP的,也可找到跳转,
0426E7A- FF25 BC6E4200   jmp dword ptr ds: )。

试了下这个方法,还是没有找到00426E7A 这个位置,应该是我方法不对,麻烦闲暇时录个Gif动画简单演示下就行。
页: [1]
查看完整版本: 程序找OEP的问题