作为一款流行的动态,OD 的成功离不开断点。可以说,断点成就了 OD,不难想象,如

果在调试过程中,下的断点全部失效了,那么 OD 就武功全废了。在前面的文章里,我曾介

绍 OD有三大断点:int3断点、硬件断点和内存断点。关于前面两种断点,我已经写过检测

方法,今天就来分析一下,内存断点的检测方法。

要检测,首先,我们要了解内存断点的原理。知己知彼才能百战百胜,所以,我们还是

从逆向 OD着手。OD通过调用 Setmembreakpoint函数来下内存断点,反汇编代码如下:

004192D8 >/$  55            push    ebp

004192D9  |.  8BEC          mov     ebp, esp

004192DB  |.  53            push    ebx

004192DC  |.  56            push    esi

004192DD  |.  57            push    edi

004192DE  |.  833D 38814D00>cmp     dword ptr [4D8138], 0

004192E5  |.  8B7D 10       mov     edi, dword ptr [ebp+1>

004192E8  |.  8B75 0C       mov     esi, dword ptr [ebp+C>

004192EB  |.  8B5D 08       mov     ebx, dword ptr [ebp+8>

004192EE  |.  0F85 99000000 jnz     0041938D              ;  0041938D

004192F4  |.  833D D8364D00>cmp     dword ptr [4D36D8], 2

004192FB  |.  0F84 8C000000 je      0041938D              ;  0041938D

00419301  |.  56            push    esi

00419302   |.  E8 41870400   call    00461A48              ;

_Findmemory

00419307  |.  59            pop     ecx

00419308  |.  81FE 00000080 cmp     esi, 80000000

0041930E  |.  72 24         jb      short 00419334        ;  00419334

00419310  |.  6A 14         push    14                    ; /Style =

MB_YESNO|MB_ICONHAND|MB_APPLMODAL

00419312  |.  68 CA224B00   push    4B22CA                ; |Title =

"Memory breakpoint in system area"

00419317  |.  68 2E224B00   push    4B222E                ; |Text = "You

are going to set memory breakpoint in system area. This breakpoint may freeze

Windows or cause system crash. Do you really want to set this breakpoint?"

...

函数比较长,只截取一部分,可以看出,函数首先是判断内存断点的位置,如果是系统

空间、资源段以及栈空间,则会弹出错误提示框。接着还做了些工作,例如填写了一个内存

断点的结构体,限于篇幅,就不一一展开分析了,下面我们直接来看设置内存断点最关键的

操作:

0041940E  |> \833D 5C5A4D00>cmp     dword ptr [4D5A5C], 3

00419415  |.  75 05         jnz     short

0041941C                            ;  0041941C

00419417  |.  E8 18FCFFFF   call

00419034                                  ;  00419034

0041940E  |> \833D 5C5A4D00>cmp     dword ptr [4D5A5C], 3

od结构体大小_od内存断点的探析和检测方法相关推荐

  1. C++_类和结构体所占内存大小,静态成员问题

    C++_类和结构体所占内存大小,静态成员问题 静态成员未初始化或者未调用(当然静态成员必须类外初始化才能调用)是不占内存的.静态成员不占类或结构体的内存 静态成员函数同样只声明未定义同样不占内存 指针 ...

  2. C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?

    C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题? 问题1:结构体指针最开始怎么分配内存?用sizeof()是不能确定大小的. 问题2:给结构体变量分配之后,是否还要 ...

  3. C语言 计算结构体大小

    本文主要参考:结构体内存对齐(如何计算结构体的大小) 前言 数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素的个数. 结构体中的成员可以是不同的数据类型, ...

  4. 内存对齐 | 原来字段顺序还能影响结构体占用的内存空间

    大家好啊,不知道看了网管在上周的文章Go指针的使用限制和unsafe.Pointer突破之路,你们有没有感觉Golang 比之前想的还好用呢?确实能直接读写内存,很多以前觉得无能为力的事情就不再是问题 ...

  5. 位结构体+大小端模式

    位结构体+大小端模式 位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构比按位运算符更加方便   位结构定义的一般形式为:  struct  位结构名{  数据类型 [变量名]: ...

  6. 结构体与动态内存(5.11)

    结构体与动态内存: 一.结构体 <1>结构体简介 特点:构造类型,可以构造出任何程序员想要的类型. 思考:如何定义一个结构体 struct 结构体名 {数据类型 成员变量名:数据类型 成员 ...

  7. 使用sizeof()计算结构体大小

    下面代码的输出结果是: #include <iostream> using namespace std; #pragma pack(4) struct T{ char a; short b ...

  8. C语言的sizeof运算符计算结构体大小

    C语言的sizeof运算符运算规则 sizeof运算符 **sizeof 是一个运算符,不是函数(方法).** 例子: 当想打印一个变量的存储区域大小时,可以直接写 int a = 5; printf ...

  9. 结构体大小,你真的知道吗?

    结构体大小,你真的知道吗? 编译环境:vs2019 结构体,顾名思义是一个包含多种类型的体块.在使用结构体时,我们定义一些变量让我们更容易得到想要的结果,比如 : struct Stu {char n ...

最新文章

  1. Too many levels of symbolic links
  2. 反射型 DDoS 攻击的原理和防范措施
  3. 数据结构--队列(数组)的一种实现
  4. mybais传入多个参数的方法
  5. 服务器磁盘状态,宝塔面板:服务器状态“磁盘100%”标红 解决方法
  6. socket io 不使用redis_Redis这么快,线程模型竟然是单线程
  7. ds排序--希尔排序_图解直接插入排序和希尔排序
  8. 图像处理------泛洪填充算法(Flood Fill Algorithm) 油漆桶功能
  9. Python 之 解析xml
  10. MFC对话框/控件下属性中的事件变成空白?
  11. 【已解决】ModuleNotFoundError: No module named ‘snmp_cmds‘ 缺少snmp-cmds包
  12. 一生不可错过的世界50大美景[组图]
  13. JavaScript画星星
  14. VOLTE注册失败案例
  15. 2000、XP、2003所有注册表设置
  16. 小蜜蜂(裴波那契的应用)
  17. 使用带有 Moveit 的深度相机来避免碰撞
  18. 如何创建自己的云盘-私有云盘
  19. 羊了个羊游戏系统开发详情及功能
  20. Deep Learning and the Information Bottleneck Principle 深度学习与信息瓶颈原理

热门文章

  1. LeetCode简单题之Excel 表中某个范围内的单元格
  2. NVIDIA DGX SUPERPOD 企业解决方案
  3. AIoT 2020 年分析
  4. 人脸标记检测:ICCV2019论文解析
  5. 2021年大数据ZooKeeper(五):ZooKeeper Java API操作
  6. FastAdmin扩展PHPEXCEL,PHP7.3高版本兼容问题
  7. Gradle dependency cache may be corrupt
  8. Android编程:解决异常“android.view.InflateException: Binary XML file line # : Error inflating class”
  9. Python3-Cookbook总结 - 第一章:数据结构和算法
  10. 怎么理解ASM中的Failgroup