zoukankan      html  css  js  c++  java
  • OD学习笔记1

    1.在反汇编面板窗口,Hex dump列:设置或取消无条件断点,对应快捷键是F2键
    2.Comment:增加或编辑注释,对应的快捷键是;键,在反汇编面板窗口按下会出现如下图:


    3.OD有界面选项(Appearance)和调试选项(Debugging options)等,这些选项配置都保存在ollydbg.ini文件中.
    4.UDD用来保存当前调试的一些状态,如断点,注释,以便下次调试时继续使用.
    5.od可以通过两种方式加载目标程序调试,一种是通过createprocess创建进程 另一种是利用DebugActioveProcess函数将调试器捆绑在一个正在进行的进程上.

    6.F7单步调试,遇到CALL/LOOP跟进,F8不会跟进,

      CTRL+F9直到出现RET指定时中断

      ALT+F9若进入系统领空,此命令可瞬间回到应用程序领空

      F9运行程序.

    7.CTRL+F9遇到RET指令是暂停还是步过,可以在选项里设置,方法是:选项-调试设置-调试-执行到RET后,单步步过RET

    如下图:

    8.断点分类:

    (1).INT3断点:下此断点时,地址处的内容被调试器用INT3指令(机器码是CCh)替换,当然,如果自己写调试器,也可用其他一些指令来代替INT3来触发异常

    INT3断点好处是可以设置无数个断点,缺点是改变了原程序的指令,容易被软件检测到,例如为了防范API被下断,一些软件会检测API的首地址是否为CCh,

    (2).硬件断点和DRx调试寄存器有关,原理是使用4个调试寄存器(DR0,DR1,DR2,DR3)来设定地址,以及DR7设定状态,因此最多只能设置4个断点

    设定方法是在指定的代码行单击鼠标右键,执行

    删除硬件断点有些麻烦,单击菜单Debug/Hardware breakpoints(调试/硬件断点):

    F4可以执行到光标所在的行,也是利用调试寄存器原理,中断后自动删除,相当于一次性硬件断点.

    硬件断点的好处是速度快,在INT3断点容易被发现的地方,使用硬件断点代替会有很好的效果,缺点是最多使用四个断点.

    (3).OllyDbg可以设置内存访问断点或内存写入断点,原理是对所设的地址设为不可访问/不可写属必,这样当访问/写入时就会产生异常,OD截获异常后比较异常地址是不是断点地址,如果是就中断,让用户继续进行操作.

    内存断点的设置和删除都是在鼠标右键菜单中:我们在前面设置硬件断点的菜单中就能看到。

    和F4设置一次性硬件断点一样,内存断点同样存一次性断点,
    Alt+M显示内存,可以看到很多段,每个段都有不可访问\读\写\执行属性,在相应段上单击右键,会发现一个命令Set break-on-access(在访问上设置断点),其快捷捷是F2键,这个断点是一次性断点,当所在段被读取或执行时就中断,注意不是Set memory breakpoint  on access(它不是一次性断点):

    9.如想要快速回到当前CPU所在的指令上,可以双击寄存器面板上的EIP即可

     10.如想修改EIP,把光标移到所需要的地址上,然后执行右键菜单"New origin here"(此处新建EIP),其他寄存器双击就可以修改

    11.比如call 401496,401496对应amsg_exit函数, 光标停在401496,Shift+;键,出来一个标签框,输入字符"amsg_exit",所有调用401496的call都变成call<amsg_exit>形式.

    12.用鼠标点击寄存器窗口header,切换不到Debug register,只能通过鼠标右键. 

  • 相关阅读:
    安卓客户端获取手机号码
    安卓自定义控件之设计自己的提示dialog
    一步步打造自己的分页控件4
    C#winform小游戏之贪吃蛇重温C#
    android观察者模式
    Android开发之Java设计模式
    Android 用Animationlist实现逐帧动画
    图片压缩
    Android使用缓存优化ListView
    Android命令行启动程序正确使用技巧解析
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693711.html
Copyright © 2011-2022 走看看