[英]Do inline functions make it harder to reverse-engineer the compiled binary?
[英]What compiler switches make the life of a reverse engineer harder/easier?
讓我們考慮VC ++ 2013編譯器。 哪些編譯器開關使逆向工程師的生活更加艱苦/輕松? 編譯器是否添加任何元信息來幫助確定可執行文件的來源?
不特定於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
函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.