obsidian/笔记文件/2.笔记/Qt_Unity_PC_SDK总结_第五章.md

125 lines
4.3 KiB
Markdown
Raw Permalink Normal View History

2025-03-26 00:02:56 +08:00
循例设置,项目编译
![[Pasted image 20240803160025.png]]
![[Pasted image 20240803160036.png]]
循例修改c++的版本然后设定编译路径还有引用俩pri子工程
![[Pasted image 20240803160431.png]]
来到main主函数引用的头文件还有一个define宏定义是用来生成加密文件的这里设定是"qiuqiu"
![[Pasted image 20240803160532.png]]
设定FileIOWMIC命名空间其中包含save保存函数是以wmic的设备指纹用来做加密的密钥配合define宏定义SECRET_IV生成加密文件WMIC.data即可
![[Pasted image 20240803160652.png]]
还包含read函数是解密和读取WMIC.data文件
这里分别包含debug和release两份数据
![[Pasted image 20240803225247.png]]
在WMIC命名空间中是把json数据体完成组装和数据保存再完成save和read相关的逻辑调用
![[Pasted image 20240803161004.png]]
main主函数入口在实例化测试窗口之前先调用save和read测试
![[Pasted image 20240803161121.png]]
确认是Release版本然后运行
![[Pasted image 20240803161204.png]]
窗体正常实例化,控制台打印,也是正常
![[Pasted image 20240803161250.png]]
可以看到,加密文件,创建也是正常的
![[Pasted image 20240803161419.png]]
然后把这个data文件拷贝到Unity.exe 游戏引擎,所在文件夹
![[Pasted image 20240803223230.png]]
回到dll.pro文件先确认是include了WMIC和OpenSSL子项目
![[Pasted image 20240803223452.png]]
core头文件先弄两个函数的重载分别是success和error的回调
![[Pasted image 20240803223734.png]]
源文件对应的重载函数逻辑实现是通过json数据体的传参data传递给result结果
需要注意的是返回码0代表成功-1代表异常和失败
![[Pasted image 20240803223827.png]]
需要对之前生成的加密数据进行解析引用对应的头文件还有宏定义SECRET_IV也对应上
![[Pasted image 20240803224257.png]]
Init初始化函数获取WMIC.data加密文件对应的目录路径如果不存在直接error返回即可参考[[获取Qt应用程序路径]]和[[qt判断文件是否存在]]
![[Pasted image 20240803224357.png]]
头文件加一个isDebug的布尔判断定义
![[Pasted image 20240803224552.png]]
源文件isDebug这个布尔变量是根据unity传递过来的布尔
进行设置然后通过decrypt函数对data数据体进行解密处理
这里的解密是基于WMIC的fingerprint函数也就是设备指纹进行解密每一台电脑都是独一无二的
解密后是根据isDebug这个布尔变量判断是返回debug还是release的json数据体之前生成的时候也是生成了两份数据的
![[Pasted image 20240803224643.png]]
回到Unity在测试脚本先把之前的isInit设置为private私有变量即可然后再新增一个私有静态布尔变量 isVerification作为信息验证的判断
![[Pasted image 20240803225428.png]]
然后新增一个序列化的CallBackSubData类其中包含密码、用户名是用来接受从qt传递过来的相关数据
![[Pasted image 20240803225601.png]]
再新增一个序列化的CallBackData类用来接受总的从qt传递过来的相关数据
![[Pasted image 20240803225659.png]]
注释掉最开始的Debug.Log打印
然后通过JsonUtility.FromJson的接口完成接收的json数据解析进而设定isVerification验证相关布尔值
![[Pasted image 20240803225823.png]]
保存修改,编译完成,运行游戏,可以看到,数据解析,是正常的
![[Pasted image 20240803230339.png]]
修改传递过去qt的布尔值如果是false
![[Pasted image 20240803230449.png]]
运行游戏可以看到就可以提取对应release的密码了
![[Pasted image 20240803230515.png]]
跟之前生成的数据,是一致的
![[Pasted image 20240803230622.png]]
如果把Unity.exe目录下的WMIC.data临时删掉再重新运行
![[Pasted image 20240803230701.png]]
就会提示验证异常了
![[Pasted image 20240803230733.png]]
从回收站还原,重新运行游戏,会恢复正常
![[Pasted image 20240803230810.png]]
![[Pasted image 20240803230907.png]]