Vin*_*ent 4 c++ obfuscation assembly g++ reverse-engineering
在我的业余时间,我正在与我的一些朋友做一些逆向工程游戏,我想知道如何尽可能地防止asm可读性.我不想"阻止"逆向工程(毕竟它总是可能的),我只是想通过在汇编代码中混淆它们来阻止对函数/变量的简单理解.
例如,如果我在C++中声明了类似的函数:
void thisFunctionReverseAString(std::string& mystring);
Run Code Online (Sandbox Code Playgroud)
我想确保无法获得名称thisFunctionReverseAString和mystring装配.是否有任何编译选项,这样做的g++还是clang++?
混淆只会对源代码有所帮助.没有调试信息的可执行文件不包含变量名称或函数名称.
逆向工程的过程包括:
例如,在FORTRAN(或编译的BASIC)中获取可执行文件并将其反向工程为C++源代码.
正如其他人所说,有一些函数可以从可执行文件的调试版本中删除符号.您可以从头开始构建一个没有符号的可执行文件,通常称为发布版本.