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