0

我需要我的程序是安全的,因为它的内容包括个人信息,如 IP(如果你必须知道,一个私人 IRC 聊天)。我的计划是读取程序的字节,然后创建一个像 AES 这样的对称加密算法来加密字节数组,为了提高安全性,我添加了其他可以处理调试和仿真器的小东西。然后我将使用 codedom 创建我的存根来“携带”这些加密字节。我知道有两种方法可以“携带”代码:

  1. 将加密字节附加到存根,以便它解密、写入和运行。(称为掉落)
  2. 将它添加到存根的资源中,以便它可以解密并加载它,以便它能够在内存中运行它。

通过添加到资源然后解密、写入和运行或附加然后解密、加载和在内存中运行,我可以有 4 种方法。我也可以在代码中做一些自己的小混淆,但我怀疑它会产生很大的不同。

方法2似乎被人滥用了,被杀毒软件检测到了,每次调试时让你的项目被杀毒软件屏蔽真的很烦人。当所有程序所做的只是保护自己不被 Red Gate Reflector 等程序轻易拆卸时,这些借口对用户来说只是一个误报。包括数据库信息,例如SQL登录方法,如果反汇编仍然会被分析:

还有更多方法可以做到这一点吗?

4

2 回答 2

2

没有办法做你描述的事情。摆脱它。


做这种事情的另一种方法是拥有一个用户必须对其进行身份验证的 Web 服务,然后通过安全通道(例如 SSL/TLS)发送敏感信息。

第二种方法可能是你

  1. 加密信息
  2. 将敏感信息的加密版本嵌入到可执行文件中
  3. 在运行时向用户询问对称密钥(例如,他必须输入数据的“密码”)
  4. 使用对称密钥解密信息
  5. 使用信息

这里最大的缺点是,如果对称密钥(例如密码)以任何方式被盗,攻击者就可以获得所有加密信息。

于 2013-01-14T21:38:48.257 回答
0

怎么样SecureString?似乎这将处理隐藏程序中的信息而无需太多麻烦。如果内存在执行期间被转储,那么数据将被加密。

于 2013-01-14T21:30:37.373 回答