将敏感数据存储在C++编译的二进制文件中是否安全?

Dav*_*vid 8 .net c++ security decompiling binaries

众所周知,.NET生成的dll可以很容易地反编译.这意味着敏感信息(例如加密密钥)不应存储在.NET二进制文件中.

在(例如)可能由我的.NET代码使用的C++二进制文件中存储敏感数据是否是一种明智的替代方法?我还不知道互操作的东西,但我很好奇这是否是一个值得追求的途径.我想澄清一下,我的问题是:

  1. 用C++(或C)生成的二进制文件可以很容易地反编译来访问敏感的字符串数据吗?
  2. 这是一个完全没有思想的想法,要么是因为它不起作用,要么很难完成,要么是因为我还没有遇到过更好的替代方案?

gbj*_*anb 12

答案是不.虽然它真正的.NET dll可以简单地反编译为其原始结构,并且C/C++ dll只能被反编译成编译器会喜欢的怪物混乱,存储在那里的数据将放在一个大的,un - 所以任何知道要查看哪个部分的人(并且,好的,所有数据都紧挨着彼此,因此很难知道哪个位是哪个),但数据将在那里供所有人查看.

谷歌用于数据段,这是本机Windows二进制文件中静态数据的放置位置.

快速编辑:当然,您可以将加密信息存储在C++二进制文件中,对其进行预加密,但您必须使用其他东西来存储解密密钥(例如您的Windows用户密码或类似密码)..NET允许您将敏感信息存储在配置文件中,并在首次运行或安装时轻松加密,然后根据应用程序运行的用户帐户详细信息对其进行加密和解密(因此请勿更改,并保留某处未加密的配置文件的副本:-))

  • @David:是的,你可以这样做.但这只是意味着想要敏感信息的人不能只转储字符串表,因此他们必须附加调试器.请注意,有人非常熟悉调试编译代码,他们会发现你的混淆功能和反向工程可能比你设计和编写它更快.混淆只是增加了减速带. (2认同)

Ton*_*mas 4

字符串文字可以从本机(编译的 c c++ 代码)二进制文件(exe 或 dll)中读取