WEB开发网
开发学院网络安全黑客技术 脱壳基础知识入门之用内存断点找OEP 阅读

脱壳基础知识入门之用内存断点找OEP

 2007-01-15 16:44:16 来源:WEB开发网   
核心提示: 也就是说当一个壳如果他在JMP到OEP前的一行代码仍在都在对code段解压,那么我们就不能再使用这种办法了!或者说我们没必要使用内存断点更贴切一点!情况2.对于一些在OEP处有stolencode的代码我们来看看一个OEP0049E2F4u>55pushebp//OEP0049E2F

也就是说当一个壳如果他在JMP到OEP前的一行代码仍在都在对code段解压,那么我们就不能再使用这种办法了!

或者说我们没必要使用内存断点更贴切一点!

情况2.

对于一些在OEP处有stolencode的代码

我们来看看一个OEP

0049E2F4u> 55        pushebp               //OEP
0049E2F5  8BEC       movebp,esp
0049E2F7  83C4F4     addesp,-0C
0049E2FA  B8BCE04900   moveax,unpack.0049E0BC
0049E2FF  E8048CF6FF   callunpack.00406F08         //这里调用子程序
0049E304  A1B8FE4900   moveax,dwordptrds:[49FEB8]
0049E309  50        pusheax
0049E30A  6A00      push0
0049E30C  681F000F00   push0F001F
0049E311  E8E68EF6FF   call<jmp.&kernel32.OpenFileMappingA> //API
0049E316  A360194A00   movdwordptrds:[4A1960],eax
0049E31B  833D60194A0000 cmpdwordptrds:[4A1960],0

这个软件在被PESPIN加壳了以后这些全被偷掉了!

也就是说,壳在模拟OEP代码的时候必然会执行

0049E2FF  E8048CF6FF   callunpack.00406F08 //这一步

而这个地方是call向code段的。如果我们使用内存访问断点,那么就停在这个子程序的地方

00406F08  50        pusheax                    //会停在这里
00406F09  6A00      push0
00406F0B  E8F8FEFFFF   call<jmp.&kernel32.GetModuleHandleA>
00406F10  BA04F14900   movedx,unpack.0049F104
00406F15  52        pushedx

这里既不是处理stolencode的地方,也不是FOEP的地方。这就会对我们的判断产生误导。

当然你可以alt+F9返回到壳处理stolen的地方,然后用内存断点,或者按几下F8到达FOEP处,但试问如果你拿到一个未知的壳的时候又怎么知道应该这么处理呢?

还有其他一些情况留给大家总结吧!

在下的砖已抛出,各位的玉不久矣。

--------------------------------------------------

3.总结

好了说了很多,大家应该对内存断点的办法有了全面的了解,如果了解了内存断点的原理就不难明白他的使用方法,不难明白为什么有写壳不能使用内存断点的办法,其实任何的一种办法都需要经验的积累。相信如果大家在回答开篇的3个问题,已经不难了。

大家可以结合原理再好好的体会一下《手动脱壳进阶第八篇Skvp1.32》这篇文章。

上一页  3 4 5 6 7 8 

Tags:脱壳 基础知识 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接