首页 逆向分析技术

逆向分析技术

举报
开通vip

逆向分析技术 逆向分析技术 将可执行程序反汇编,通过分析反汇编代码来理解其代码功能,如各接口的数据结构等,然后用高级 语言重新描述这段代码,逆向分析原软件的思路。这个过程被称做“逆向工程(Reverse Engineering)”,或 者有时只是简单地称作“逆向(Reversing)”。这是一个很重要的技能,需要扎实的编程功底和汇编知识。 逆向分析的首选工具就是 IDA,其中它的一款插件 Hex-Rays Decompiler 能完成许多代码反编译的...

逆向分析技术
逆向 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 技术 将可执行程序反汇编,通过分析反汇编代码来理解其代码功能,如各接口的数据结构等,然后用高级 语言重新描述这段代码,逆向分析原软件的思路。这个过程被称做“逆向工程(Reverse Engineering)”,或 者有时只是简单地称作“逆向(Reversing)”。这是一个很重要的技能,需要扎实的编程功底和汇编知识。 逆向分析的首选工具就是 IDA,其中它的一款插件 Hex-Rays Decompiler 能完成许多代码反编译的工作, 逆向时可以作为一款辅助工具参考。 逆向工程可以让人们了解程序的结构以及程序的逻辑,因此利用逆向工程可以深入洞察程序的运行过 程。一般所谓的“软件破解”只是逆向工程中非常初级的一部分。本节探讨的代码分析技术是基于 IA-32 处理器体系结构的。 „„略„„ 4.7 数学运算符 高级语言中的运算符范围很广,这里只介绍整数的加、减、乘、除运算。编译器如果没优化,这些运 算符很好理解,可以参考相关的汇编书籍。本节主要认识一下经编译器优化过的运算符。 4.7.1 整数的加法和减法 一般情况下,整数的加法和减法编译成 add 和 sub 指令。编译优化时,比较喜欢用 lea 指令来代替 add 和 sub 指令。lea 指令允许用户在一个时钟内完成 c=a+b+78h 计算,其中 a、b 与 c 都是在寄存器的情况下 才有效,会编译成“lea c,[a+b+78]”指令。 加法实例: int main(void) { int a,b; printf("%d",a+b+0x78); return 0; } 用 Microsoft Visual C++ 6.0 编译,设置优化选项为 Maximize Speed。其反汇编代码如下: :00401000 push ecx ;为局部变量分配内存 :00401001 mov eax, dword ptr[esp] :00401005 mov ecx, dword ptr[esp] :00401009 lea edx, dword ptr[ecx+eax+78] ;快速计算 ecx+eax+78之和 第4章 加密与解密(第三版) 72    :0040100D push edx :0040100E push 00407030 :00401013 call 00401020 ;printf函数 :00401018 xor eax, eax :0040101A add esp, 0000000C :0040101D ret 在这句代码中,lea 指令只是一条纯算术指令,它的实际意义等价于“edx= ecx+eax+78”。 4.7.2 整数的乘法 乘法运算符一般编译成 mul、imul 指令。这些指令运行的速度比较慢,编译器会尽可能地提高代码的 效率,从而倾向于使用其他指令来完成同样的计算。如果一个数是 2 的幂,那么会用左移指令 shl 来实现 乘法。另外,加法对于提高 3,5,6,7,9 等数的乘法运算很有用,如:eax*5 可以写成“lea eax, [eax+4*eax]”。 (lea 指令可以实现寄存器乘以 2、4 或 8 的运算。) int main(void) { int a; printf("%d %d %d", a*11+4,a*9,a*2); return 0; } 用 Microsoft Visual C++ 6.0 编译,设置优化选项为 Maximize Speed。其反汇编代码如下: :00401000 push ecx ;为局部变量 a分配内存 :00401001 mov eax, dword ptr [esp] :00401005 lea ecx, dword ptr [eax+eax] ;即 a*2 :00401008 lea edx, dword ptr [eax+8*eax] ;edx=a+8*a=9*a :0040100B push ecx :0040100C lea ecx, dword ptr [eax+4*eax] ;ecx=a+4*a=5*a :0040100F push edx :00401010 lea edx, dword ptr [eax+2*ecx+4] ;edx=a+2*ecx+4=11*a+4 :00401014 push edx :00401015 push 00407030 :0040101A call 00401030 ;printf函数 :0040101F xor eax, eax :00401021 add esp, 00000014 :00401024 ret
本文档为【逆向分析技术】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_945698
暂无简介~
格式:pdf
大小:272KB
软件:PDF阅读器
页数:2
分类:互联网
上传时间:2011-11-29
浏览量:34