1、反汇编与逆向技术1ppt课件课程目录课程目录 一、软件逆向概述二、基础知识三、常用工具四、逆向破解实战五、总结2ppt课件 1.1软件逆向的概念软件逆向概述软件逆向概述可执行文件突破软件限制汇编层分析算法软件源代码3ppt课件软件逆向概述软件逆向概述1.2软件逆向的一般步骤1、研究保护方法,去除保护功能2、反汇编目标软件,定位功能函数3、分析汇编代码4、修改汇编代码或还原高级源代码4ppt课件软件逆向概述软件逆向概述1.3软件逆向的应用软件破解软件汇编级BUG调试病毒分析漏洞分析5ppt课件基础知识基础知识2.2、汇编语言基础知识2.3、可执行文件结构2.5、软件保护(选)2.1、数据结构基础
2、知识2.4、Windows启动与程序装载6ppt课件数据结构基础数据结构基础2.1.1栈的结构7ppt课件数据结构基础数据结构基础2.1.2栈的工作原理8ppt课件汇编基础汇编基础2.2.1汇编语言概述 汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。简单概括:1、汇
3、编语言是机器语言的符号表示,与硬件相关2、个人电脑运行的是基于X86处理器架构的汇编语言3、最终程序的运行都是一条条指令的运行9ppt课件汇编基础汇编基础2.2.2汇编语言与其它语言的转换32位10ppt课件汇编基础汇编基础2.2.3常见汇编指令Add eax,ecx eax寄存器的值加上ecx寄存器的值,结果保存在eax寄存器Sub eax,ecx eax寄存器的值减去ecx寄存器的值,结果保存在eax寄存器cmp eax,ebx eax寄存器的值与ebx寄存器的值比较,如相等z标志置1否则置0Jnz eax Jnz不为0时跳转,即z标志为0时跳转到eax表示的地址处继续执行Call eax
4、 先将下条指令的地址压栈,再跳转到eax表示的地址处执行mov eax,ecx 将ecx寄存器的值保存在eax寄存器中Ret 将当前栈顶的值取出,存放到EIP中,并继续执行正常情况下:call指令一般在子函数调用时使用,ret指令在子函数返回时使用11ppt课件汇编基础汇编基础2.2.4常用寄存器EAX 累加器,在加法、乘法指令中用到的寄存器,或存放函数返回值EBX 基地址寄存器,在内存寻址时存放基地址ECX 计数器,在循环中一般会使用EDX 存放整数除法产生的余数ESI/EDI:源/目标索引寄存器,在很多字符串操作中ESI指向源,EDI指向目标EBP 基址指针,一般用来存放函数的起始地址ES
5、P 始终指向栈顶EIP 存放下条指令的地址12ppt课件汇编基础汇编基础2.2.5一个函数的反汇编代码(Debug版)int add(int low,int high)int sum=0;int i=low;for(i;i Just b=0 x726F6630 字符串为 rof0 =0for c=0 x6E756630 字符串为 nuf0 =0fun因此得到的正确的输入字符串为Just0for0fun11A65ppt课件逆向破解实战逆向破解实战测试结果如下:66ppt课件总结总结 软件逆向是一个熟能生巧的过程,除了学习别人的经验技巧之外,更多的是 需要不断的练习。软件逆向过程是比较枯燥的,必须要有足够的耐心和细心。相对于软件破解,软件功能和算法逆向是更高级逆向技巧的,需要逆向人员有扎实的编程功底,如果希望在逆向领域有更大的进步,提升自己的编程水平是十分必要的67ppt课件