和大家分享一下自己的想法,错误之处请指出,话不多说: 学习目的:调试过程中你能够灵活的利用断点,几乎可以事半功倍,断点包括(硬件断点 内存断点,int3断点...) 从原理+实践出发,更好.更深入的了解int3 断点原理 (int3 机器码为 CC) 环境配置 先讲笔者现在的电脑环境吧还是:windows7 旗舰版 安装教程:http://www.cnblogs.com/TK4Moma/p/5392123.html(有疑问的请随时联系笔者) 实验环境:windows xp 虚拟机 (笔者用vmware 12虚拟机软件)
:vc++6.0 此时工具已经完备,下面讲正题: 准备工作: 1.vc++6.0 建工程写c程序:
#include<stdio.h>
int main(void)
{
while(1)
{
printf("Hello World");
} getchar();
return 0;
}
2.在工程目录下找到 可执行文件(即..exe 文件,常说的黑窗口)
3.打开 下载好的工具包 4. 单击OllyDbg吾爱专版 后将 刚才编译的 exe 拖进 ollydbg 就可以啦 5. 此时只需要点击右键-》 查找 -》所有参考文本字符串 ;
6.接下来 单击右键 查找文本-》输入Hello 即可 单击Hello World 即可来到
[url=][/url]
1 0040102D |. 85C0 |test eax,eax 2 0040102F |. 74 0F |je short t.00401040 3 00401031 |. 68 1C204200 |push t.0042201C ; ASCII "Hello World" 点击后 程序停留在此处 4 00401036 |. E8 35000000 |call t.00401070 5 0040103B |. 83C4 04 |add esp,0x4 6 0040103E |.^ EB E8 \jmp short t.00401028 循环跳转 7 00401040 |> 33C0 xor eax,eax 此处下 int3 断点即可 (F2 即可) 8 00401042 |. 5F pop edi ; kernel32.7C817077 9 00401043 |. 5E pop esi ; kernel32.7C81707710 00401044 |. 5B pop ebx ; kernel32.7C81707711 00401045 |. 83C4 40 add esp,0x4012 00401048 |. 3BEC cmp ebp,esp13 0040104A |. E8 A1000000 call t.004010F014 0040104F |. 8BE5 mov esp,ebp15 00401051 |. 5D pop ebp ; kernel32.7C81707716 00401052 \. C3 retn
7. 接下来就是用 LoadPE dump (操作方法,打开无碍破解工具包,单击 PE 工具 找到 吾爱破解专版打开即可) [url=][/url]
8. 找到 相应的进程 (即 ...exe 的进程)然后单击右键完整转存即可
9.将完整转存后的 可执行文件(exe)拖进 olldbg 重复 4 5 6步骤即可,,,找到 ASCII helloworld 此时下断点的地方 可以看出已变成 CC int3 啦 实验完成
知识补充:
1. loadpe dump 原理原帖地址:http://blog.csdn.net/zhangmiaoping23/article/details/9405835 2.转载请标明出处 3.不足之处请大家知无不言,
|