逆向工程入门
第一章、逆向工程概述
1.1 概述
逆向工程概述:一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素, 以制作出功能相近,但又不完全一样的产品。
软件逆向工程是逆向工程在软件方面的应用,通过多种计算机技 术的运用来实现对软件算法、流程、结构、代码的 逆向拆解和分析,从而达到破解软件或扩展软件功能的目的。
逆向工程设计多课程,需要一边分析程序一边补充知识
常见的分析工具有IDA、OllyDbg(OD)、WinDbg等,这些都是分析程序的利器。 IDA是静态分析(不运行软件)工具,OD和WinDbg是动态分析工具。
很多软件都有壳,往往会利用PE文件结构结合加密算法对自己进行保护
学习论坛:看雪论坛、吾爱破解
动态分析:恶意程序的运行有时会给分析机器和网络带来危险, 因此往往搭建虚拟机或沙箱进行动态分析 Norman沙箱、GFI沙箱、Comodo沙箱是常见的沙箱工具
工具介绍
1.2 IDA Pro使用
用着用着就熟了,不多介绍
- 主面板为函数窗口,反汇编窗口
- F5转换汇编代码为伪代码模式
- Tab:伪代码和汇编代码之间进行切换
- 翻页:上方的回退和前进符号
- Esc:退到之前的状态
- 添注释:右键(汇编代码注释),/伪代码注释
- 跳转:要跳转到某个地址或某个函数时,按G并输入要跳转的地址或函数名称,可以直接实现跳转
- 按空格键能够 在这两种模式之间切换
- N键, 即可对函数和变量重命名
- X键, 就会出现所有关于该变量交叉引用列表。查看函数 的交叉引用时进行同样的操作即可
- Y键,在弹出的窗口处输入新的变量类型
- Shift+F12可以将程序中所有的字符串列出来
- Alt+T可以搜索某个特定的字符串
- 如果确信某段十六进制数据是一段指令,那么可以 按下快捷键C,它能将一段十六进制数据解释为汇 编指令。
- 快捷键P能够将一段代码定义为函数,并且定义的 函数会在函数窗口中显示出来。
- 快捷键U即可取消定义,并将指令或函数以十六进制的数据来显示。
- 如果确信某段十六进制数据是字符串,快捷键A可 以将该十六进制数据转换为字符串。如果要取消转换,按下快捷键U即可
- 快捷键H即可实现进制转换。
- IDA会跟踪函数内每一条指令上的栈指针的变化。 如果IDA无法确定一条指令是否更改了栈指针,就需要手动调整栈指针了,否则IDA会为函数剩余部分提供一个错误的栈指针。 修改堆栈平衡的快捷键为Alt+K,打开窗口后会显示当前指令处栈顶指针ESP的值, 并且可以对当前指令对栈的改变量进行修改。
ida快捷键 | 功能 |
---|---|
F7 | 单步步进 |
F8 | 单步步过 |
F9 | 继续运行程序 |
F4 | 运行到光标所在行 |
Ctrl + F7 | 直到该函数返回时才停止 |
Ctrl + F2 | 终止一个正在运行的进程 |
F2 | 设置断点 |
1.3 OllDbg
反汇编面板、寄存器面板、堆栈面板、数据面板、信息面板。
寄存器面板窗口:寄存器的值发生变化时颜色会变为红色
信息面板窗口 – 在调试跟踪时,该窗口显示与指令相关的寄存器值、 API函数调用提示和跳转提示等信息
**INT3断点:**INT3指令的机器码为CC,所以通常也称之为CC指令。 当被调试进程执行INT3指令导致一个异常时,调试 器就会捕捉这个异常从而停在断点处,然后将断点 处的指令恢复成原来的指令。
用INT3断点的好处是可以设置无数个断点,缺点是 改变了原程序指令,容易被软件检测到。
INT3指令是专门用来支持调试的一条指令,它对应的机器码是0xCC。当cpu执行到这条指令是会产生异常并调用相应的异常处理程序
硬件断点:
由硬件提供给我们的调试寄存器组,可以对这些硬 件寄存器设置相应的值,然后让硬件帮我们断在需 要下断点的地址。
- 硬件断点是CPU提供的功能,Intel 80386以上的CPU 提供了调试寄存器以用于软件调试。
- 从Intel CPU中,DRx调试寄存器总共有8个,从DRx0 到DRx7。其中,DR0~DR3是调试地址寄存器,保存设置的硬件断点。
硬件断点的设置只需鼠标右键并依次点击: Breakpoin即可。取消断点的操作则需依次点击:Debug->Hardware breakpoints,然后在弹出的窗口中删除硬件断点(或者BreakpointRemove Hardware breakpoints )
硬件断点优点是速度快,在INT3断点容易被发现的地方,使用硬件断点来代替会有很好的效果,缺点就是最多只能设置 4个断点
内存断点 – 修改内存访问属性来触发内存访问错误而设置的断点称为内存断点。
设置内存断点只需鼠标右键并依次点击: Breakpoint->Memory, on access/Memory, on write
在OD中按下快捷键Ctrl+G可以直接跳转到对应的地址处。
如果要查看某个地址的数据,那么点击一下数据窗口,然后按下快捷键便可跳转到对应地址。
同理,如果要查看汇编代码或是堆栈数据,采取同 样的操作即可。
标签:逆向,跳转,快捷键,入门篇,指令,概述,寄存器,断点 From: https://blog.csdn.net/LH1013886337/article/details/143305321