马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 零度非安全 于 2017-6-12 18:49 编辑
本系列开发环境
操作系统:xp
开发环境:vc++6.0
涉及工具:吾爱 OD 调试器
需要条件:OD 工具的使用,一定的 C/C++ 基础以及汇编知识,熟悉 windows SDK 基本 API 函数
关于操作系统,因本人现在的电脑装了个纯 Linux 操作系统,为了学习汇编逆向,我就在 VisualBox 下装了个 XP 系统,装
个 XP系统相信难不倒你们吧,我自个儿认为 XP 是 Windows 家族中我看着心里挺舒服的一个系统,因为“插屁”嘛 ^_^
让大家看下我的“插屁”系统
送给你们几句话!!!
兴趣是我们最好的老师
兴趣 + 时间 + 坚持 = 成功
成长需要过程,忽在浮少筑高台
本帖涉及的知识点:
1. OD调试器(全称 Ollydbg)
OD 是一个新的动态追踪工具,将 IDA 与 SoftICE 结合起来的思想,Ring 3 级调试器,非常容易上手,己代替 SoftICE 成为
当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。
以上是百度百科给出的解释,更多信息请萌萌地点我 -----> OLLYDBG 百度百科
1.1 调式方式
1. 用调试器直接打开
2. 附加到已经打开的进程
2. 断点
1. 快捷键:F2(int3)断点
机器码 0xcc,有的也叫 CC 断点,这是最常用的断点
2. 下断点
方法一:直接在选中的行上按下 F2 这样就在当前行指令所在地址下一个 int 3 断点
方法二: bp 指令地址(如果地址是一条指令的中间,那么会出错)需要 CmdBar 这个 OD 插件
3. 给 MessageBoxW 函数下断:#include <stdio.h>
#include <windows.h>
int a = 1;
int main(void){
MessageBoxW(0,NULL,NULL,MB_OK);
a = 0x889977;
MessageBoxW(0,NULL,NULL,MB_OK);
return 0;
}
用 vc++6.0 对上面这段代码编译、链接成 exe 文件,再将其拖入到 OD 中,Ctrl + G 调出跟踪表达式,输入 MessageBoxW
这个是我已编译好了的 exe 文件 ------>
00_MOV_0.rar
(26.98 KB, 下载次数: 2)
在 内存地址处 77D66534 处下个断点
Ctrl + F2 重新载入,F9 来到断点处,在右下角 CALL 处右键点反汇编窗口跟随
在里面处,我们很清楚地发现很熟悉的东西,那就是 MessageBoxW 函数
两个 MessageBoxW 函数之间那个十六进制数 0x889977 就是我们上面那个在 a = 0x889977; 这条语句
3. 全局变量赋值的汇编形式
我们把 OD 中 0x889977 所对应的 mov dword ptr ds:[0x424A30],0x889977 复制到 VC 中作下比较
由这可知,a = 0x889977 这条对全局变量赋值语句对应汇编中的 mov dword ptr ds:[0x424A30],0x889977
本节笔记完
下一个笔记:汇编逆向01——MOV赋值指令与内联汇编 |