《加密与解密》 第四版 笔记01

(P.S.学习笔记自己写的,很多内容都从书上记录的,不知道算不算原创。如果不算,欢迎告知...)

第2章 动态分析技术

  1. 动态分析->工具:调试器:
    1. 用户模式:Ring3级,OD、x64dbg、VC++
    2. 内核模式:WinDbg(能调试操作系统内核)
  2. UDD文件:OD的工程文件用于保存但前调试的一些状态
  3. 部分代码含义:
    1. 虚拟地址:一般情况下,同一程序的同一条指令在不同系统环境下此值相同
    2. 机器码:CPU执行的机器代码
    3. 汇编指令:与机器码对应的程序代码
  4. 领空:某一时刻CPU的CS:EIP指向的某段代码的所有者
  5. GetDlgItemText:
    1. 返回值:成功返回文本长度,失败返回0
    2. A、W两个版本
  6. 阅读代码注意:
    1. 清楚API定义
    2. API函数大都采用_stdcall调用约定(参数从右到左入栈,有被调用者清理栈,返回值放入eax)要分析push指令(将参数入栈)
    3. C代码中的子程序采用C调用约定,参数从右到左入栈,由调用者清理栈
  7. 爆破:通过屏蔽程序的某些功能或改变程序流程是保护的方式失效(如修改跳转指令)
  8. DRx调试寄存器:
    1. DR0~DR3:调试地址寄存器
    2. DR4~DR5:保留,未公开具体作用
    3. DR6:调试寄存器组状态寄存器
    4. DR7:调试寄存器组控制寄存器
  9. 常用断点:
    1. INT 3断点:
      1. bp指令或F2
      2. 本质是用INT 3指令替换内容(机器码0xCC,也成CC指令)
      3. 优点:可以设置无数个
      4. 缺点:改变机器码,易被API针对检测
    2. 硬件断点:
      1. 右键->Breakpoint->Hardware,on execution
      2. 原理:使用DR0~DR3设定地址,使用DR7设定状态->最多4个硬件断点
      3. 优点:速度快,在INT 3断点易被发现处效果好
      4. 缺点:对多3个断点
    3. 内存断点:
      1. 右键->Breakpoint->Memory,on access(write)
      2. 原理:对所设的地址予以不可访问/不可写属性,产生异常
      3. P.S.硬件访问/写入断点是在触发硬件断点的下一条指令处;内存断点是在触发断点的指令处
      4. 存在代码检验(0xCC)且硬件断点失灵时,可以使用
    4. 内存访问一次性断点:
      1. Atl+M中显示内存->相应段上右键->Set break-on-access
      2. 中断发生后断点会被删除
      3. 用于捕捉调用或返回某个模块
      4. P.S.此类断点仅在NT架构下可用(Windows的段页式管理)
    5. 消息断点:
      1. 工具栏W ->右键->Messsge breakpoint on ClassProc
      2. 调试时,没有合适的断点,可尝试
      3. 特定窗口函数接收到特定消息时,中断
      4. P.S.与INT 3的区别:INT 3在程序启动前设置,消息断点在窗口被创建后才能被设置并拦截消息
      5. 捕捉断点后在系统代码中,无法使用快捷键(Ctrl/Alt+F9)回到领空->在内存窗口(M)中对.text区块下断(Set break-on-access)->F9消息循环处(->可能不是需要的按钮处理,重复1~2次能达到按钮事件代码处)
    6. 条件断点:
      1. 本质:一个带有条件的INT 3断点
      2. 使用于寄存器、存储器、消息等
    7. 条件记录断点:
      1. 具有条件断点的作用,同时记录断点处函数表达式或参数的值
      2. Logdata窗口记录数据
  10. 其他调试器部分(暂略):x64dbg、MDebug、WinDbg(很强大)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值