'carry'字节并在c#中运行它

本文关键字:运行 carry 字节 | 更新日期: 2023-09-27 17:53:34

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

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

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

方法2似乎被人们滥用了,并且被反病毒检测到,每次调试时都被反病毒阻止,这真的很烦人。当程序所做的一切都是为了保护自己不被像红门反射器这样的程序轻易地拆解时,足够多的借口对用户来说只是一个误报。包括数据库信息,例如SQL登录方法,如果反汇编,仍然会被分析:

还有其他方法吗?

'carry'字节并在c#中运行它

没有办法做到你所描述的。


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

第二种方法是

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

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

SecureString呢?这似乎可以处理隐藏在程序中的信息,而不需要很多麻烦。如果内存在执行过程中被转储,那么数据将被加密。