首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中混淆变量和函数名以防止基本逆向工程

在C++中混淆变量和函数名以防止基本逆向工程
EN

Stack Overflow用户
提问于 2014-04-19 18:44:21
回答 2查看 3.5K关注 0票数 5

在我的业余时间,我正在和我的一些朋友做一些逆向工程游戏,我想知道如何防止尽可能多的asm可读性。我不想“阻止”逆向工程(毕竟它永远是可能的),我只是想通过在汇编代码中混淆函数/变量来防止它们的容易理解。

例如,如果我在C++中声明了类似于此的函数:

代码语言:javascript
复制
void thisFunctionReverseAString(std::string& mystring);

我希望确保不可能从程序集中获得名称thisFunctionReverseAStringmystring。在g++clang++中是否有任何编译选项可供选择?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-19 19:11:11

混淆只会帮助源代码。没有调试信息的可执行文件不包含变量名或函数名。

逆向工程的过程将涉及:

  1. 将可执行文件转换为汇编语言代码。
  2. 将程序集代码转换为高级语言代码。
  3. 理解顺序命名的函数和变量。

例如,以FORTRAN (或编译BASIC)中的可执行文件为例,将反向工程转换为C++源代码。

正如其他人所说,有一些函数可以从可执行文件的调试版本中删除符号。您可以从一开始就开始构建一个没有符号的可执行文件,通常称为发行版。

票数 5
EN

Stack Overflow用户

发布于 2014-04-19 18:54:45

使用strip从Linux中的可执行文件中删除符号。在Windows上删除pdb文件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23174003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档