当前位置: 首页 > article >正文

Frida调试il2cpp的程序打印原生c#对象为json

        主要的思路是,输入一个对象,那么使用反射的GetType,  然后使用type的GetFields, 拿到Field的列表,然后遍历field列表。 

      需要配合il2cpp原来程序里的一些json序列化的工具来进行,一般都可以找到,如下面的。MiniJSON.Json,像这个 Serialize到运行时对象就不行了。

// Namespace: MiniJSON
public static class Json // TypeDefIndex: 13713
{
	// Methods

	// RVA: 0x151A02C Offset: 0x151A02C VA: 0x151A02C
	public static object Deserialize(string json) { }

	// RVA: 0x151A1D4 Offset: 0x151A1D4 VA: 0x151A1D4
	public static string Serialize(object obj) { }
}

Field是一个抽象类的,这里我使用 RuntimeFieldInfo : RtFieldInfo里面的函数来实现。代码如下。

function dumpCsObject(base_addr , obj,MiniJsonSerialize)
{


    var GetType = new NativeFunction(ptr(base_addr).add(0x26433E8), "pointer", ["pointer"]);




    var GetFields = new NativeFunction(ptr(base_addr).add(0x261D450), "pointer", ["pointer"]);

    var t = GetType(obj);

    var fields = GetFields(t);


    var num = fields.add(0x18).readU64();
    var szRet = "{";
     for(var i=0;i<num;i++)
     {
        var FieldInfo = ptr(fields).add(0x20+i*8).readPointer();


        var GetValue = new NativeFunction(ptr(base_addr).add(0x25603F8), "pointer", ["pointer","pointer"]);

        var val = GetValue(FieldInfo,obj);

        var pVal= MiniJsonSerialize(val);
        var szJson = ptr(pVal).add(0x14).readUtf16String();
       var fn = FieldInfo.add(0x20).readPointer().add(0x14).readUtf16String();
        szRet = szRet + fn + ":" + szJson;
        if(num-1!=i)
        {
            szRet = szRet + ",";
        }

     }
     szRet = szRet + "}"

     return szRet;

}


http://www.kler.cn/a/505543.html

相关文章:

  • 闲谭SpringBoot--ShardingSphere分布式事务探究
  • Redisson
  • 【DB-GPT】开启数据库交互新篇章的技术探索与实践
  • VB.NET 正则表达式完全指南
  • <OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加
  • 音频语言模型与多模态体系结构
  • Qt 5.14.2 学习记录 —— 십이 QLineEdit、QTextEdit
  • win32汇编环境,窗口程序中组合框的应用举例
  • 如何将一个数组转换为字符串?
  • 01、kafka知识点综合
  • [Linux]Docker快速上手操作教程
  • LevelDB 源码阅读:如何优雅地合并写入和删除操作
  • 【MySQL学习笔记】MySQL存储过程
  • 通信与网络安全管理之ISO七层模型与TCP/IP模型
  • 计算机后端学习路径(精华版)
  • 仪式感在会员体系建设中的重要性及AI智能名片2+1链动模式S2B2C商城小程序的应用研究
  • 神经网络基础-网络优化方法
  • Lua调用C#
  • YOLOv11 OBB 任务介绍与数据集构建要求及训练脚本使用指南
  • Linux——进程信号
  • rust toml
  • 遥感图像滑坡分类数据集2773张2类别
  • mac下使用arthas分析工具报错
  • Nginx三种不同类型的虚拟主机(基于域名、IP 和端口)
  • VSCode连接Github的重重困难及解决方案!
  • Python入门教程丨2.3 流程控制、算法效率分析及优化