当前位置: 首页 > 工具软件 > OllyDbg > 使用案例 >

OllyDbg简价

祝叶五
2023-12-01

OllyDbg简价

 OD窗口 分为4部分

 1、反汇编窗口

 2、寄存器窗口

 3、数据窗口

 4、堆栈窗口

 

 Alt+B:断点窗口

 F7: 单步步入 F8:单步步过

 ctrl+f9: 执行到返回

 数据窗口

 

 DU 地址   使用 UNICODE 格式转储  (统一的字符编码标准,采用双字节对字符进行编码)

 DC 地址   使用 ASCII 格式转储 ASCII 码的字符集

 DB 地址   十六进制 byte 格式转储  显示Byte格式

 DD 地址   使用堆栈格式转储 显示DWORD格式 4Byte

 DA 地址   转储为反汇编 显示反汇编代码

 表达式    计算

 DD [[[[95E800+1c]+24]+8a4]+0C]+0*4  物品对象

 DU[[[[[[95E800+1c]+24]+8a4]+0C]+0*4]+68]+0C 物品名字

 

 接下来我们用 OD与CE来找一下对象血值,血值上限

 注意 血值地址每次都会变化,实践时记得重新用CE找过

 dd 04F7398C 血值

 dd 04F7398C+4  魔力值

 dd 04F7398C+18 血值上限

 dd 04F7398C+1C 魔力值上限

 

// 角色对象 血值,魔力偏移

 对象+3C  X坐标

 对象+40  h坐标

 对象+44  Y坐标

 对象+25C 当前血值

 对象+260 当前魔力值

 对象+274 血值上限

 对象+278 魔力值上限

 

 

游戏的基址:游戏的基址其实就是类实例对象指针指向的地址;这个地址只要游戏不更新就是固定的,是一个常量;

       在这里我举个例子

        比如有个游戏类定义如下:

                 type

                  GameObj=class

                  Blood:  integer;//血值

                  Magic:  integer;//魔力值

                  BloodMax: integer;//血值上限

                  MagicMax:integer;//魔力值上限

                  x       :single; //X坐标float

                  h       :single; //h坐标

                  y       :single; //Y坐标 

                  grade   :integer;//等级                  

                end;

          var

            role:GameObj;

  44D999:

  Ctrl+G :  转到44D999:

  dd [450bd4]+4 :血值

  dd [450bd4]+8 :魔力值

  dd [450bd4]+C :血值上限

  dd [450bd4]+10:魔力值上限

  dd [450bd4]+14: X坐标

  dd[450bd4]+18:H坐标

 dd [450bd4]+1C:Y坐标

 类似资料: