1
3
绝对无法验证连接另一端的可执行文件是否是您编写的。如果用一个密钥加密一个密钥,那么第二个密钥存储在哪里?如果你让Hellman和服务器搞不清楚要得到一个密钥,你把密钥存放在哪里(提示:在内存中,可以从中转储(然后读取)。这是一个你永远无法解决的递归问题。 我了解到AOL Instant Messenger的服务器会定期轮询AIM客户端,以获取特定代码地址的哈希值(即calculate SHA1(address1->地址2),如果哈希不正确,则断开客户端的连接。这是因为重新分发可执行文件是非法的(在每两个间隔之间构建一个哈希表是不可行的),所以这只是一个法律挑战,而不是技术挑战。 如果你想要的软件真的很难击败逆向工程(实际上做得很好),可以尝试在Skype上附加一个调试器:-) |
2
2
您还可以尝试将自定义加密/解密算法放入C++库中,然后使用互操作来来回地整理数据。 |
3
1
您可以生成一个非对称密钥(每个会话?),而不是硬编码密钥。您可以将公钥发送给对等方,利用该密钥,对等方可以加密只有您才能解密的消息。 非对称加密速度很慢,对等方还可以发送用公钥编码的对称密钥,该密钥仅用于此会话。 ProtectedData 班级。你可以在安装过程中调用它来存储你的秘密(密钥)。 |
4
1
如果密钥存储在程序的可执行代码中,或存储在资源中(或存储在使用可执行代码中的密钥的Windows TCB中),则有人可以通过足够的努力对其进行解码。 因为最终,对于可执行文件,它们拥有获得所需的所有信息,无论您添加了什么保护(因为解码代码也已就位)。 首先:
接吻原则对你很有用。 |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |