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

4.3 KiB
Raw Permalink Blame History

循例设置,项目编译

!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