首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
Android安全
发新帖
27
7
[原创]frida-il2cpp-bridge使用
发表于: 2025-2-22 17:21
10721
[原创]frida-il2cpp-bridge使用
小童net
2025-2-22 17:21
10721
# 关于附加/改写/使用/原理  我:这是原理  我:这是案例,接下来我给你一个BuildCSMsg的原型   我:你这个拿到的附加是不打印object内容的是吧 我:例如返回对象是类 我:或者 参数是类 他是不打印的  他:对 得到的是这样的 我:还是这个函数原型  我:他是这样的 返回值的net.CSPkg。是一个类 那么就不会打印。 我:所以我们要重写这个方法。  我:再给你看一下net.CSPkg的原型  我:假如不想一个个去对比字段,那我们该怎么拿到全部字段名称  他:有点困难了。 我:根据类型判断啊。value = 某Obj.field('name').vue 他:如果是这种,ecm是一个枚举类型。system.object 是obj  他:这样写,为什么连参数都没打印呢  我:打印一下方法是否拿到了  他:确实可以  他:怪了,又不给输出了。  我:那就是没走这个函数?怎么确定走没走 附加整个类就行了  他:太强了,哥。就是这个 # 关于万能打印函数    我:所以不管get 还是 set 之后 你动能拿到当前实例的 有了当前实例 我:你就可以 this.method("set_x", 1).invoke(666); 他:就是这样。既然如此,我应该可以改这个数值,达到瞬移的效果。如果服务器没校验的话。  他: 这个万能打印函数要放到哪里?这样嘛  我:我是放到外层的  ``` /** * 获取Il2Cpp的实例化对象的值 * * @param objValue 对象 * @returns 对象的值字符串 */ function get2cppObjectValue(objValue: Il2Cpp.Object | Il2Cpp.ValueType | NativePointer): string { try { // 检查是否为空 if (!objValue || objValue == null || objValue == undefined || typeof objValue != "object" || objValue.isNull()) { if (typeof objValue === "string") { return objValue; } else if (typeof objValue === "number") { return objValue; } return ""; } // 如果是指针类型,那么转换成对象 if (objValue instanceof NativePointer) { objValue = new Il2Cpp.Object(objValue); if (!objValue || objValue.isNull()) { return ""; } } const clz = objValue instanceof Il2Cpp.Object ? objValue.class : objValue instanceof Il2Cpp.ValueType ? objValue.type.class : null; if (!clz || clz == null || clz == undefined || clz.isNull()) { return ""; } // 最终字符串 let jsonStr = "{" + "\"" + clz.name + "\":{"; const readNativeIterator = (block) => { const array = []; const iterator = Memory.alloc(Process.pointerSize); let handle = block(iterator); while (!handle.isNull()) { array.push(handle); handle = block(iterator); } return array; } // 开始逐个字段获取值 const fields = readNativeIterator(_ => Il2Cpp.api.classGetFields(clz.handle, _)).map(_ => new Il2Cpp.Field(_).withHolder(objValue)) let lastNum = 0; fields.forEach((field: Il2Cpp.Field) => { const fieldName = field.name; const fieldType = field.type; const fieldValue = field.value; // 如果是空值,那么跳过 if (fieldValue == null || fieldValue == undefined || (fieldValue instanceof Il2Cpp.Object && fieldValue.isNull())) { return; } // 如果是对象,那么递归获取 if (fieldValue instanceof Il2Cpp.Object) { jsonStr += "\"" + fieldName + "\":" + get2cppObjectValue(fieldValue) + ","; } else if (fieldType.typeEnum == Il2Cpp.Type.enum.string) { jsonStr += "\"" + fieldName + "\":" + fieldValue + ","; } else if (fieldType.typeEnum == Il2Cpp.Type.enum.array) { jsonStr += "\"" + fieldName + "\":["; if (lastNum > 0) { for (let i = 0; i < lastNum; i++) { if (i >= fieldValue.length) { break; } const value = fieldValue.get(i); if (value == null || value == undefined || value.toString() == "null") { continue; } jsonStr += get2cppObjectValue(value) + ","; } jsonStr = jsonStr.substring(0, jsonStr.length - 1); } jsonStr += "],"; } else { if (typeof fieldValue === "number") { lastNum = fieldValue; } if (fieldValue.toString() === "") { jsonStr += "\"" + fieldName + "\":\"\","; } else { // 如果是普通类型,那么直接获取值 jsonStr += "\"" + fieldName + "\":" + fieldValue + ","; } } }); jsonStr = jsonStr.substring(0, jsonStr.length - 1); jsonStr += "}}"; return jsonStr; } catch (e: any) { console.error("Il2CppMethod getObjectValue Error =>", e.stack); } return ""; }; ``` 他:牛逼 哥。真可以了。  我:角色信息都有了,登录包都出来了,必是这个了 剩下的就是进ida分析代码了
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
#逆向分析
#协议分析
收藏
・
27
点赞
・
7
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
unxeer
你的分享对大家帮助很大,非常感谢!
2026-7-16 15:25
mb_jepgtozh
这个讨论对我很有帮助,谢谢!
2026-1-17 19:13
naihes
为你点赞!
2025-10-1 21:36
xianyuuuan
+1
你的分享对大家帮助很大,非常感谢!
2025-4-1 20:49
你瞒我瞒
你的帖子非常有用,感谢分享!
2025-2-25 11:28
R0g
+1
这个讨论对我很有帮助,谢谢!
2025-2-24 10:54
sinker_
感谢你分享这么好的资源!
2025-2-22 17:41
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
9
)
陈可牛
雪 币:
6559
活跃值:
(6677)
能力值:
( LV5,RANK:76 )
在线值:
发帖
3
回帖
111
粉丝
37
关注
私信
陈可牛
1
2
楼
早些看到了就不用那么辛苦捣鼓了
,感谢大佬的付出
2025-2-22 20:14
0
Imxz
雪 币:
112
活跃值:
(9405)
能力值:
( LV2,RANK:10 )
在线值:
发帖
6
回帖
750
粉丝
9
关注
私信
Imxz
3
楼
66666666666
2025-2-23 12:08
0
R0g
雪 币:
2211
活跃值:
(7795)
能力值:
( LV7,RANK:100 )
在线值:
发帖
4
回帖
153
粉丝
193
关注
私信
R0g
2
4
楼
我:咋没早点发现
2025-2-24 10:55
0
院士
雪 币:
7145
活跃值:
(7644)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
261
粉丝
5
关注
私信
院士
5
楼
先收藏,慢慢学。
2025-2-24 12:46
0
暴强
雪 币:
29
活跃值:
(1834)
能力值:
( LV2,RANK:10 )
在线值:
发帖
42
回帖
181
粉丝
5
关注
私信
暴强
6
楼
这个好
2025-2-24 18:24
0
koflfy
雪 币:
102
活跃值:
(4071)
能力值:
( LV4,RANK:50 )
在线值:
发帖
8
回帖
480
粉丝
5
关注
私信
koflfy
1
7
楼
mark
2025-3-11 22:18
0
wx_范迪塞尔
雪 币:
5
活跃值:
(4470)
能力值:
( LV2,RANK:10 )
在线值:
发帖
21
回帖
127
粉丝
6
关注
私信
wx_范迪塞尔
8
楼
感谢分享
2025-3-28 18:02
0
xifgg
雪 币:
0
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
95
粉丝
0
关注
私信
xifgg
9
楼
666
2025-6-26 18:28
0
naihes
雪 币:
5
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
1
粉丝
0
关注
私信
naihes
10
楼
很好的贴子,感谢你的教程
2025-10-1 21:37
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
小童net
13
发帖
30
回帖
10
RANK
关注
私信
他的文章
[原创]frida-il2cpp-bridge使用
10721
[求助]Frida 附加的时候出错
1908
[求助]C#ProtoBuf反序列化求助
5790
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部