如何可能混淆一个局部变量

How is possible obfuscate a local var?

本文关键字:一个 局部变量 何可能      更新时间:2023-10-16

如果密码存储在源文件中,像strings或objdump这样的程序可以很容易地读取字符串,从而读取密码。我的问题是关于像这段代码那样存储数据:

    to_send[77] = data[0];
to_send[27] = data[1];
to_send[4] = data[2];
to_send[777] = data[3];

其中data为字符串randomkey, to_send为要发送的字符串。在c++中,攻击者可以像字符串一样轻松地读取调试代码吗?还是更困难?

如果您想使逆向工程更加困难,您应该使用DES3加密,或者一些类似的方法。任何类型的硬编码数据都可以通过这种方式被"打乱"。当然,由于密钥也是硬编码的,所以它可以被破解。但是,没有万无一失的解决方案。您可以随意调整破解的复杂程度,因为一旦您在内存中获得了原始的解密数据。

您有几种方法可以做到这一点

1) Md5

密码不要保存在资源中,保存MD5(access_password)。
当用户输入密码测试,如果MD5(entered_password) == MD5(access_password)

pro:即使有人反转你的代码并找到你的MD5,也很难反转该值并找到密码(如果使用的密码不是字典中的单词)

2)非安全但简单的方法

char pass[] = {'p','a','s',s'};

这与您尝试的版本不一致。
它是快速和简单的,你的密码将不会被ResHacker找到,因为pass不会作为一个紧凑的内存块存储在你的exe

3)使用密码学保存密码