分成c#代码(SDK)和c++代码(dll\so)

加解密流程:
c# new一个新类,初始化的时候传入key
c# 通过SetString方法传入待加密或者解密字符串
c# 通过Run方法,传递要求加密(0)或者解密(1)
c# 通过GetString方法获取加密或者解密结果

dll(c++)功能:
核心加解密函数


密钥保密:
key在c#保存,使用64位字符串,按特定位取,c#采用rsa解密
salt在c++保存,取sha256
iv在文件中保存,需要另外一个工具生成文件内容,游戏程序只读文件。

工具默认规则为生成128位长度字符,按奇数1、3、5位把base64后的iv字符串插入,插入完毕下一个奇数位,再补一个“=”

 


混淆方案:
1、dll对外没有直接加解密函数,只能按步骤调用
2、dll内部加解密有默认key\salt\iv,如果被人直接调用,不会出错
3、key\salt\iv保存在三个不同地方,组合在一起才能正确解密
4、函数定义和变量命名避免key\encrypt\decrypt等
5、unity最终使用IL2CPP编译

 

posted on 2020-04-23 09:45  凌度  阅读(2263)  评论(0编辑  收藏  举报