逆向工程有什么用
- 破解
- 反外挂
- 病毒分析
二进制审计
代码保护趋势
从加壳到虚拟机技术
虚拟机技术
加大代码可读性难度
mov eax,1
会改成
mov eax,5
sbb eax
sbb eax
sbb eax
sbb eax
常见虚拟机:VMProtect,Themida,SE
常用工具
- Ollydbg
IDA Pro
Ollydbg 断点
IAT3
- 硬件断点
- 内存断点
- 消息断点
- 条件断点
- 条件记录断点
IAT3断点
F2断点,添加了普通的断点,将该指令的第一个字节改为cc,用于让CPU暂停中断。
硬件断点
比较寄存器的值
寄存器DR0到DR3可以设置硬件断点
优点是速度快,不会改变源码
缺点是只有四个寄存器可以使用
内存断点
在代码节下断点(.text)可以快速回到内存段
消息断点
基于消息事件
比如在按钮上下断点
条件断点
当寄存器中数据符合某条件的时候产生中断
条件记录断点
条件日志中设置断点
IDA Pro
逆向工程从何开始
指令,一切代码终归为指令序列
例如一个C函数都做了什么。
- stdcall调用约定(子调用函数处理堆栈)
- c调用约定 (父调用函数处理堆栈)
- ret
OD使用
alt+e 查看程序调用了什么库
查看在系统空间还是用户空间,看标题,module 后面是否文件名,是就是用户空间
just-in-time debugger 实时调试器,一个程序崩溃前,可以调用OD暂停在崩溃的代码前(调试IIS漏洞)