分成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編譯