中国黑客业务团队承接一切网站入侵业务,服务器入侵业务,文件加密,文件解密,办公系统入侵,电脑远程控制等业务
联系我们:
技术支持
技术支持








菜鸟脱壳之脱壳的基础知识:如何寻找OEP

 这节我们来讲讲如何寻找一个程序的OEP,即Original Entry Point。一些PE加壳程序在被加密的程序上面加了一个区段(有的壳也会合并区段),当外壳代码执行完毕以后,会跳到程序的本身的代码来执行,所以我们可以依靠跨区段的转移指令来寻找程序的入口点。

我们来看看加壳之前的Delphi7.0的程序,用LordPE来打开Delphi7.0程序,我们看到程序的入口点是004C498:

看区段,没有任何的新加的区块:

我们来看看加了壳的程序的入口点,加过壳的入口点为000629D0:

区段变为三个了,很明显,壳将原程序的区段给合并了:

加了壳后,首先,各个区段都要被系统映射到内存中,因为现在的入口点是000629D0,是指向外壳部分的,外壳拿到了控制权以后,通过LoadLibrary、GetProcaddresss、GetModuleHandle等函数来获得自身所需要的API的地址,来解密各个区段的信息,填充好IAT后,就要跳到程序的OEP了(Entry Point),此例是004C498,我们用Ollydbg载入,设置好各个选项(我是把暂停点停在了WinMain处了)。

Ollydbg暂停以后,加壳程序停在了004629D0处:

004629D0 >  60              pushad  //保存现场(pushad 相当于 push 所有的寄存器)

004629D1    BE 00F04300     mov     esi, 0043F000   //把代码段放到esi寄存器

004629D6    8DBE 0020FCFF   lea     edi, dword ptr [esi+FFFC2000] //得到基址

004629DC    C787 9CC00400 7>mov     dword ptr [edi+4C09C], 46CD167B//将第一个函数的地址放到[edi+ 4C09C]

004629E6    57              push    edi    //将基址压栈

004629E7    83CD FF         or      ebp, FFFFFFFF  //将0012FFC0与 FFFFFFFF或

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]  下一页