开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 364|回复: 17
收起左侧

[C#求助] 游戏逆向如何封装unity引擎游戏il2cpp API 让易语言能够调用DLL

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式   澳大利亚
先讲讲流程 最后再请教大佬
最近很火的冒险岛世界游戏 unity引擎 il2cpp编译
unity引擎游戏 不能使用常用的CE搜索内存方式来修改, 这样会找不到人物数组 怪物数组 游戏结构不一样
所以查了很多资料 , 和 UE4 类似 , dump下来。然后找类型 找API
因为很多功能CE查找很麻烦 也有加密, 手上有dump文件定位就比较简单了。 但是到了这里就有了分支
1.传统CE内存方式 就需要追基地址 使用CE X64DBG 一类工具 一旦加密 很难找到地址,
2.使用调用unity引擎 il2cpp API函数来实现一些功能 轻松定位unity游戏分类在内存的位置。但是需要调用 API
调用API的网上教程超级少,有教程都是C++ 编译 , 作为一个易语言使用者看不懂。
于是有了一个新思路, 接下来是
问题一: 求教各位大佬,是不是可以在VS2022 用C语言 编译好这些API 生成DLL 让易语言调用 ?
问题二: 游戏是64位,API 一些功能可能也是64位的读取, 如果封装成DLL 易语言能用吗?
问题三:我有在网上看见有人好像写出了易语言能使用的DLL 或者模块 如图中FindobiectType2 这个就是unity il2cpp API里面常见和图2C语言写法完全一样。 肯定是封装DLL 的 两张图片都是网络得来 ,都是遍历怪物数组写法 ,所以请教 是不是早就有写unity这类的DLL 或者模块了 有大佬有这个DLL 或者模块吗, 2D7PEF2_JWC_JYTXJ3JMT - 副本.png 1A0FBC6E1EA02877A83EE205711DB579.png

结帖率:97% (29/30)

签到天数: 8 天

发表于 昨天 19:42 | 显示全部楼层   广西壮族自治区柳州市
本帖最后由 IIIllIIl 于 2025-1-8 19:44 编辑
成梦 发表于 2025-1-8 14:43
还是没能懂 ,易语言是不能直接找C# 脚本类的吧 ,

可以找到啊,但是这游戏的GameObjectManager链表加密了,需要解密
不过FindObjectsOfType内部的hashset没加密,可以从这直接读出所有GameObject对象,然后遍历GameObject对象的组件数组找到脚本组件取出脚本类的实例,用我发的代码就可以取到类型信息用来判断是不是需要的类
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 14:43 | 显示全部楼层   澳大利亚
IIIllIIl 发表于 2025-1-8 03:00
对象地址 = xxxx

类型信息 = 读长整数(对象地址)

还是没能懂 ,易语言是不能直接找C# 脚本类的吧 ,
回复 支持 反对

使用道具 举报

结帖率:97% (29/30)

签到天数: 8 天

发表于 昨天 03:00 | 显示全部楼层   广西壮族自治区柳州市
成梦 发表于 2025-1-6 22:30
你发的是lua啊      能不能敲段列子

对象地址 = xxxx

类型信息 = 读长整数(对象地址)

类名地址 = 读长整数(类型信息 + 十六进制("10"))
命名空间地址 = 读长整数(类型信息 + 十六进制("18"))

类名 = 读字符串(类名地址)
命名空间 = 读字符串(命名空间地址)


你只要找到任意受托管对象的首地址就能这么取出类型信息
或者你直接CE定义结构展开看一下知道了
想知道具体定义可以去看il2cpp源码里的Il2CppClass
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 1 天

发表于 前天 23:28 | 显示全部楼层   安徽省六安市
本帖最后由 精益求精Cree 于 2025-1-7 23:30 编辑

0000000000000000000000000
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 23:27 | 显示全部楼层   澳大利亚
clm6068 发表于 2025-1-7 03:10
谢谢大佬的解答

在研究这个游戏 ?  要不要相互沟通下  相互学习
回复 支持 反对

使用道具 举报

发表于 前天 03:10 | 显示全部楼层   美国
谢谢大佬的解答
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层   澳大利亚
IIIllIIl 发表于 2025-1-6 21:24
我发的图里就有

你发的是lua啊      能不能敲段列子
回复 支持 反对

使用道具 举报

结帖率:97% (29/30)

签到天数: 8 天

发表于 3 天前 | 显示全部楼层   广西壮族自治区柳州市
成梦 发表于 2025-1-6 18:07
大佬请问  易语言读这样的类型  M0D.Core.MODEntityContext,MoD   应该怎么写。

我发的图里就有
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层   澳大利亚
气质征服一切 发表于 2025-1-6 09:48
问题一解答:易语言可以调用任何语言的dll,只不过需要根据不同的数据类型进行特殊处理。
问题二解答:x32 ...

大佬  所以 如果易语言  想要读  这样的内存类型名  M0D.Core.MODEntityContext,MoD   有什么实现方法吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表