XYCTF2024 RE ez unity 复现

dll依然有加壳

但是这次global-metadata.dat也加密了,原工具没办法用了,不过依然是可以修复的

a. 法一:frida-il2cpp-bridge

可以用frida-il2cpp-bridge

GitHub - vfsfitvnm/frida-il2cpp-bridge: A Frida module to dump, trace or hijack any Il2Cpp application at runtime, without needing the global-metadata.dat file.

记frida-il2cpp-bridge的使用-CSDN博客

一定要用第二种方法编译,不然那后面的脚本不好注入

(编译找不到python包就放到C盘去)

  • npm run watch 启动编译

{"main": "index.ts","scripts": {"prepare": "npm run build","watch": "frida-compile index.ts -w -o hook.js"},"dependencies": {"frida-il2cpp-bridge": "^0.8.5"}
}

脚本写在这里

import "frida-il2cpp-bridge";Il2Cpp.perform(() => {console.log(Il2Cpp.unityVersion);Il2Cpp.dump("dump.cs", "./")
});

hook.js会自动生成

启动ez unity.exe

然后cmd命令注入,pid号可以在任务管理器查看

frida -l C:\frida-il2cpp-bridge\hook.js -p 4572

dump.cs就会保存在exe同目录下

搜索Assembly-CSharp得到关键函数,注释里是相对虚拟地址(Relative Virual Address,RVA)

我们用IDA打开脱壳的GameAssembly.dll,IDA显示的都是虚拟地址(VA)

VA = Imagebase(基地址) + RVA

可以用CFF Explorer查一下

由此可以算出上面几个函数的VA,然后手动G跳转过去就可以找到函数,进行命名

不过字符串信息都在global-metadata.dat里,所以dll里也搞不到需要的参数(其实注释里能找到)

所以frida-il2cpp-bridge跟踪字符串

import "frida-il2cpp-bridge";
Il2Cpp.perform(() => {console.log(Il2Cpp.unityVersion); //打印出 Unity 游戏的版本const String = Il2Cpp.corlib.class("System.String");//从 Unity 游戏的 mscorlib(即 Unity 的 C# 运行库)中获取了 System.String 类的引用,//并将其存储在 String 常量中Il2Cpp.trace(true).classes(String).and().attach();//设置跟踪为启用状态 指定您想要跟踪的类 链式调用方法 启动跟踪
});

点击一下Check键

可以看到被调用的参数

这里应该是输入的加密和原密文的对比,所以得到密文 pNufkEIU9dHjKXYXWiFyrthHYFEfqJAWcPM/t8/zX1w=

然后追踪Check类

import "frida-il2cpp-bridge";
Il2Cpp.perform(() => {console.log(Il2Cpp.unityVersion);const AssemblyCSharp = Il2Cpp.domain.assembly("Assembly-CSharp").image //默认的 C# 脚本编译目标, 返回该程序集的实际内存镜像const Check = AssemblyCSharp.class("Check"); //查找该程序集中名为 Check 的类Il2Cpp.trace(true).classes(Check).and().attach();
});

点一下

key = "a216d5d34c2723f5", iv = "9f68268f755b1363"

也可以这样写

import "frida-il2cpp-bridge";
let ass = Il2Cpp.domain.assembly("Assembly-CSharp");
//从 Unity 游戏的 IL2CPP 运行时域中获取 Assembly-CSharp 程序集的引用
Il2Cpp.trace(true).assemblies(ass).and().attach();

(woc frida真好用)

b. 法二:global-metadata.dat解密

实际上是文件头被改了

先看看正常的文件头

改一下

跑一下(记得脱壳)

之后同baby unity恢复符号表

Check__AESEncrypt(input, StringLiteral_5611, StringLiteral_5124, 0i64)的参数点开来看看

因为都是明文存储的字符串,脚本添加的注释里可以找到AES的所有参数,然后同上用厨子解一下即可

c. 法三:CE的Mono dissector

【CheatEngine基础教程】四、Unity3D游戏《晚上nano好》修改实战 - 哔哩哔哩

附加进程后激活Mono并分析

函数符号表全看到了,地址是动态的没啥用,之后还是frida钩子分析参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Anaconda的环境快速迁移(目前windows,未来更新linux)

摘要: 日常办公经常需要在新机器上部署运行环境并进行代码调试,尤其是在AI迅速发展的今天,python已经成为了强有力的AI领域编程语言之一。为了方便对不同windows下python代码工程进行快速部署。本文主要从工具环境的安装、原环境的快速打包、…

数组操作push、pop、shift、unshift操作

这四个都是用来操作数组的,用于插入和删除元素 成对来说 push、pop都是从数组尾部操作(你看p开头的,就记住屁股就行了),分别是插入和弹出 let array [1,2,3,4,5,6] array.push(7) // 7 array // [1,2,3,4,5,6,7]push操作,数组从尾部插入,返回插入后数组的个数,改变了原数组…

【计算机毕业设计】基于SpringBoot+Vue智能停车计费系统设计与实现

目录 一、项目介绍 二、项目主要技术 三、系统功能结构设计 四、系统详细功能的实现 4.1 前台功能实现 4.2 管理员模块实现 4.3 用户后台模块实现 五、实现代码 一、项目介绍 该系统采用了java技术、SpringBoot 框架,连接MySQL数据库,具有较高…

代码随想录算法训练营第四十一天

昨天是摸鱼的一天&#xff0c;不过把电脑换了个位置&#xff0c;今天努力完成两天的任务&#xff0c;就可以玩啦&#xff01;&#xff01;加油&#xff01; 343. 整数拆分 我写的其实有点解释不通dp[0]和dp[1] class Solution { public:int integerBreak(int n) {vector<in…

Python queue使用方法

在Python中&#xff0c;queue 是一个提供线程安全队列操作的模块&#xff0c;它支持多种类型的队列&#xff0c;包括先进先出&#xff08;FIFO&#xff09;和后进先出&#xff08;LIFO&#xff09;。以下是如何使用 Python queue 模块的一些基本示例&#xff1a; 安装 通常情…

Flutter分模块开发、模块可单独启动、包含Provider

前言 目前Flutter都是在一个项目中&#xff0c;创建不同目录进行模块开发&#xff0c;我进行Android原生开发时&#xff0c;发现原生端&#xff0c;是可以将每个模块独立运行起来的&#xff0c;灵感来自这&#xff1b; 折腾了几天&#xff0c;终于给整出来了。 1、创建根目录…

QT7_视频知识点笔记_1_ 基础知识(帮助文档),窗口(内存回收机制),信号槽(传参),Lambda表达式

1.QT基础 QT是一个框架&#xff0c;不用像C语言自己从底层写&#xff0c;需要的功能可以先看是否QT库中有直接可使用的 帮助文档的使用&#xff1a;F1跳入帮助文档&#xff0c; QT中常用的类&#xff1a;比如QPushbutton&#xff0c;查看帮助文档则可知道对应的函数和解决方…

Node.js爬虫在租房信息监测与分析中的应用

在当今数字化时代&#xff0c;房地产市场的信息变化迅速&#xff0c;租房信息的获取和分析对于租房者和房东都至关重要。随着互联网技术的发展&#xff0c;利用爬虫技术来监测和分析租房信息已成为一种常见的做法。本文将探讨如何利用Node.js爬虫在租房信息监测与分析中的应用前…

我独自升级:崛起怎么下载 我独自升级游戏下载教程分享

定于5月8日全球揭幕的《我独自升级崛起》——一款扣人心弦的动作RPG巨制&#xff0c;灵感采撷于同名动画及网络漫画的热潮&#xff0c;誓将引领满怀热忱的玩家步入一场交织着深邃探索和宏大规模的奇妙冒险。该游戏立足于一个独树一帜的网络武侠宇宙&#xff0c;细腻刻画了一个凡…

git lfs的使用

git lfs的使用 git lfs install git lfs track "*.map4"git add ..gitattributes git add . git lfs ls-files详情看:https://zhuanlan.zhihu.com/p/146683392

学华为沟通,汇总5大项目沟通技巧

高效沟通在项目管理中的重要性不容小觑&#xff0c;它是确保项目顺利进行、提升团队协作效率、实现项目目标的关键因素。如果沟通不畅&#xff0c;往往容易导致成员对项目目标理解不一致&#xff0c;或信息传递不及时不准确&#xff0c;导致项目工作方向偏差&#xff0c;增加项…

什么是DMA? STM32如何配置DMA?

您好&#xff0c;我们一些喜欢嵌入式的朋友一起建立的一个技术交流平台&#xff0c;本着大家一起互相学习的心态而建立&#xff0c;不太成熟&#xff0c;希望志同道合的朋友一起来&#xff0c;抱歉打扰您了QQ群372991598 一、DMA简介 1、DMA简介 DMA(Direct Memory Access&a…

[Collection与数据结构] 七大排序算法汇总

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (90平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

Python查询PostgreSQL数据库

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; Python与PostgreSQL的连接 需要了解如何在Python中连接到PostgreSQL数据库。这通常涉及到使用一个库&#xff0c;如psycopg2&#xff0c;它是Python中用于PostgreSQL的最流行的适配器。安装psycopg2非常简单&#x…

好用的win10电脑桌面便利贴,桌面便签小工具

在日常办公中&#xff0c;我们经常需要记录重要事项、提醒任务或者临时想法。这时&#xff0c;一款好用的电脑桌面便签或便利贴小工具就显得尤为重要。它们能够帮助我们高效地管理信息&#xff0c;提升工作效率。 那么好用的win10电脑桌面便利贴是哪个呢&#xff1f;电脑桌面便…

oracle 8i系统检查

oracle 8i系统检查 set echo on spool d:\bk\1.txt select sysdate from dual; --版本信息 select * from v$version; --安装的产品 col PARAMETER for a50; col value for a10; select * from v$option order by 2; --用户信息 set linesize 100 set pagesize 100 COL USE…

SpringBoot集成阿里云短信验证码服务

一&#xff1a;前言 最近在项目开发过程中&#xff0c;需要去写一个发送手机短信验证码的功能。在网上查了一下&#xff0c;有很多服务器可供选择&#xff0c;本文的话是基于阿里云服务的短信验证码功能实现。 关于注册和开通服务这些需要操作的&#xff0c;请各位小伙伴参考官…

Sprd Android 13 增加系统属性判断当前有无 OTG U盘插入,App 读取系统属性

添加系统属性,通过监听插拔广播判断当前有无OTG U盘插入 --- a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -246,6 +246,7 @@ …

Burp和Proxifier抓包微信小程序

1、Burp设置代理 2、浏览器下载证书 3、安装证书 4、Proxifier设置代理 5、Proxifier设置Proxification Rule 6、Burp查看抓包数据 打开一个小程序&#xff0c;可以看到WeChatAppEx的流量先经过Proxifier&#xff0c;再经过127.0.0.1:8080到Burp

JL-31 管式墒情记录仪

产品概述 管式墒情记录仪能够针对不同土层的土壤水分含量进行动态观测&#xff0c;可以同时检测记录土壤温度和水壤水分的变化&#xff0c;采用分层设点的观测结构&#xff0c;地面配置一个温度观测点&#xff0c;地下土壤每隔10cm配置一个土壤温湿测点&#xff0c;观测相对应…