Reversing.Kr EasyUnpack(脱壳)

本文介绍了如何使用OD(OllyDbg)进行动态脱壳,重点在于寻找入口点(OEP)。通过单步跟踪、跳过不必要的跳转指令,最终在00401150处找到OEP。然而,尝试使用OllyDump脱壳并未成功,说明了简单的脱壳方法可能并不适用于所有加壳程序。脱壳的主要目的是为了接近原始程序代码,便于分析和免杀处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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跳过跳转指令,红色线表示已经实现跳转,白色表示没有







  1. 这里有两个jmp,在第二个jmp上面按F4,第二个jmp就是最终的跳转地址
  2. 熟悉的感觉。。Find the OEP:00401150,这个OEP就是flag
  3. 向上翻翻,00401000,跟 ReadME.txt 的提示一样

            

之后想要把这个壳脱掉:

发现只是简单地使用OllyDump脱壳调试进程,脱壳出来的程序都不能运行,此方法行不通,到此为止。

 

 

脱壳

当被加壳的程序运行后,首先运行的是壳程序,壳程序会将原程序还原到内存中并将控制权返还。OEP总会在这期间被脱壳者找到。只要找到这个OEP,就可以将原程序从内存中dump出来,而后针对dump出的程序进行处理,最终得到原程序。

一般来说,脱壳就是要找程序的OEP,得到这个OEP,脱壳就完成一半了,剩下的就是修复工作了

  • 脱壳用处

    脱壳可以破除壳程序对程序的保护。从而使我们更接近程序代码,了解这个程序。而对于免杀制作者来说,脱壳的用处也很大,有些木马生成的服务端默认就被加壳。壳把这个木马服务端保护起来了,这或多或少对我们的免杀造也了阻碍。所以免杀制作者往往先将木马服务端的壳脱掉,而后再按照平时免杀的方法对木马服务端进行免杀处理。

大佬帖子(吾爱破解)

https://www.52pojie.cn/thread-259984-1-1.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值