ReadMe.txt文件内容是:
提示是要找到入口点,之后找到ex寄存器的00401000处的内容。
- 参照大佬思路:
1、用OD载入待脱壳文件,如果出现压缩提示,选择“不分析代码”;
2、向下单步跟踪,实现向下的跳转;
3、遇到程序往上跳转的时候(包括循环),在回跳的下一句代码上单击并按键盘上的“F4”键跳过回跳指令;
4、OD中的白色线条表示跳转没有实理,不必理会,红色线条表示跳转已经实现;
5、如果刚载入程序的时候,在附近有一个CALL指令,那么就要按键盘上的“F7”键跟进这个CALL内,不然程序很容易运行起来;
6、在跟踪的时候,如果执行某个CALL指令后就运行,一定要按键盘上的“F7”键进入这个CALL之内再单步跟踪;
7、遇到在popad指令下的远转移指令时,要格处注意,因为这个远转移指令的目的地很可能就是OEP
脱壳过程
放到OD进行执行,出现提示要不要代码分析,选择否,如果选择了是,OD加载每次默认都会选择是(根据文件名加载),这个时候可以把要加载的文件的名字改一下,它就会按照第一次加载时的情况进行加载,或者可以调一下设置不记录历史参数选项:
一开始还是单步步入即F7,后来直接F8,凡是向上跳转的,都在跳转指令的下一行指令处,按F4跳过跳转指令,红色线表示已经实现跳转,白色表示没有
- 这里有两个jmp,在第二个jmp上面按F4,第二个jmp就是最终的跳转地址
- 熟悉的感觉。。Find the OEP:00401150,这个OEP就是flag
- 向上翻翻,00401000,跟 ReadME.txt 的提示一样
之后想要把这个壳脱掉:
发现只是简单地使用OllyDump脱壳调试进程,脱壳出来的程序都不能运行,此方法行不通,到此为止。
脱壳
当被加壳的程序运行后,首先运行的是壳程序,壳程序会将原程序还原到内存中并将控制权返还。OEP总会在这期间被脱壳者找到。只要找到这个OEP,就可以将原程序从内存中dump出来,而后针对dump出的程序进行处理,最终得到原程序。
一般来说,脱壳就是要找程序的OEP,得到这个OEP,脱壳就完成一半了,剩下的就是修复工作了
- 脱壳用处
脱壳可以破除壳程序对程序的保护。从而使我们更接近程序代码,了解这个程序。而对于免杀制作者来说,脱壳的用处也很大,有些木马生成的服务端默认就被加壳。壳把这个木马服务端保护起来了,这或多或少对我们的免杀造也了阻碍。所以免杀制作者往往先将木马服务端的壳脱掉,而后再按照平时免杀的方法对木马服务端进行免杀处理。
大佬帖子(吾爱破解)
https://www.52pojie.cn/thread-259984-1-1.html