代码之家  ›  专栏  ›  技术社区  ›  Samuel Tulach

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

  •  0
  • Samuel Tulach  · 技术社区  · 6 年前

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

    screenshot

    如果是逆向工程,有没有办法保护我的程序不受这种影响?有没有办法从代码中自动导出所有函数名和变量(使用GCC或clang?),这样我就可以在编译之前编写一个简单的脚本将它们更改为完全随机的?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Lightness Races in Orbit    6 年前

    nm 但你不需要这些(在编译过的二进制文件中重写名称?哦…灾难的秘诀)。

    相反,只需做每个人在发布版本中所做的事情,然后 strip

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