gpt4 book ai didi

c++ - 如何使用 GCC 或 clang 导出函数名和变量名?

转载 作者:行者123 更新时间:2023-11-28 01:26:10 47 4
gpt4 key购买 nike

我正在制作一个商业软件,我不希望它很容易被破解。它是针对 Linux 的,我正在使用 GCC (8.2.1) 编译它。问题是,当我编译它时,从技术上讲,任何人都可以使用像 IDA 或 Binary Ninja 这样的反汇编程序来查看所有函数名称。这是示例(您可以在左侧面板上看到函数名称):

screenshot

如果进行逆向工程,有什么方法可以保护我的程序免受此类攻击吗?有没有什么方法可以自动从代码中导出所有这些函数名和变量(使用 GCC 或 clang?),这样我就可以制作一个简单的脚本来在编译之前将它们更改为完全随机的?

最佳答案

所以您想隐藏/屏蔽二进制文件中的符号名称。您已经决定,为此,您需要获取它们的列表,以便您可以创建一个脚本来修改它们。好吧,您可以使用 nm 获取该列表,但您不需要其中的任何一个(在已编译的二进制文件中重写名称?oof……灾难的秘诀)。

相反,只需按照每个人在发布版本和 strip 中所做的那样做符号!您还会看到一个小得多的二进制文件。当然,这并不能阻止逆向工程(什么也不能阻止),尽管可以说这会使上述任务更加困难。

老实说,无论如何你都应该剥离你的发布二进制文件,而不是为了防止破解。常识是不要太努力地防止破解,因为你不可避免地会失败,并且以浪费开发时间为代价(并且可能更复杂的代码库更难维护/更复杂的可执行文件速度较慢和/或对诚实的客户有用)。

关于c++ - 如何使用 GCC 或 clang 导出函数名和变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53729177/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com