C++中变量和函数名称的混淆,以防止基本的逆向工程
Obfuscation of variable and function names in C++ to prevent basic reverse engineering
在业余时间,我和我的一些朋友一起玩一些逆向工程游戏,我想知道如何尽可能防止asm
的可读性。我不想"阻止"反向工程(毕竟这总是可能的),我只想通过在汇编代码中混淆函数/变量来阻止对它们的简单理解。
例如,如果我在C++中声明了一个类似的函数:
void thisFunctionReverseAString(std::string& mystring);
我希望确保无法从程序集中获取名称thisFunctionReverseAString
和mystring
。在g++
或clang++
中有编译选项吗?
混淆只会对源代码有所帮助。不包含调试信息的可执行文件不包含变量名或函数名。
逆向工程的过程包括:
- 正在将可执行文件转换为汇编语言代码
- 将程序集代码转换为高级语言代码
- 理解按顺序命名的函数和变量
例如,以FORTRAN(或编译的BASIC)中的可执行文件为例,将其反向工程为C++源代码。
正如其他人所说,有一些函数可以从可执行文件的调试版本中删除符号。您可以从一开始构建一个没有符号的可执行文件,通常称为Release版本。
在Linux中使用strip
从可执行文件中删除符号。在Windows上,简单地删除pdb
文件。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 逆向工程项目到图形UML图
- 逆向工程代码
- 对传统串行端口通信进行逆向工程
- Visual Studio 2012能否逆向工程C++代码到UML图中
- 对APK中的C++文件进行逆向工程
- 您如何为Sparx企业架构师逆向工程设置 #include 路径
- 如何将整个Visual C ++项目加载到Enterprise Architect中以对其进行逆向工程
- 对逆向工程隐藏字符数组
- 保护资源免受逆向工程影响的最佳实践
- 用于逆向工程的汇编语言
- 从逆向工程中保护C++DLL
- 逆向工程全局热键块
- c++逆向工程工具(即查看c++类)
- 用opentx逆向工程rc发射机主板
- 保护可执行文件不受逆向工程的影响
- C++中的逆向工程虚拟函数代码
- C++中变量和函数名称的混淆,以防止基本的逆向工程
- 内联函数是否使对编译后的二进制文件进行逆向工程变得更加困难?