Windows 上最好的 C 编译器用于逆向

逆向工程 编译器
2021-07-10 11:50:51

我在阅读有关学习如何逆向工程的阅读中发现的线索之一是编写“小”c 程序,编译它们,然后反汇编它们以查看 c 代码如何转换为汇编。

我正在 Windows 7 64 位上工作,并且在安装 Visual Studio 时遇到了问题。当我选择其中一个 Visual Studio 命令提示时,环境永远不会正确设置,因此编译器不可用。

所以我的问题是:我应该安装 mingw、mingw-w64 还是 cygwin 来为这种测试/学习提供最佳环境?

2个回答

这是一个导致非常主观的答案的问题。我会(并且已经)安装 MinGW,然后使用 gcc 来编译您的 C 代码。您甚至不需要所有的 Visual Studio 膨胀软件来完成您想要完成的工作。就像打开您最喜欢的文本编辑器、编写 C 程序(是的,您仍然可以#include 并使用 Win32 API 就好了)并在命令提示符下运行 gcc 一样简单。您甚至可以使用 强制使用 32 位二进制文​​件,使用-m32关闭堆栈金丝雀-fno-stack-protector等等……如果您愿意,可以练习一下。

您还需要大量使用 gdb。gdb 还带有 MinGW,因此您也可以使用。这种方法将非常简单易行。文本编辑器 -> 保存、gcc、运行、gdb、重复。所有这些都可以在命令提示符下完成。这与您在 Linux 或 Windows 上获得的一样简单。

出于某种原因,人们倾向于认为您必须在 Windows 上使用 Visual Studio 或切换到 Linux。事实并非如此,对于您想要完成的事情,两者都可能是矫枉过正,而且都肯定需要一些时间,尤其是如果您从未使用过。但是,如果您对使用或学习 Linux 环境感兴趣,并且设置虚拟机没有问题,您可以在 VM 上安装 Linux,然后您就已经安装了所有需要的工具。Linux 和 C 确实齐头并进,许多程序员出于这个原因更喜欢 Linux。

Kris Kaspersky (RIP) 的书名为 Hacker Disassembly Uncovered(以 chm 格式免费提供,只需谷歌搜索)有一整章关于该主题 - 他展示了不同的代码片段(从非常简单的代码片段开始,然后转到浮点,虚拟函数表和其他 C++ 构造)在不同的编译器下,并进行深入洞察的逐行反汇编。

这本书正是你所要求的。