软件逆向技术

上传人:简****9 文档编号:100655855 上传时间:2019-09-24 格式:PDF 页数:89 大小:2.29MB
返回 下载 相关 举报
软件逆向技术_第1页
第1页 / 共89页
软件逆向技术_第2页
第2页 / 共89页
软件逆向技术_第3页
第3页 / 共89页
软件逆向技术_第4页
第4页 / 共89页
软件逆向技术_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《软件逆向技术》由会员分享,可在线阅读,更多相关《软件逆向技术(89页珍藏版)》请在金锄头文库上搜索。

1、软件逆向技术 课程目录 概述 基础知识 常用工具 案例 总结 概述 软件逆向的概念 设计文档 可执行文件 源代码 绕过软件限制 逆向算法或功能 还原程序源代码 概述 软件逆向的意义 避免重复劳动,提高软件生产的效率和质量 更好的研究和学习先进的软件技术 加深对高级语言的实现机制的了解 概述 软件逆向的应用 软件破解 软件开发 病毒分析 漏洞分析 概述 软件逆向的一般步骤 研究保护方法,去除保护功能 反汇编目标软件,定位功能函数 分析汇编代码 修改汇编代码或还原高级源代码 课程目录 概述 基础知识 常用工具 案例 总结 基础知识 数据结构基础知识 栈的结构 栈的工作原理 汇编基础知识 源代码编译

2、过程 常见的汇编指令 高级语言基础知识 流程控制语句的汇编格式 文件结构基础知识 PE文件结构 系统编程基础知识 Windows消息机制 常见的系统函数 基础知识 数据结构基础知识 栈的结构 栈顶 栈底 内 存 增 长 方 向 Value A Value B 数据结构基础知识 栈的工作原理 基础知识 #include using namespace std; int Sum(int i) return i=1?1:(i+Sum(i-1); void main() coutSum(2)endl; system(“pause“); Main处返回地址 2 1 Sum处返回地址 _tmainCRTS

3、tartu p处返回地址 栈底 内 存 增 长 方 向 栈顶 main Sum Sum 基础知识 110001110100010111111000000000010000000000000000000 000001000101101000101111110001000001111000000000000 10100010010100010111101100 机器代码 int a=1; int b=a+2; 高级代码 mov dword ptr ss:ebp-0x8,0x1 mov eax,dword ptr ss:ebp-0x8 add eax,0x2 mov dword ptr ss:ebp

4、-0x14,eax 汇编代码 基础知识 汇编基础知识 源代码编译过程 编译型语言 编译 链接 机器代码 解释型语言 编译 中间代码 常见的汇编指令 基础知识 栈底 内 存 增 长 方 向 栈顶 CALL 函数 返回地址 DATAADDRMOV MOVREGDATA POP PUSH CALL函数 返回地址 函数参数 基础知识 高级语言基础知识 流程控制语句的汇编格式 高级语言高级语言汇编语言汇编语言 IF(表达式) 语句1; ELSE 语句2; 语句3; 表达式 JXX ELSE 语句1 JMP END ELSE: 语句2 END: 语句3 基础知识 高级语言基础知识 流程控制语句的汇编格式

5、高级语言高级语言汇编语言汇编语言 WHILE(表达式) 语句1; 语句2; BEGIN: 表达式 JXX END 语句1 JMP BEGIN END: 语句2 基础知识 高级语言基础知识 流程控制语句的汇编格式 高级语言高级语言汇编语言汇编语言 DO 语句1; WHILE(表达式) 语句2; BEGIN: 语句1 表达式 JXX BEGIN 语句2 基础知识 PE文件结构 基础知识 PE文件结构 基础知识 PE文件结构 IMAGE_DOS_HEADER STRUCT +0h WORD e_magic/Magic DOS signature MZ(4Dh 5Ah) +3ch DWORD e_lf

6、anew /Offset to start of PE header 指向PE文件头 IMAGE_DOS_HEADER ENDS IMAGE_NT_HEADERS STRUCT +0h DWORD Signature +4h IMAGE_FILE_HEADER FileHeader +18h IMAGE_OPTIONAL_HEADER32 OptionalHeader IMAGE_NT_HEADERS ENDS 基础知识 PE文件结构 typedef struct _IMAGE_OPTIONAL_HEADER /Standard fields. +18h WORD Magic; /标志字, R

7、OM 映像(0107h),普通可执行文件 (010Bh) +1Ch DWORD SizeOfCode;/所有含代码的节的总大小 +20h DWORD SizeOfInitializedData;/所有含已初始化数据的节的总大小 +24h DWORD SizeOfUninitializedData;/所有含未初始化数据的节的大小 +28h DWORD AddressOfEntryPoint;/程序执行入口RVA +2Ch DWORD BaseOfCode;/代码的区块的起始RVA +30h DWORD BaseOfData;/数据的区块的起始RVA 基础知识 PE文件结构 / NT additi

8、onal fields以下是属于NT结构增加的领域。 +34h DWORD ImageBase;/程序的首选装载地址 +38h DWORD SectionAlignment;/内存中的区块的对齐大小 +3Ch DWORD FileAlignment;/文件中的区块的对齐大小 +50h DWORD SizeOfImage;/映像装入内存后的总尺寸 +54h DWORD SizeOfHeaders;/所有头 + 区块表的尺寸大小 +74h DWORD NumberOfRvaAndSizes;/下边数据目录的项数,这个字段 自Windows NT 发布以来一直是16 +78h IMAGE_DATA_

9、DIRECTORY DataDirectoryIMAGE_NUMBEROF_DIRECTORY_ENTRIES; / 数据目录表 IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32; 基础知识 Windows消息循环机制 基础知识 常见的系统函数 高级代码高级代码效果效果 MessageBox(NULL,”Notice”,”N otice”,MB_OK) 课程目录 概述 基础知识 常用工具 案例 总结 常用的工具 Ollydbg Windbg IDA PEiD C32Asm 常用的工具 Ollydbg OLLYDBG是一个新的动态追踪工具,将I

10、DA与SoftICE结合起来的思想, Ring 3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的 调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工 具。 目前最新的版本是2.01版本。 常用的工具 Ollydbg 信息窗口信息窗口 寄寄 存存 器器 窗窗 口口 代码窗口代码窗口 数据窗口数据窗口 堆栈窗口堆栈窗口 常用的工具 Ollydbg基本功能快捷键 F2:设置断点 说明:在一条指令上设置断点,再按一次就取消断点。 F4:执行到当前光标所在的指令 说明:在遇到循环时可以使用F4执行到循环结束后的指令。 F7:单步步入 说明:遇到函数调用就跟入。 F8:单步步过

11、说明:遇到函数调用不跟入。 F9:继续执行 说明:运行程序直到下一个断点处。 常用的工具 WinDbg Windbg是在windows平台下,强大的用户态和内核态调试工具,是 Microsoft公司免费调试器调试集合中的GUI的调试器。 相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的 是它的安装文件大小较小,但是其调试功能,却比VS更为强大。它的 另外一个用途是可以用来分析dump数据。 常用的工具 Windbg 常用的工具 Windbg常用命令 功能功能命令命令说明说明 数据显示 d地址显示内存数据 db地址按字节模式显示 dd地址按双字节模式显示 da按ASC

12、II模式显示 du按Unicode模式显示 ds按字符串模式显示 dt套用已知的数据结构模式显示 断点功能 bl显示所有断点 be断点ID激活断点 bd断点ID禁用断点 bc断点ID清除断点 bp函数名设置断点 常用的工具 Windbg常用命令 功能功能命令命令说明说明 单步调试 t或者F11单步跟进 p或者F10单步跳过 Shift+F11跳出当前函数 执行到指定位置 g地址|函数名持续执行 gh地址|函数名持续执行,遇异常则中断 gn地址|函数名持续执行,忽略异常 数据编辑 e地址数据修改内存地址值 eb地址数据以字节形式写入 ed地址数据以双字节写入 ea地址数据以ASCII字符形式写入

13、 eu地址数据以Unicode字符形式写入 常用的工具 Windbg常用命令 功能功能命令命令说明说明 栈帧的显示 k x列出由栈顶开始的X个栈帧 kb x额外显示3个栈帧的调用参数 寄存器显示r寄存器名显示所有或特定寄存器值 模块显示lm显示程序已载入的所有模块 反汇编功能 u反汇编当前指令后的几条指令 u起始地址从指定地址开始反汇编 u起始终止反汇编指定范围的机器码 常用的工具 IDA Pro 交互式反汇编器专业版(Interactive Disassembler Professional),人们 常称其为IDA Pro,或简称为IDA,是总部位于比利时列日市(Lige)的 Hex-Ray

14、d公司的一款产品。 常用的工具 IDA 分析视图窗口分析视图窗口 函函 数数 窗窗 口口 名称窗口名称窗口导出函数窗口导出函数窗口导入函数窗口导入函数窗口 结构体窗口结构体窗口枚举窗口枚举窗口 常用的工具 IDA基本功能快捷键 快捷键快捷键功能说明功能说明 Enter跟进函数实现,查看标号对应的地址 Esc返回跟进处 A解释光标处的地址为一个字符串的首地址 B十六进制数与二进制数转换 C解释光标处的地址为一条指令 D解释光标处的地址为数据 G快速查找到对应地址 H十六进制数与十进制数转换 常用的工具 IDA基本功能快捷键 快捷键快捷键功能说明功能说明 K将数据解释为栈变量 ;添加注释 M解释为

15、枚举成员 N重新命名 O解释地址为数据段偏移量,用于字符串标号 T解释数据位一个结构体成员 X转换视图到交叉参考模式 Shift+F9添加结构体 常用的工具 PEID PEID是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳 ,其数量已超过470 种PE 文档 的加壳类型和签名。 常用的工具 PEID 常用的工具 PEID扫描模式 正常扫描模式:可在PE文档的入口点扫描所有记录的签名。 正常扫描模式:可在PE文档的入口点扫描所有记录的签名。 核心扫描模式:可完整地扫描整个PE文档,建议将此模式作为最后的 选择。 常用的工具 C32asm C32asm 的确是款非常好用的反汇编程序,具有反汇编模式和十六进 制编辑模式,能跟踪exe文件的断点,也可直接修改软件内部代码。 常用的工具 c32asm 课程目录 概述 基础知识 常用工具 案例 总结 案例 案例1-易吉八字算命软件破解 案例2-游戏插件谁是卧底破解 案例3-屏幕录像专家视频加密破解 案例4-金盾电脑标识绑定破解 案例1 第一个案例的知识点 如何查壳和脱壳 如何根据提示信息来定位程序中对应的处理代码 如何分析注册验证流程 如何修改反汇编代码绕过软件注册功能 案例1 这是一个收费软件,安装后打开文件,首页显示了注册和未注册之间 的差别。 案例1 菜单栏的帮助下拉列表有输入注册码功能 案例1 在输入注册码提示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号