OllyDbg 使用笔记 (一)
參考
书:《加密与解密》
视频:小甲鱼 解密系列 视频
ollydbg下载地址:http://tools.pediy.com/debuggers.htm
hello.exe下载地址:http://pan.baidu.com/s/1c0iYQOC
一、OllyDbg基本界面
图片1
假设按窗体切换button出现以下的情况,乱了,仅仅须要双击一个窗体让它全屏即可了。
图片2
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
二、部分快捷键介绍
F3 : 打开目标文件
F2 : 设置断点
F7:单步步进,遇到CALL跟进
F8:单步步过。遇到CALL路过,不跟进
F9:执行调试程序。直到执行到断点处
F4:执行调试程序,直到执行到光标处
Ctrl+F7/F8 相当于一直按F7/F8
Ctrl+F9 高速跳出函数
Alt+F9 高速跳出系统函数
Ctrl+F2 又一次加载程序
在反汇编面板中
。键:写注解
空格键:改变当前的指令
数据面板中
Ctrl+G:打开地址窗体
空格:编辑数据
三、改动hello.exe 中MessageBox的内容
此程序下载地址见 blog开头。
更改以下这个程序的标题和内容
图片3
在OllyDbg中按F3打开hello.exe
按住F8 直到弹出hello窗体
单步执行到004010E9时会停下来,弹出一个MessageBox窗体。
图片4
在这里下一个断点。
再按Ctrl+F2又一次加载。再按F9执行到断点处。
在F7步进,进入函数中。
我们能够看到
图片5
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
能够看到4个PUSH和一个CALL
四个PUSH就相当于參数。
能够看到右边的注解(OllDbg会依据dll自己主动注解),这事实上是MessageBox的4个參数。因为VC++默认函数是__stdcall 所以參数进栈的顺序是从右往左的。
我们能够看到MessageBox显示的窗体和内容的字符串的地址。
同过改动对应地址的内容就能够改变窗体的内容。
在数据面板 按下Ctrl+G s 输入 00406030
鼠标选中要改的地方,按下空格键输入要修改字符。
图片6
因为是调用MessageBoxA(A代表ASCII),所以在ASCII中输入想要字符,记得要以00结尾。
比如输入 “哈哈!。”
图片7
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
再F8 执行程序,执行到call messagebox处。就能够看到MessageBox中的hello被改成了“哈哈!!
”
这样改动在又一次加载后就会失效。
假设想保存到应用程序
选中改过的部分,右键选择拷贝到可运行程序
图片8
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在弹出的窗体中右键选择 备份-->保存数据到文件就可以
图片9
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">