obsidian/笔记文件/2.笔记/Qt_Unity_PC_SDK总结_第五章.md
2025-03-26 00:02:56 +08:00

125 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

循例设置,项目编译
![[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]]