gpt4 book ai didi

c++ - 如何将字符串混淆成 C++ 二进制文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:26 24 4
gpt4 key购买 nike

如果我有一个包含字符串的 C++ 代码,它可以是密码或任何东西,混淆它们以使逆向工程变得非常困难的最佳方法是什么?我在网上找到了一些工具,但都不是开源的。

最佳答案

假设您的应用程序使用网络服务“www.example.com”并使用密码“letmein”进行身份验证。编译程序并使用 stringsobjdump 或其他任何方式检查它:

$ make$ objdump -j .rodota -s programa.out:     file format elf64-x86-64Contents of section .rodata: 4005f8 01000200 7777772e 6578616d 706c652e  ....www.example. 400608 636f6d00 6c65746d 65696e00           com.letmein.  $ strings program/lib64/ld-linux-x86-64.so.2__gmon_start__...www.example.comletmein

这很简单。如果您混淆它,您仍然需要将纯文本放在内存中的某个位置才能使用它,因此攻击者会执行以下操作之一:

  • 拦截网络数据包(简单,需要 5 分钟的 Wireshark 基础知识)
  • 使用调试器(简单,只需 10 分钟即可了解 GDB 的基本知识)
  • 对您的源代码进行逆向工程(很难,需要数小时或数天)

请注意,混淆工具只会让已经很困难的攻击者变得更难。那有什么意义呢?您所做的只是让攻击者花费 15 分钟而不是 5 分钟从您的可执行文件中获取密码。因为这几乎是你能做的最好的,所以不要太努力。只需使用一些简单的模式对密码进行 XOR,并希望攻击者非常懒惰或愚蠢。

C-3PO: Master Luke, sir. Pardon me for asking, but what should R2 and I do if we're discovered here?
Luke: Lock the door.
Han Solo: And hope they don't have blasters.
C-3PO: That isn't very reassuring.

(你最终可能会比攻击者花更多的时间在这上面。)

另一方面:如果您试图阻止非根用户访问受信任系统上的密码,您可以使用权限和 setuid 二进制文件来实现。

脚注:混淆器的目的通常是隐藏程序代码,而不是数据。例如,如果您的应用程序使用属于商业 secret 的算法,那么您就需要使用混淆器。

关于c++ - 如何将字符串混淆成 C++ 二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281427/

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