反汇编器——维基百科
反汇编器(disassembler)
是一种将机器语言转换为汇编语言的计算机程序——这与汇编器的目的相反。
反汇编器与反编译器不同,反编译器的目标是高级语言而非汇编语言。
反汇编器的反汇编输出通常格式化为适合人类阅读,而非用作汇编器的输入源,因此它主要是一个逆向工程工具。
汇编语言源代码通常允许使用常量和程序员注释,而这些通常会在汇编器汇编的机器语言中被移除。
因此,以机器代码为基础完成的反汇编结果将没有这些常量和注释,阅读输出结果将比阅读源代码更有难度。
一些反汇编器提供了内置的代码注释功能,其生成的输出增补了有关被调用API函数或被调用函数参数的注释。
一些反汇编器会利用对象文件(例如ELF)中存在的符号调试信息。
例如,IDA允许人类用户在交互式会话中为代码的值或区域标记助记符号。
反汇编不是一门精准科学:
在有可变宽度指令的复杂指令集(CISC)平台上,使用操作码级编程或存在程序自修改代码时,
单个程序可能有两个或多个合理的反汇编结果。
程序在运行期间决定实际执行哪个指令被归约到停机问题,这是已知无法解决的问题。
反汇编的例子:
反汇编器可能独立运行,也可能交互操作。
独立的反汇编器被执行时将生成可以查阅的汇编语言文件;
交互式反汇编器则立即显示用户所做更改的结果。
例如,反汇编器起初可能不知道程序的某一部分是代码,而将其视为数据;
如果用户将其指定为代码,则可立即显示据其所生成的反汇编代码,从而使用户尽快查阅和采取进一步行动。
任何交互式调试工具都包含一些查看被调试程序的反汇编结果的方法。
通常,相同的反汇编工具会被打包成单独的反汇编器,与调试器分开发布。
例如,objdump是GNU Binutils的一部分,而它与交互式调试器gdb相关。
反汇编器和仿真器:
动态反汇编器可以并入到一个仿真器或管理程序的输出中,从而步进、逐行执行要实时执行的机器指令。
在此情况下,其包含反汇编后的机器代码行,
以及可显示每条指令所引发的寄存器和/或数据改变(或者其他任何状态的改变,例如有条件代码),
各个指令的变化都可以在反编译后的指令旁边或下方显示。
这从而提供了极为强大的调试信息,有助于最终解决问题,
尽管这些信息有时可能非常大,尤其是如果程序很活跃。
是一种将机器语言转换为汇编语言的计算机程序——这与汇编器的目的相反。
反汇编器与反编译器不同,反编译器的目标是高级语言而非汇编语言。
反汇编器的反汇编输出通常格式化为适合人类阅读,而非用作汇编器的输入源,因此它主要是一个逆向工程工具。
汇编语言源代码通常允许使用常量和程序员注释,而这些通常会在汇编器汇编的机器语言中被移除。
因此,以机器代码为基础完成的反汇编结果将没有这些常量和注释,阅读输出结果将比阅读源代码更有难度。
一些反汇编器提供了内置的代码注释功能,其生成的输出增补了有关被调用API函数或被调用函数参数的注释。
一些反汇编器会利用对象文件(例如ELF)中存在的符号调试信息。
例如,IDA允许人类用户在交互式会话中为代码的值或区域标记助记符号。
反汇编不是一门精准科学:
在有可变宽度指令的复杂指令集(CISC)平台上,使用操作码级编程或存在程序自修改代码时,
单个程序可能有两个或多个合理的反汇编结果。
程序在运行期间决定实际执行哪个指令被归约到停机问题,这是已知无法解决的问题。
反汇编的例子:
反汇编器可能独立运行,也可能交互操作。
独立的反汇编器被执行时将生成可以查阅的汇编语言文件;
交互式反汇编器则立即显示用户所做更改的结果。
例如,反汇编器起初可能不知道程序的某一部分是代码,而将其视为数据;
如果用户将其指定为代码,则可立即显示据其所生成的反汇编代码,从而使用户尽快查阅和采取进一步行动。
任何交互式调试工具都包含一些查看被调试程序的反汇编结果的方法。
通常,相同的反汇编工具会被打包成单独的反汇编器,与调试器分开发布。
例如,objdump是GNU Binutils的一部分,而它与交互式调试器gdb相关。
反汇编器和仿真器:
动态反汇编器可以并入到一个仿真器或管理程序的输出中,从而步进、逐行执行要实时执行的机器指令。
在此情况下,其包含反汇编后的机器代码行,
以及可显示每条指令所引发的寄存器和/或数据改变(或者其他任何状态的改变,例如有条件代码),
各个指令的变化都可以在反编译后的指令旁边或下方显示。
这从而提供了极为强大的调试信息,有助于最终解决问题,
尽管这些信息有时可能非常大,尤其是如果程序很活跃。
上一篇:gu du huan zhe
下一篇:雪地上的回忆
声明:以上文章均为用户自行添加,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。
文章热度:★★★☆☆
文章难度:★★☆☆☆
文章质量:★★★☆☆
说明:系统根据文章的热度、难度、质量自动认证,已认证的文章将参与打字排名!
本文打字排名TOP20
- 1悲欢自饮 12-24 22:17182 WPM
- 2凤舞翩翩1 04-14 14:01174 WPM
- 3我是两个 04-14 11:10168 WPM
- 4一诺千金2019 04-14 10:25160 WPM
- 5蔓草 12-24 16:04137 WPM
- 6游客17440781... 04-21 22:29135 WPM
- 7fa_555 04-16 11:31132 WPM
- 8游客15027008... 01-01 11:03128 WPM
- 9helloㄋ 04-15 10:53128 WPM
- 10游客14752671... 04-23 15:50126 WPM
- 11夜色石头 12-27 11:40123 WPM
- 12fllym 12-25 16:33119 WPM
- 13XylonHsu 12-31 16:58116 WPM
- 14游客16538402... 04-15 11:15113 WPM
- 15游客13429510... 12-28 08:23112 WPM
- 16发呆的呆呆 04-13 21:11112 WPM
- 17柚子猫 04-20 20:40112 WPM
- 18游客14712733... 04-19 10:12109 WPM
- 19游客15469637... 04-13 21:28108 WPM
- 20纯情雄♂性 04-13 21:09107 WPM
用户更多文章推荐
- 中国邮递员问题 -- Wikipedia2024-02-19
- 旅行推销员问题 -- 维基百科2024-01-30
- 巡洋护卫舰 —— 维基百科2024-01-04
- 罗马帝国 —— 维基百科2023-06-27
- Roman Empire -- Wikipedia2023-06-27
- Crested goshawk -- Wikipedia2023-06-21
- 天秤座——维基百科2023-02-11
- 天坛座——维基百科2023-02-11
- 平面设计——维基百科2023-02-11
- 台州学院——维基百科2023-02-02
- Integral -- Wikipedia2023-02-01
- Traffic light -- Wikipedia2022-12-10
- Turochamp -- Wikipedia2022-12-08
- Windows 2.1x -- Wikipedia2022-10-16
- Binary tree -- Wikipeida2022-08-11
- 事件驱动程序设计——维基百科2022-07-31
- Pyramid of Khentkaus I -- Wiki2022-07-29
- Messinian salinity crisis-WIki2022-05-14
- 汇丰银行公馆旧址——维基百科2022-03-27
- Mathematical problem-Wikipedia2022-03-27
- SCOTUS - wikipedia2022-03-27