一上来的载入位置:
一路往下跑:
但凡遇到往回的大跳转,就按F4跳到下一步,跳过循环部分
直到一个retn
返回到:
然后我们继续往下跟,一直跟到一个jmp
如果再F4往下一步,程序就会跑起来:
所以我们在这里下个断点:
然后按F9运行,看这个循环会运行多少次,大约按了9次后,程序又跑起来,那我们再重新加载程序,这里按下8次F9之后,我们跟踪这个循环:
在第九次跟踪的时候,会发现其中还有循环:
如果我们F4跳过这个JMP指令,程序照样会跑起来,所以我们采用同样的思路,在这个jmp处下断点,然后看看按下多少次F9后他会执行:
答案是按下5次之后。所以,在按下4次F9之后,我们单步跟踪第五次循环。
第五次循环的过程中,如果我们F4跳过这一句:
那么程序又会跑起来,所以我们仍采用上述方式,下断点,看看如果他在按下N次F9运行之后会将程序跑起来,那么我们就按N-1次F9,之后再开始单步跟踪这个循环:
但是这里按下无数次F9都没有要结束循环的意思,我们只能在这个循环的范围内去查找看看有没有什么关键点,我们发现:
这里是一个跨段的跳转,我们到401700下个断点,看看程序会不会执行到这里:
下断点执行之后果然运行到这里,这里就是OEP。
时间: 2024-08-11 23:58:29