什么编译器开关使反向工程师的生活更难/更容易?

时间:2014-04-17 08:33:15

标签: c++ visual-c++ compilation

让我们考虑一下VC ++ 2013编译器。什么编译器开关使反向工程师的生活更难/更容易?编译器是否添加任何元信息以帮助确定可执行文件的来源?

1 个答案:

答案 0 :(得分:0)

不是特定于Visual-C ++:任何增加代码转换概率的开关都会减少反向引擎的数量。最重要的是,这些都是优化开关(但请注意,在g ++的情况下,-O - 系列交换机实际上是许多其他交换机的集合)。

,例如,如果你有

int foo() {
    return 3;
}

int main () {
    std::cout << (foo()*foo()) << '\n';
}

并且编译器将其转换为(此处:内联)

int main () {
    std::cout << (3*3) << '\n';
}

然后进入(这里:常数折叠)

int main () {
    std::cout << 9 << '\n';
}

显而易见的是,无法提取原始的foo函数。