我一直在考虑反转我放置的一些固件。固件的一个特点是它使用大量预处理器宏进行编译。现在,据我所知,这些不包含在二进制文件中,因此反编译器无法帮助解决这些问题。有什么办法可以恢复这些吗?是否有一种已知的技术来推断它们的存在?
有没有办法从编译后的代码中恢复宏?
逆向工程
反编译器
2021-07-04 09:43:53
2个回答
不可以。反编译器可以包括特殊的模式匹配试探法,它们位于其他功能之上以检测宏,但一般来说,宏只是编译器以与其他代码段相同的方式处理的代码段。它们可能会经过优化以改变它们的外观,例如常量传播、死代码消除、公共子表达式消除、循环不变代码运动等。这意味着它们可能无法通过易于巩固的句法模式表现出来相匹配。您的选择基本上是为反编译器(例如 Hex-Rays 插件)编写 post-pass 或手动识别宏。
不。
宏是您命名的代码段。
在编译时,当编译器遇到一个宏时,它只是用它后面的代码替换它,然后继续编译。