导航:首页 > 源码编译 > 反汇编文件分析算法

反汇编文件分析算法

发布时间:2023-03-08 20:07:58

❶ 什么是反汇编

简单的说
就是通过读取并翻译一个可执行文件的二进制码
将这个可执行文件还原成汇编语言代码

可执行文件从源代码编译过来,已经面目全非了
在没有源代码的情况下想调试一个程序或者探究程序中的一些东西
就需要反汇编
由于可执行程序的内容是供CPU执行的二进制代码
而汇编语言又是和机器码一一对应的
所以直接把可执行程序反编译成汇编代码是很有效的一种调试和分析方法。

❷ dll文件如何反汇编成源码,C++语言编写

DLL 属于可执行文件中的一类,又称为动态链接库,不能直接用DEBUG加载,一般由应用程序因使用该库中的函数,而由操作系统在应用程序加载的同时被加载入特定地址,这个地址一般是DLL在链接时指定的。当DLL被加载到运行空间,根据输出函数表,可以得到各个函数的入口地址,然后用DEBUG在各个入口下断点,调用该函数时DEBUG将跟踪进入该函数,从而实现反汇编。
反汇编属于逆向工程,逆向工程的主要手段有两大类,其中一类是动态分析,另一类是静态分析。
前面提到的方法属于动态分析,由DEBUG实现反汇编,该方法不容易得到完整的代码,一般只能形成一段一段独立分散的代码,同时由于DEBUG的局限性,反汇编的代码质量多不高,生成的代码不能直接使用,原因在于DLL在加载时若没有加载到指定地址空间,操作系统将对代码进行重定向,所以DEBUG只能得到重定向后的代码,这类代码必须修改每一个重定向点,才能形成可执行代码。作为WINDOWS32位操作系统, OLLYDBG是最为优秀的调试、跟踪、反汇编工具,多窗口运行,可以方便的通过窗口操作完成各类动作,而不需要像一般DEBUG那样由命令行来完成,OLLYDBG还有许多一般调试器不具备的功能,同时由于每一代高手不断的修改,使其具有多种功能,同时带来的就是混乱,谁也不知道有多少版本,谁也不清楚每个版本到底增加了什么功能,但就这样,也是瑕不掩疵, OLLYDBG任然是DEBUG中最强大,最好使用的。
静态分析和动态分析不同,静态分析直接打开原程序,加载而不运行,然后直接分析加载的代码。目前静态分析工具,最强大的当属IDA,IDA支持几乎所有种类的汇编语言。
IDA加载应用程序有许多选项,可以选择完整的加载整个程序,也可以选择加载程序的某个块,一般可选择的是否加载文件头、资源表、输入表、输出表等等。
IDA还支持调试,也就是说,当你在进行反汇编过程时,可以直接使用IDA来调试跟踪,以分析代码的动态执行情况,不过就动态跟踪来说,OLLYDBG更为强大。
IDA反汇编的正确率和代码的复杂程度有关,对于正规开发的代码,尤其是如果能够获得源程序的调试文件,即所谓的PDB文件,IDA可以读取PDB文件中的信息,使得反汇编的效率和准确度大为提高,生成的代码甚至比源代码易读。IDA将反汇编生成的结果存入IDB文件中。当你确认反汇编的结果达到你的要求,可以让IDA输出汇编源代码,IDA也提供其他格式的输出,例如HTML文件,便于用户阅读。楼主主要是用于分析DLL文件,一般来说这类文件更适合做静态分析,所以推荐使用IDA来进行。
IDA对于分析那些加壳或含有大量花指令、混淆代码、垃圾代码的程序,反汇编的正确率会大为下降,因为IDA无法正确的确认当期位置上的数值是属于代码,还是属于数据,是普通C字符,还是DELPHI的字符串,还是UNICODE字符串,是结构数据还是数组还是类表(DELPHI生成的代码中含有大量的类表)等等。遇到这种情况,就需要使用者掌握许多技巧,例如可以通过使用者对当前数据的认识,指导IDA如何处理当前的数据。对于大批量的,具有某些规律的数据,IDA还提供了脚本语言(文件尾位idc),通过对脚本的执行来指导IDA如何进行反汇编。对于更为复杂的情况,例如程序是自解压运行的,这时IDA就没有任何能力来进行正确的分析,通常都会用OLLYDBG动态跟踪,等程序完成自解压后从内存中将解压后的代码完整的挖下来形成文件,再由IDA进行静态分析。
对于成功进行反汇编的代码,IDA根据代码的入口、调用、转移等指令,可以为使用者提供各种格式的程序的流程图,IDA提供许多格式由用户选择,便于用户理解程序的结构。

汇编语言的科学定义,其实就是介于机器码(各种01)和高级语言(如C)之间的一种语言。你用C语言写一段程序,其实要在机器上运行的话,机器是不懂的,要经过编译器、汇编器编译,变成汇编,最终再变成机器码,机器根据这些机器码的01可以控制硬件电路完成你程序想执行的操作。

❸ 如何快速读懂反汇编的汇编代码

简单的逆向工程其实不难,IDA加Hex-Rays插件,可以直接把汇编还原成C代码。虽然还原出来的代码比较怪,但是已经比直接看汇编代码强多了。

静态反汇编工具: IDA Pro
动态反汇编工具: ollydbg/x64dbg
Windows内核调试工具: windbg

❹ 什么是反汇编

反汇编即是指将这些执行文件反编译还原成汇编语言或其他高级语言。但通常反编译出来的程序与原程序会存在许多不同,虽然执行效果相同,但程序代码 会发生很大的变化,非编程高手很难读懂。

❺ 反汇编与逆向编程的区别

反汇编只是按将010二进制码这样的目标码分析解释成Assembler ,所以我们叫DisAssembler,当然这与教科书上的汇编语言是不同的,这是由编译器优化生成的目标代码,而反汇编只是将通过如intel 指令手册就可以将之转换出来,而逆向编程是在反汇编的基础上,然后分析他的逻辑,从而用高级语言或是流式语言进行二次编程,比较常见的,就是使用嵌入asm(c语言),再则因为汇编的条件啥的其实基本都在goto,所以你用老一套的跟,只到你跟出自己的思路来了,那就真的就是逆向编程了,不过现在多是以上两种,当然高手我就没资格评论了.

❻ 什么是汇编与反汇编,具体用途在于什么

在计算机专业里“汇编”有作为名词用的和作为动词用的两种意思。做名词时,是“汇编语言”的简称,它是一种把CPU可执行的指令用符号化表示出来的一种语言,是继“机器语言”后的第二代语言(现在常用的C、Basic、Java等属于第三代语言)。作为动词用的时候是指把第三代语言程序转变为汇编语言程序的过程。懂汇编语言的人可以通过修改高级语言汇编出来的程序修改,使它具有更高的运行效率。
“反汇编”是指把可执行程序(如*.exe或*.DLL)转化为汇编语言程序的过程。通过反汇编可以把你没有源代码的可执行程序变成可以阅读的汇编语言程序,你可以从中修改(如:破解密码)或找出它的运做过程(如:找出病毒的感染过程、藏身位置、发作条件等,用手工去除杀毒软件对付不了的病毒)。不过要小心的是不要因为破解人家的软件触犯了法律!

阅读全文

与反汇编文件分析算法相关的资料

热点内容
程序员在东南亚被毒打 浏览:284
php内存操作 浏览:6
1加手机号码放哪个文件夹 浏览:728
大兵程序员 浏览:785
青桔app福利中心在哪里 浏览:170
算法安全是智能化战争的博弈焦点 浏览:497
编译器用vs多少 浏览:316
pc单机游戏压缩包下载 浏览:570
服务器锁定什么意思 浏览:731
吐司解压神器 浏览:70
程序员的电脑一般用什么 浏览:934
如何从服务器中查询表是否存在 浏览:323
android首页布局源码 浏览:45
虎牙主播是怎么安卓投屏的 浏览:782
redmonk编程语言排行榜 浏览:110
android嵌入html5 浏览:676
云服务器能永久使用吗 浏览:904
linux安装openresty 浏览:386
ubunt配置php 浏览:975
达达取货码在app哪里 浏览:49