Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

关于Legacy License移除后的验证逻辑重构 #78

Closed
Soneoylys opened this issue Oct 18, 2022 · 62 comments
Closed

关于Legacy License移除后的验证逻辑重构 #78

Soneoylys opened this issue Oct 18, 2022 · 62 comments

Comments

@Soneoylys
Copy link
Contributor

在2022.2以上版本的Editor中, Legacy License认证逻辑似乎被完全移除了, 是否应该考虑通过手动还原被移除的函数的方式来恢复破解的可能性; 而或是寻找其他可行方案?

@tylearymf
Copy link
Owner

在2022.2以上版本的Editor中, Legacy License认证逻辑似乎被完全移除了, 是否应该考虑通过手动还原被移除的函数的方式来恢复破解的可能性; 而或是寻找其他可行方案?

还原被移除的函数,这个是不可能的了,只能花点时间慢慢找对应的函数了,目前是能破解进去Unity了,但是显示不是Pro版本的,所以后面有空我再看看了

@Soneoylys
Copy link
Contributor Author

还原被移除的函数,这个是不可能的了,只能花点时间慢慢找对应的函数了,目前是能破解进去Unity了,但是显示不是Pro版本的,所以后面有空我再看看了

感谢回复, 方便提供大致查找思路吗 例如自检的具体函数名, 我有时间也可以顺着尝试找找看

@tylearymf
Copy link
Owner

@Soneoylys
Copy link
Contributor Author

@Soneoylys https://wwt.lanzouv.com/iNIWF0e3ymti

谢谢您的资料, 使用x64dbg这种调试工具确实比用Hopper或Ghidra进行静态分析更方便
在尝试修改了2022.2.0b9及2022.2.0b11后, 发现貌似并不能成功启动Patch过的文件, 以下是两个版本的具体表现
b9版本仍尝试唤起Licensing Client, 之后自动结束进程, Editor同时自行退出
b11版本跳出错误窗口后迅速结束进程, 但没有尝试启动Licensing Client
已经确认所修改的Hex正确且没有offset错误 以上两个错误结束速度太快以至于无法抓到断点进行分析

我的时区在-8 可能无法及时回复issue, 如果我有进一步的发现 将在这里追加信息

@tylearymf
Copy link
Owner

@Soneoylys https://wwt.lanzouv.com/iNIWF0e3ymti

谢谢您的资料, 使用x64dbg这种调试工具确实比用Hopper或Ghidra进行静态分析更方便 在尝试修改了2022.2.0b9及2022.2.0b11后, 发现貌似并不能成功启动Patch过的文件, 以下是两个版本的具体表现 b9版本仍尝试唤起Licensing Client, 之后自动结束进程, Editor同时自行退出 b11版本跳出错误窗口后迅速结束进程, 但没有尝试启动Licensing Client 已经确认所修改的Hex正确且没有offset错误 以上两个错误结束速度太快以至于无法抓到断点进行分析

我的时区在-8 可能无法及时回复issue, 如果我有进一步的发现 将在这里追加信息

忘了跟你说了,要手动将 Editor\Data\Resources\Licensing\Client\Unity.Licensing.Client.exe 改名为 Unity.Licensing.Client.exe.bak 再断点调试。

@Soneoylys
Copy link
Contributor Author

忘了跟你说了,要手动将 Editor\Data\Resources\Licensing\Client\Unity.Licensing.Client.exe 改名为 Unity.Licensing.Client.exe.bak 再断点调试。

已经修改成功, 静态分析后发现读入Pro的验证逻辑似乎使用了栈里的内容, 正在考虑是否是Licensing Client传入的
此外, 如果栈中有Licensing Client启动后生成的"脏数据", Editor似乎会直接Crash, 可能也是上面提到函数的问题
具体表现为修改后仍无法启动, 直到系统进行完全重启

@tylearymf
Copy link
Owner

忘了跟你说了,要手动将 Editor\Data\Resources\Licensing\Client\Unity.Licensing.Client.exe 改名为 Unity.Licensing.Client.exe.bak 再断点调试。

已经修改成功, 静态分析后发现读入Pro的验证逻辑似乎使用了栈里的内容, 正在考虑是否是Licensing Client传入的 此外, 如果栈中有Licensing Client启动后生成的"脏数据", Editor似乎会直接Crash, 可能也是上面提到函数的问题 具体表现为修改后仍无法启动, 直到系统进行完全重启

目前我清楚的是:LicensingClient与Unity间的通讯是明文的json数据,可以看看SendRequest这个函数,不过貌似有保护,我想的是直接hook掉这个函数 licensing::Module::HasEntitlements,让其默认返回一个固定结构对象,但是目前还不清楚EntitlementResultMap里面的结构

@Soneoylys
Copy link
Contributor Author

目前我清楚的是:LicensingClient与Unity间的通讯是明文的json数据,可以看看SendRequest这个函数,不过貌似有保护,我想的是直接hook掉这个函数 licensing::Module::HasEntitlements,让其默认返回一个固定结构对象,但是目前还不清楚EntitlementResultMap里面的结构

是否应该考虑从Licensing Client入手? 导入debug后发现网络上报验证许可证的操作, 或许可以在关闭证书检查后通过网络重放跳过检查下发正确的json, 使用的证书类型是RSA4096, 加密方案是SHA384, 域名硬编码进了Binary, hook这个也许更方便

@tylearymf
Copy link
Owner

目前我清楚的是:LicensingClient与Unity间的通讯是明文的json数据,可以看看SendRequest这个函数,不过貌似有保护,我想的是直接hook掉这个函数 licensing::Module::HasEntitlements,让其默认返回一个固定结构对象,但是目前还不清楚EntitlementResultMap里面的结构

是否应该考虑从Licensing Client入手? 导入debug后发现网络上报验证许可证的操作, 或许可以在关闭证书检查后通过网络重放跳过检查下发正确的json, 使用的证书类型是RSA4096, 加密方案是SHA384, 域名硬编码进了Binary, hook这个也许更方便

Client好像加了vm保护,你可以试试能不能改

@Soneoylys
Copy link
Contributor Author

Client好像加了vm保护,你可以试试能不能改

是的 看起来被摆了一道, 我尝试用Debugger找OEP, 但是被Kernal32的一个Detect Debugger方法给弹出去了, 有个百试百灵的方法是用QEMU+GDB, 不过看样子这个Client主程序唤起了其他线程, 如果去追的话还要考虑Dump出的内存里存在太多无用数据查找麻烦的问题, 误判了工作量, 这样看起来还是继续追现成的函数相对没那么复杂

@Soneoylys
Copy link
Contributor Author

还原被移除的函数,这个是不可能的了,只能花点时间慢慢找对应的函数了,目前是能破解进去Unity了,但是显示不是Pro版本的,所以后面有空我再看看了

找到一个新问题, 在导入Package的时候, Package Manager会提示 "The following packages were not registered because your license doesn't allow it." 目前暂未找到解决方案, 考虑是因为未找到license时无法安装任何Package

@tylearymf
Copy link
Owner

还原被移除的函数,这个是不可能的了,只能花点时间慢慢找对应的函数了,目前是能破解进去Unity了,但是显示不是Pro版本的,所以后面有空我再看看了

找到一个新问题, 在导入Package的时候, Package Manager会提示 "The following packages were not registered because your license doesn't allow it." 目前暂未找到解决方案, 考虑是因为未找到license时无法安装任何Package

是的,需要在某个地方填充个license数据进去

@kxn
Copy link

kxn commented Dec 10, 2022

忘了跟你说了,要手动将 Editor\Data\Resources\Licensing\Client\Unity.Licensing.Client.exe 改名为 Unity.Licensing.Client.exe.bak 再断点调试。

已经修改成功, 静态分析后发现读入Pro的验证逻辑似乎使用了栈里的内容, 正在考虑是否是Licensing Client传入的 此外, 如果栈中有Licensing Client启动后生成的"脏数据", Editor似乎会直接Crash, 可能也是上面提到函数的问题 具体表现为修改后仍无法启动, 直到系统进行完全重启

目前我清楚的是:LicensingClient与Unity间的通讯是明文的json数据,可以看看SendRequest这个函数,不过貌似有保护,我想的是直接hook掉这个函数 licensing::Module::HasEntitlements,让其默认返回一个固定结构对象,但是目前还不清楚EntitlementResultMap里面的结构

一般来说如果遇到有保护,可以去看看mac版本的静态逆向,也许能做个 fake client ?

@Soneoylys
Copy link
Contributor Author

目前我清楚的是:LicensingClient与Unity间的通讯是明文的json数据,可以看看SendRequest这个函数,不过貌似有保护,我想的是直接hook掉这个函数 licensing::Module::HasEntitlements,让其默认返回一个固定结构对象,但是目前还不清楚EntitlementResultMap里面的结构

一般来说如果遇到有保护,可以去看看mac版本的静态逆向,也许能做个 fake client ?

我对静态分析Client不报乐观态度, 不过如果用QEMU+GDB打断点找OEP之后脱壳出VMP的话, 也许可以试试看
不过如果脱壳了之后我是更倾向于直接改而不是逆向通信协议
在没有脱壳的情况下要去逆向通信协议是比现有思路更困难的

@kxn
Copy link

kxn commented Dec 10, 2022

所以说去看 mac 版本的, win 下面保护的手段太多了。 mac 版本因为他自己的一些特性,符号没法 strip 干净,加壳大概率也不会有,当然我确实没有自己去看过。。

@AfarMiss
Copy link

之前我修改之前的版本方式是修改UnityConnect::Get()+0x64A1 SetILicensing为Legacy
WinMain->ILicensing::BootstrapLicensing->InitializeModule_Licensing->SetILicensing

因为不清楚EntitlementResultMap结构
所有调用Licensing::Module::HasEntitlementsInternal的地方返回的EntitlementResultMap
ecx+0x50改为1
注意ILicensing::EntitlementResultMap::operator[]也要修改
但是只能跳过许可证无效,显示并非pro版

理论知道EntitlementResultMap的情况下在源头修改即可为pro版

@tylearymf
Copy link
Owner

之前我修改之前的版本方式是修改UnityConnect::Get()+0x64A1 SetILicensing为Legacy WinMain->ILicensing::BootstrapLicensing->InitializeModule_Licensing->SetILicensing

因为不清楚EntitlementResultMap结构 所有调用Licensing::Module::HasEntitlementsInternal的地方返回的EntitlementResultMap ecx+0x50改为1 注意ILicensing::EntitlementResultMap::operator[]也要修改 但是只能跳过许可证无效,显示并非pro版

理论知道EntitlementResultMap的情况下在源头修改即可为pro版

嗯,谢谢你的修改思路。

@jiongge
Copy link

jiongge commented Jan 18, 2023

qq群有个网友说的,我是不懂,看看是不是新思路,我看他用的2022.2.1f1就是pro:2022.2的破解方法很简单的,其实就是dll的破解,验证都放在unityhub,unityhub又依赖unitylicenseclient.exe,找到dll关键的验证是否有效证书的函数,把里面false全改成true就好了

@soft2005168
Copy link

也就是说安装新版本就必须安装unityhub了吗

@tylearymf
Copy link
Owner

也就是说安装新版本就必须安装unityhub了吗

hub本来就很好用呀,为啥不装

@GaaraZhaoUnity
Copy link

2021.3.19f1也已经不能破解了。

@CODING-GHOST
Copy link

2021.3.19f1也已经不能破解了
好像真的是哦

@GaaraZhaoUnity
Copy link

新的一版4.3可以2021.3.19f1了

@truethor
Copy link

能不能通过修改 Licensing.Client 返回一个可以通过验证的数据,或者两边配合一下有没有希望?

@soft2005168
Copy link

2022.2.x和2023.x版本可以了吗

@agiknight
Copy link

agiknight commented Mar 11, 2023

2020.3.46,2020.3.45启动失败

@tylearymf
Copy link
Owner

2020.3.46,2020.3.45启动失败

嗯,晚点发个版本

@tylearymf
Copy link
Owner

2022.2.x和2023.x我有破解方案 让其可以加载许可证

细说

@tylearymf
Copy link
Owner

21 这样

这么牛,有意愿分享吗

@tylearymf
Copy link
Owner

GIF完全正常使用

666

@grapefruitlips
Copy link

YueWangChen, 请分享破解方法

@AfarMiss
Copy link

AfarMiss commented Apr 3, 2023

GIF 2023-3-31 14-24-04 GIF 2023-3-31 14-24-04 Unbuntu 中国版2022.2.12f1c1破解正常

6

@iisgy2016
Copy link

大佬这么多,有人能分享下?

@MemoChen
Copy link

MemoChen commented Apr 6, 2023

动图 2023-3-31 14-24-04 GIF 2023-3-31 14-24-04 Unbuntu 中国版2022.2.12f1c1破解正常
大佬可以分享一下吗,学习学习

@scc172fly
Copy link

怎么这么久了还没更上来呀?中国版Unity都能破了?这么牛逼的么?

@soft2005168
Copy link

什么时候更新一下破解呢,这么多高手在这里留言

@lileifree
Copy link

个人觉得像@YueWangChen这样只截图不分享方法的,可以ignore了,没什么实际的作用。

@williambrkn
Copy link

个人觉得像@YueWangChen这样只截图不分享方法的,可以ignore了,没什么实际的作用。

他只是拿群里的截图来炫耀下,又不是他破解的,他也很急等着群里的大佬放出呢

@zhcrxn
Copy link

zhcrxn commented Apr 10, 2023

大家都等等吧,现在破解版放出来了过几天验证方式又变了,那不是白忙活了,过段时间稳定了肯定有人放,今天我也知道破解方法了,功能都没问题,其实破解方法很简单

@soft2005168
Copy link

我看大家都折服了

@soft2005168
Copy link

我们力挺你@YueWangChen

@mGameStudio
Copy link

@YueWangChen 兄弟,牛逼!吓到我了,下载下来2.28个G,什么都包含了!一句话,把大家都整不会了。

专业!这就是专业~!

@agentbillwh
Copy link

Try this patch: https://github.com/agentbillwh/unilic

@JianjianGit
Copy link

2022.3 lts都出来了,啥时候支持一下

@sunsvip
Copy link

sunsvip commented Jun 6, 2023

20230606164134

用楼上大佬的Uni-HubHacker确实有效。但是那老哥提供的各个版本文件太多了,实际上只需要3个对应版本的文件, 需手动操作。他的破解思路跟UniHacker不同,改的是License验证工具里的System.Security.Cryptography.Xml.dll,没动Unity.exe. 如果UniHacker作者借鉴一下思路做成自动化就完美了

@WoolBRKIN
Copy link

20230606164134

用楼上大佬的Uni-HubHacker确实有效。但是那老哥提供的各个版本文件太多了,实际上只需要3个对应版本的文件, 需手动操作。他的破解思路跟UniHacker不同,改的是License验证工具里的System.Security.Cryptography.Xml.dll,没动Unity.exe. 如果UniHacker作者借鉴一下思路做成自动化就完美了

20230606164134

用楼上大佬的Uni-HubHacker确实有效。但是那老哥提供的各个版本文件太多了,实际上只需要3个对应版本的文件, 需手动操作。他的破解思路跟UniHacker不同,改的是License验证工具里的System.Security.Cryptography.Xml.dll,没动Unity.exe. 如果UniHacker作者借鉴一下思路做成自动化就完美了

你好,个人在家里用的话会有封号风险吗

@sunsvip
Copy link

sunsvip commented Jun 9, 2023

我没登录UnityHub,破解后正常使用

@Soneoylys
Copy link
Contributor Author

Issue关闭, 需要重构license inject方案
Refer to #198

@shiroinekotfs
Copy link

Can someone upload C:\ProgramData\Unity\Unity_lic.ulf for Unity 2022 and later?

@hackeranmol
Copy link

@YueWangChen

https://github.com/YueWangChen/Uni-HubHacker

Why page delete ?

We need you brother ?

@guolijun110
Copy link

求2022.3的方法

@shaoy1234567
Copy link

https://github.com/parhelia512/Uni-HubHacker

@soft2005168
Copy link

@YueWangChen,你在哪里呢,页面怎么找不见了

@jiakuaibu
Copy link

https://github.com/parhelia512/Uni-HubHacker

not working for me. i tried unity 2022.3.5 and 2022.3.8, none of them works.

@gbgabyte
Copy link

有最新的破解进展吗?

@JianjianGit
Copy link

JianjianGit commented Nov 14, 2023 via email

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests