在搜索c ++解析器时,我最近偶然发现了下面的项目。在其中有一个解析器似乎非常适合我的需求,但我相信作者故意混淆了一些核心代码,这使得检查代码有点困难。
https://github.com/ArashPartow/math-parser-benchmark-project/blob/master/fparser/fpoptimizer.cc
文件和作者网站上有一个描述有一个简单的反混淆版本,但是指示的网站似乎只有一个dead-link,并试图联系作者没有结果。
我想知道其他SOers是否会知道一种快速简便的方法来扭转上述文件中的混淆。
现在我不确定,因为我不是C ++专家,但可能是因为代码的存在是合理的原因,可能是因为文件的名称暗示它可能是表现原因。
答案 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
选项来执行类似的操作。