打开Easy_UnpackMe.exe得到一个空白窗口。

查看下Readme.txt

ReversingKr UnpackMe

Find the OEP

ex) 00401000

要我们找到OEP,然后地址格式类似00401000

所谓的OEP就是程序的入口点了,一般软件如果加了壳,那么就会隐藏OEP或者用了假的OEP了。

先上工具试下吧,上PEiD查壳工具,打开提示yoda's Protector

有可能是yoda的壳,也有可能是误报。

看雪工具箱有去yoda壳的工具:

打开发现确实是误报。。。

手动脱壳…

根据下面这篇的说法:
https://zhidao.baidu.com/question/917856644909169099.html

方法一:单步跟踪法
1.用OD载入,不分析代码!
2.单步向下跟踪F8,是向下跳的让它实现
3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——运行到所选)
4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!
5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,这样很快就能到程序的OEP
6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入
7.一般有很大的跳转,比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETE的一般很快就会到程序的OEP。

按照这种方法,就是一步步跟踪,向上的跳转不让其实现,向下的跳转让其实现~

先打开程序:0040A050就是CALL了,F7跟进去。

然后就开始按F8了,按着按着就遇到了一个循环:

0040A099 - 0040A0C1不停循环,方向键按到0040A0C3然后按F4执行0040A0C3地址程序跳过上面的循环。跳过后,依然按F8步过,遇到循环就类似操作F4跳过。

有时遇到稍微大的循环,也是直接到循环后的下一条指令F4跳过,就这样来到了最后一个循环0040A1D1 - 0040A1F8之后,发现了一个大的跳转jmp 00401150

00401150就是真正的OEP了,也是Flag。

既然是脱壳,我们用OD自带的插件来脱壳。

设置入口点1150,为什么是1150? 因为偏移量是400000了。

保存下文件:

再次查看,可以发现这个程序用的VC++写的。