zoukankan      html  css  js  c++  java
  • 逆向学习之路 -- 《加密与解密》读书笔记 -- 调试篇

    动态分析技术

    用户模式: 调试用户模式应用程序的调试器,工作在Ring 3级,eg. OllyDbg、x64dbg、Visual C++  etc.

    内核模式: 能调试操作系统内核的调试器,eg. WinDbg

    OllDbg 调试器(简称“OD”) 是由 Yuschuk(www.ollydbg.de)编写

     按F3 打开一个EXE文件

    C 默认当前窗口是CPU窗口; 

    包含5个面板窗口,分别是:

    1. 反汇编面板(Disassembler window)显示被调试程序的代码,有4列,分别是(Address)、十六进制的机器码(Hex dump)、反汇编代码(Disassembly)和注释(Comment).在最后一列注释中显示了相关API参数或运行简表。

    2. 信息面板(Information window) 将显示与指令相关的各寄存器的值、API函数调用提示和跳转提示等信息。

    3. 数据面板(Dump window) 以十六进制和字符方式显示文件在内中的数据。要显示指定内存地址的数据,可单击右键快捷菜单中"Go to expression"命令或按“Ctrl+G”快捷键,打开地址窗口,输入地址。

      

    4. 寄存器面板(Registers window) 显示CPU各寄存器的值,支持浮点、MMX和3DNow!寄存器。可以单击右键或窗口标题来切换显示寄存器的方式。

      

    5. 栈面板(Stack window) 显示栈的内容,既ESP执行地址的内容。讲数据放入栈的操作称为入栈(push),从栈中取出数据的操作称为出栈(pop)。栈窗口非常重要,各API函数和子程序都利用它传递信息和变量等。

    加载目标文件进行调试

    选项-调试选项-事件修改为“WinMain"

    “F3” 载入文件

    寄存器面板显示的值

    EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI和EIP,他们统称为32位寄存器

    ESP为栈指针,指向栈顶,右下角的栈面板上显示了栈的值

    EIP 指向当前将要执行的指令,按一下“F7”讲执行下一条命令

    PS: “F7” 建 和“F8”键的主要区别在于,遇到callloop等指令,按“F8”键会路过,按“F7”键会跟进。这里我理解的是F7是仔细读取,看到Call指令深入细读取。F8是粗略读取,不会对Call指令进行深挖。

     ctrl + * 可以设定 EIP指针点(此处为新EIP)按F7后将从新的指针EIP位置继续往下执行

    - (减号键) 或者 esc  回看之前但不跟踪代码

    需要连续按“F7”和“F8” 可以使用 Ctrl + "F7" , Ctrl + "F8"  (需要按ESC或者 F12才能中止或者遇到其他断点时停止)

    ctrl + “F9”  会在遇到的第一个返回命令处(ret、retf或iret),如果此时按"F7"将会跳过整段代码回到Call之前的下一行

    e.g  比如从 004013FA  语句按“F7”,因为有call就会进入子程序

    # 先按ctrl + * 指定EIP 为004013FA ,然后接着按“F7”,就会进入子程序

     

    # 按 Ctrl + F9

     

     如果,在按F7将脱离 这部分的读取,并跳出刚进入的call里面。注意这里的Ctrl + F9 遇到ret指令是暂停还是路过,可以设置,如下:

    ctrl + F2 重新载入程序

    F2,设置断点后用Alt+B 查看设置的断点明细

     

    P23

  • 相关阅读:
    IXmlSerializable With WCFData Transfer in Service Contracts
    Difference Between XmlSerialization and BinarySerialization
    Using XmlSerializer (using Attributes like XmlElement , XmlAttribute etc ) Data Transfer in Service Contracts
    Introducing XML Serialization
    Version Tolerant Serialization
    Which binding is bestWCF Bindings
    Data Transfer in Service Contracts
    DataContract KnownTypeData Transfer in Service Contracts
    Using the Message ClassData Transfer in Service Contracts
    DataContract POCO SupportData Transfer in Service Contracts
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/13606286.html
Copyright © 2011-2022 走看看