首页
社区
课程
招聘
[原创]如何修改unity HybridCLR 热更dll
发表于: 2022-12-22 14:27 32062

[原创]如何修改unity HybridCLR 热更dll

2022-12-22 14:27
32062

由于很多原因比如修bug、减小包体积、迅速更新,游戏需要使用到热更。

目前比较热门的热更方法,一种是使用lua,比如xlua、tolua之类的,还有一种是使用热更框架,比如HybridCLR、ILRuntime。

如何修改lua,已经有很多文章了,证明了使用lua被篡改是很简单的一件事。那么,热更框架就安全了吗?

项目地址:https://github.com/focus-creative-games/hybridclr

不得不说,通过阅读文档,这个框架是修改了il2cpp来实现的原生级热更,真的是很厉害。

原生的unity il2cpp是将游戏所有代码编译到libil2cpp.so,不会生成Assembly-CSharp.dll。

首先在github上拉取测试demo,并打包成apk,运行起来截图:

image-20221214142723805

我们可以看到游戏加载了热更的Assembly-CSharp.dll,并且输出hello,HybridCLR。

可以通过查找字符串“image can't be init again”来获取加载函数,找到这个函数并hook,就能将热更的dll dump下来,修改内容后并重新加载进去。

通过查找发现目标函数的偏移为0x66bbd0,获取到的dll内容为:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2022-12-22 14:30 被八重嘤编辑 ,原因:
收藏
免费 8
支持
分享
最新回复 (8)
雪    币: 10741
活跃值: (1501)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
很好,试了下这个脚本,可以
2022-12-23 17:15
0
雪    币: 3581
活跃值: (734)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
试了一下,脚本运行后游戏卡死,修改后就好了,谢谢分享。
2023-12-15 11:38
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
梨树生果 试了一下,脚本运行后游戏卡死,修改后就好了,谢谢分享。
老哥你修改的哪里啊?我也是卡死
2023-12-17 19:54
0
雪    币: 3581
活跃值: (734)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
逮虾户 老哥你修改的哪里啊?我也是卡死
找libil2cpp.so模块基地址那里有问题,卡死在循环了,换种方式找就OK了
2023-12-28 18:42
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
梨树生果 找libil2cpp.so模块基地址那里有问题,卡死在循环了,换种方式找就OK了
老哥求一份脚本,xx
2024-3-13 21:03
0
雪    币: 925
活跃值: (2957)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
7
dnspy简单修改个字符串或者返回值还行。改逻辑就不行了。 替换dll这个思路我验证过ilruntime,也是热更新。只能玩玩demo。 不过,还是感谢分享。
2024-3-18 20:05
0
雪    币: 198
活跃值: (240)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢大佬提供的思路,大佬牛逼,膜拜
2024-4-20 17:37
0
游客
登录 | 注册 方可回帖
返回
//