在学习逆向工程的同时,我知道装配是查看和攻击闭源软件的最佳方式。为什么像C / C ++这样的语言需要将代码转换为汇编,为什么它不直接转换为机器语言。
其次,为什么每次都需要在同一位置(虚拟)映射所有代码段(如.stack,.bss)?
答案 0 :(得分:4)
有些编译器,例如及时编译器,会输出机器代码。但总的来说,通过检查汇编语言而不是机器代码,将编译器调试为人类要容易得多。在某种程度上,“unix方式”将另一层添加到现有工具等。在这种情况下,汇编器和链接器需要存在于目标平台,希望这是一个理解的参数。然后,您可以简单地生成汇编语言并直观地调试它,并使用现有的汇编器和链接器将其转换为可用的机器代码。
答案 1 :(得分:3)