反汇编基本算法

  1. 确定进行反汇编代码区域,这并不像那么简单。通常,指令与数据混杂在一起,区分它们就显得非常重要。反汇编可执行文件:该文件必须符合可执行文件的某种通用格式,如Windows所使用的可移植可执行(Portable Executable, PE)格式或许多Unix系统常用的可执行和链接格式(ELF)。
  2. 知道指令的起始地址后,下一步就是读该地址(或文件偏移量)所包含的值,并执行一次表查找,将二进制操作码的值与它的汇编语言助记符对应起来。根据被反汇编的指令集的复杂程度,这个过程可能非常简单,也可能需要几个额外的操作,如查明任何可以修改指令行为的前缀以及确定指令所需的操作数。对于指令长度可变的指令集,如Intel x86,要完全反汇编一条指令,可能需要检索额外的指令字节。
  3. 获取指令并解码任何所需的操作数后,需要对它的汇编语言等价形式进行格式化,并将其在反汇编代码中输出。有多种汇编语言输出格式可供选择。如X86所使用的两种主要格式为Intel格式和AT&T格式。
  4. 输出一条指令后,继续反汇编下一条指令,并重复上述过程,直到反汇编文件中的所有指令。
  5. 有大量的算法可用于确定从何处开始反汇编,如何选择下一条反汇编的指令,如何区分代码与数据,以及如何确定何时完成对最后一条指令的反汇编。线性扫描和递归下降是两种最主要的反汇编算法。
时间: 2024-10-05 19:47:41

反汇编基本算法的相关文章

[反汇编练习] 160个CrackMe之009

[反汇编练习] 160个CrackMe之009. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注册机的东西. 其中,文章中按照如下逻辑编排(解决如下问题): 1.使用什么环境和工具 2.程序分析 3.思路分析和破解流程 4.注册机的探索 ---------------------------------- 提醒各位看客: 如果文章中的逻辑看不明白,那你一定是没有亲手操刀!OD中的跳转提示很强大

基本反汇编算法

在机器码中 数据与代码都是相同的二进制数字,你无法判断那些数据是代码 那些数据是数据 反汇编文件都有自己的文件格式,window下的pe文件,liunx下的eldf文件,这些类型文件含有一种机制就可以用来确定文件中包含的代码和代码入口点,通常表现为层级文件头的形式 线性扫描反汇编 确定反汇编指令位置的方式:一条指令结束,另一条指令开示的地方 确定起始位置最为困难:扫描被程序文件标注为代码的节所包含的全部的机器指令,线性扫描完整个代码段 线性扫描并不会识别分支等非线性指令来了解程序的控制流 优点:

AACOS:基于编译器和操作系统内核的算法设计与实现

AACOS:基于编译器和操作系统内核的算法设计与实现 [计算机科学技术] 谢晓啸 湖北省沙市中学 [关键词]: 编译原理,操作系统内核实现,算法与数据结构,算法优化 0.索引 1.引论 1.1研究内容 1.2研究目的 1.3研究提要 正文 2.1研究方法 2.2编译器部分 2.2.1从计算器程序中得到的编译器制作启示 2.2.2在编译器中其它具体代码的实现 2.2.3编译器中栈的高级应用 2.2.3编译器中树的高级应用 2.2.4编译器与有限状态机 2.3操作系统内核部分 2.3.1操作系统与底

[反汇编练习] 160个CrackMe之020

[反汇编练习] 160个CrackMe之020. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注册机的东西. 其中,文章中按照如下逻辑编排(解决如下问题): 1.使用什么环境和工具 2.程序分析 3.思路分析和破解流程 4.注册机的探索 ---------------------------------- 提醒各位看客: 如果文章中的逻辑看不明白,那你一定是没有亲手操刀!OD中的跳转提示很强大

为了CTF比赛,如何学习逆向和反汇编?

作者:无名侠链接:https://www.zhihu.com/question/23810828/answer/138696052来源:知乎著作权归作者所有,转载请联系作者获得授权. 元旦节马上就要过去,赶紧趁着12点之前写完回答. ====如果觉得本文对你有用,请点个赞并关注一下我吧~==== 我做逆向大概四年左右,虽然我没有参加过CTF,但还是可以写一些关于如何学习逆向方面的内容~ 逆向实际上是很枯燥的工作,我能从枯燥中感到快乐,这就是支撑我学习逆向的动力了. 学习逆向后有什么用?难道就仅仅

逆向与反汇编工具

http://blog.163.com/[email protected]/blog/static/823405412012930555115/ 第 1 章           逆向与反汇编工具 了解反汇编的一些背景知识后,再深入学习IDA Pro之前,介绍其他一些用于二进制文件的逆向工程工具,会对我们学习有所帮助.这些工具大多在IDA之前发布,并且仍然可用于快速分析二进制文件,以及审查IDA的分析结果.如我们所见,IDA将这些工具的诸多功能整合到它的用户界面中,为逆向工程提供了一个集成环境.最

[反汇编练习] 160个CrackMe之024

[反汇编练习] 160个CrackMe之024. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注册机的东西. 其中,文章中按照如下逻辑编排(解决如下问题): 1.使用什么环境和工具 2.程序分析 3.思路分析和破解流程 4.注册机的探索 ---------------------------------- 提醒各位看客: 如果文章中的逻辑看不明白,那你一定是没有亲手操刀!OD中的跳转提示很强大

[反汇编练习] 160个CrackMe之023

[反汇编练习] 160个CrackMe之023. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注册机的东西. 其中,文章中按照如下逻辑编排(解决如下问题): 1.使用什么环境和工具 2.程序分析 3.思路分析和破解流程 4.注册机的探索 ---------------------------------- 提醒各位看客: 如果文章中的逻辑看不明白,那你一定是没有亲手操刀!OD中的跳转提示很强大

[反汇编练习] 160个CrackMe之021

[反汇编练习] 160个CrackMe之021. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注册机的东西. 其中,文章中按照如下逻辑编排(解决如下问题): 1.使用什么环境和工具 2.程序分析 3.思路分析和破解流程 4.注册机的探索 ---------------------------------- 提醒各位看客: 如果文章中的逻辑看不明白,那你一定是没有亲手操刀!OD中的跳转提示很强大