Crack工具
Ollydbg
快捷键
- F7-单步调试,如果遇到函数调用,会进入函数主体。shift+F7-单步调试,但是遇到中断,调试器会尝试进入被调试程序指定的异常处理。Ctrl+F7-自动步入,断点,异常会停下来,ESC可退出
- F8-单步调试,遇到调用会一次执行完这个函数,shift和Ctrl和F7一样
- F4-运行到选定位置,也就是运行到光标所在的位置。
- Ctrl+F9-运行到return返回。
- Alt+F9-执行到用户代码,也就是程序领空。
- F9-让程序继续执行,shift和Ctrl和F7一样,alt+F9-执行直到返回用户代码段
- Ctrl+F11-Run跟踪步入
- F12 - 停止程序执行,同时暂停被调试程序的所有线程。
- Ctrl+F12 - Run跟踪步过,一条一条执行命令,但是不进入子函数调用,并把寄存器的信息加入到Run跟踪的存储数据中。Run跟踪不会同步更新CPU窗口。
- Alt+B - 显示断点窗口。在这个窗口中,可以编辑、删除、或跟进到断点处。
- Alt+C - 显示CPU窗口。
- Alt+E - 显示模块列表[list of modules]。
- Alt+K - 显示调用栈[Call stack]窗口。
- Alt+L - 显示日志窗口。
- Alt+M - 显示内存窗口。
- Alt+O - 显示选项对话框[Options dialog]
- Ctrl+P - 显示补丁窗口。
- Ctrl+T - 打开Run跟踪 对话框
- Alt+X - 关闭 OllyDbg。
- Ctrl+E -以二进制(十六进制)格式编辑所选内容。
- Ctrl+F -开始命令搜索。
- Ctrl+G -转到某地址。
- Ctrl+K - 查看与当前函数相关的调用树[Call tree]。在用这个功能之前,必须使用分析代码功能。
- Ctrl+L - 搜索下一个,重复上一次的搜索内容。
- Ctrl+N - 打开当前模块的名称(标签)列表。
- Ctrl+O - 扫描object文件。扫描Object文件。该命令会显示扫描Object文件对话框,您可以在该对话框中选择Object文件或者lib文件,并扫描这个文件,试图找到在实际代码段中用到的目标模块。
- Ctrl+S -命令搜索。
- 分号是注释
IDA
- 快捷键
- j(jump)表示跳转
- o(offset)便是偏移值
- p(procedure)表示子程序,回车或双击可跳
- 字符上按X可以打开交叉参考窗口
- M键为重命名,alt+M标记当前位置,Ctrl+M跳到标记位置,选择要跳的位置双击就过去了
- U让所有代码以数据的形式显示出来,C重新分析代码
F12会出现函数执行的流程图
,按空格可以相互之间转化- Alt+T查找字符串
- XREF:交叉引用
-
- 碰到地址的时候右键选择H,就会显示在这个栈帧中实际的位置,十六进制的,双击变量,变量会调到详细的视图
-
- 图形视图
- 蓝色,顺序执行
- 绿色,条件执行(YES)
- 红色,条件执行(NO)
- 文本视图
- 箭头实线表示非条件跳转,虚线表示条件跳转
- 向下箭头加上jump表示跳转
- IDC作为IDA的一个重要组成,是一种嵌入式语言,一些反汇编的任务需要IDC的协助,如对代码进行加密程序,可以用IDC先写一段解密代码,在解密后反汇编就可以得到正确的反汇编结果
- IDA另一个重要特征是库文件的快速识别与鉴定。
- 四种区段:
- .text:代码段
- .data:数据段
- .rdata:只读数据段
- .bss:未初始化数据段
这里给出一个比较好的学习网址:https://blog.csdn.net/fishmai/article/details/52398376
汇编相关
寄存器
- EBP是存取某个时刻的栈顶指针,ESP是一直指向栈顶的指针,以方便对栈的操作
汇编指令
- sete指令,cmp eax,ecx sete cl,如果eax=ecx,那么cl为1,否则为0 ,最清楚的解释是,sete指令是当zf=1时,将cl置1,否则置0
- movzx,高位全用0填充
- movsx,32位,低16位的第一位为1则高16位全用1填充,为0则用0填充
- JBE,前者小于等于后者跳转
杂项知识点
- PE—Portable Executable可执行文件
- 很多工具在反汇编的时候可能无法正确区分数据和代码,有些程序就是用这个来对抗静态反汇编