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

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

 2007-01-15 16:44:16 来源:WEB开发网   
核心提示:1.前言发现论坛中很多兄弟在询问:什么是二次内存断点,三次内存断点,脱壳基础知识入门之用内存断点找OEP,还有很多人对内存断点的原理不是很明白,其实只要懂得壳是如何解压代码的,执行,004AE242A100104000moveax,dwordptrds:[004AE24C]//004AE24C处的内存读取004AE24

1.前言

发现论坛中很多兄弟在询问:什么是二次内存断点,三次内存断点。还有很多人对内存断点的原理不是很明白。其实只要懂得壳是如何解压代码的,那么就完全可以按自己的喜欢来下断。

本文要解决的问题是:

1.什么是内存断点?

2.如何在寻找OEP时使用内存断点。

3.内存断点的局限性。

2.内存断点寻找OEP的原理

i.首先,在OD中内存断点,硬件断点和普通断点(F2下断)是有本质区别的。硬件断点等效与SoftICE命令bpm,他的中断要用到DR0-DR7的调试寄存器,也就是说OD通过这些DR0-DR7的调试寄存器来判断是否断下。

普通断点(F2下断)等效于bpx,他是在所执行的的代码的当前地址的一个字节修改为CC(int3)。当程序运行到int3的时候就会产生一个异常,而这个异常将交给OD处理,把这个异常的regEIP-1以后就正好停在了需要的中断的地方(这个根据系统不同会不一样),同时OD在把上面的int3修改回原来的代码。

而内存断点基本上使用的是对代码使用的保护属性来实现中断。

内存断点分为:内存访问断点,内存写入断点。

我们知道,在程序运行的时候会有3种基本的状态产生:读取,写入,执行。

004AE242  A100104000   moveax,dwordptrds:[004AE24C]      //004AE24C处的内存读取
004AE247  A300104000   movdwordptrds:[004AE24C],eax      //004AE24C处的内存写入
004AE24C  83C001     addeax,1                 //004AE24C处的内存执行

那么我们应该如何中断在上面的几行呢?

1.当我们对004AE24C下内存访问断点的时候,可以中断在004AE242也可以中断在004AE247。

1 2 3 4 5 6  下一页

Tags:脱壳 基础知识 入门

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