int 3 断点原理

 和大家分享一下自己的想法,错误之处请指出,话不多说:

    学习目的:调试过程中你能够灵活的利用断点,几乎可以事半功倍,断点包括(硬件断点 内存断点,int3断点...)

      从原理+实践出发,更好.更深入的了解int3 断点原理  (int3 机器码为  CC)

        环境配置

              先讲笔者现在的电脑环境吧还是:windows7 旗舰版

              安装教程:http://www.cnblogs.com/TK4Moma/p/5392123.html(有疑问的请随时联系笔者)

              实验环境:windows xp 虚拟机 (笔者用vmware 12虚拟机软件)

                  :工具http:// www.52pojie.cn/forum.php  点击吾爱破解工具包下载即可

                        

 

                    :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 即可来到

 

  

                 
                      

 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.7C817077
10 00401044  |.  5B            pop ebx                                  ;  kernel32.7C817077
11 00401045  |.  83C4 40       add esp,0x40
12 00401048  |.  3BEC          cmp ebp,esp
13 0040104A  |.  E8 A1000000   call t.004010F0
14 0040104F  |.  8BE5          mov esp,ebp
15 00401051  |.  5D            pop ebp                                  ;  kernel32.7C817077
16 00401052  \.  C3            retn

              7. 接下来就是用 LoadPE dump (操作方法,打开无碍破解工具包,单击 PE 工具 找到 吾爱破解专版打开即可)

 

 

             

              

              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.不足之处请大家知无不言,

                

 

 

 

 

 

 

 

 

 

 

      

posted @ 2016-04-20 19:40  TK4Moma  阅读(949)  评论(0编辑  收藏  举报