反混淆C ++源代码

时间:2013-04-03 03:11:09

标签: c++ parsing math optimization obfuscation

在搜索c ++解析器时,我最近偶然发现了下面的项目。在其中有一个解析器似乎非常适合我的需求,但我相信作者故意混淆了一些核心代码,这使得检查代码有点困难。

https://github.com/ArashPartow/math-parser-benchmark-project/blob/master/fparser/fpoptimizer.cc

文件和作者网站上有一个描述有一个简单的反混淆版本,但是指示的网站似乎只有一个dead-link,并试图联系作者没有结果。

我想知道其他SOers是否会知道一种快速简便的方法来扭转上述文件中的混淆。

现在我不确定,因为我不是C ++专家,但可能是因为代码的存在是合理的原因,可能是因为文件的名称暗示它可能是表现原因。

2 个答案:

答案 0 :(得分:5)

在这种特定情况下,你可以试试project page, with the latest devel files的这个链接 - 我刚刚弄清楚它的版本是错误的 - 链接说4.5并且当前版本是4.5.2。 他们似乎没有保留旧版本,所以抓住最新版本

答案 1 :(得分:4)

大多数编译器都可以选择在代码和代码上运行预处理器。生成预处理器输出。这将删除使用#defines完成的任何混淆。

例如在MSVC中,您可以运行cl /P fpoptimizer.cc。这将创建一个名为fpoptimizer.i的文件,其中包含预处理文件。

在执行此操作之前,您可以删除程序中的#includes - 这样只会预处理程序中的#define而不是其他内容。

gcc提供了-E选项来执行类似的操作。