在我的业余时间,我正在和我的一些朋友做一些逆向工程游戏,我想知道如何防止尽可能多的asm可读性。我不想“阻止”逆向工程(毕竟它永远是可能的),我只是想通过在汇编代码中混淆函数/变量来防止它们的容易理解。
例如,如果我在C++中声明了类似于此的函数:
void thisFunctionReverseAString(std::string& mystring);我希望确保不可能从程序集中获得名称thisFunctionReverseAString和mystring。在g++或clang++中是否有任何编译选项可供选择?
发布于 2014-04-19 19:11:11
混淆只会帮助源代码。没有调试信息的可执行文件不包含变量名或函数名。
逆向工程的过程将涉及:
例如,以FORTRAN (或编译BASIC)中的可执行文件为例,将反向工程转换为C++源代码。
正如其他人所说,有一些函数可以从可执行文件的调试版本中删除符号。您可以从一开始就开始构建一个没有符号的可执行文件,通常称为发行版。
发布于 2014-04-19 18:54:45
使用strip从Linux中的可执行文件中删除符号。在Windows上删除pdb文件。
https://stackoverflow.com/questions/23174003
复制相似问题