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.xdnf.cn/news/1410795.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

STM32入门_江协科技_3~4_OB记录的自学笔记_软件安装新建工程

3. 软件安装 3.1. 安装Keil5 MDK 作者的资料下载的连接如下:https://jiangxiekeji.com/download.html#32 3.2. 安装器件支持包 因为新的芯片层出不穷,所以需要安装Keil5提供的器件升级版对软件进行升级,从而支持新的芯片;如果不…

JSP语法——[JSP]7

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

SVM单类异常值检测

SVM是一种广泛使用的分类器,通常用于二分类或多分类问题。然而,在异常点检测的场景中,我们通常会将数据视为一个类别(即正常数据点),并尝试找到那些与正常数据点显著不同的点(即异常点&#xff…

基础IO认识

回顾文件 我们之前认识文件只是在语言程度上理解&#xff0c;但是我们理解的不够彻底&#xff0c;要想真正理解文件要在os上理解。 简单代码认识 1 #include<stdio.h>2 int main(){3 FILE* fpfopen("log.txt","w");4 if(fpNULL){5 p…

PG实例连接访问控制

实例访问控制可以控制来自于不同主机&#xff0c;不同用户是否允许访问指定的数据库&#xff0c;以及验证方式。 与oracle中的连接管理器的功能相同&#xff0c;之前有写过一篇oracleCMAN连接管理器的配置实操&#xff1a; 配置oracle连接管理器&#xff08;cman&#xff09;…

CAN标准帧和扩展帧

1、CAN总线有两个ISO国际标准&#xff1a; ISO11519和ISO11898。 1)、ISO11519定义低速CAN通信标准&#xff1a;通信速率为10&#xff5e;125Kbps&#xff0c;属于开环总线&#xff1b; 传输速率为40Kbps时&#xff0c;总线长度可达1000米&#xff1b; 低速CAN是一个“开环网络…

Linux 麒麟系统安装

国产麒麟系统官网地址&#xff1a; https://www.openkylin.top/downloads/ 下载该镜像后&#xff0c;使用VMware部署一个虚拟机&#xff1a; 完成虚拟机创建。点击&#xff1a;“开启此虚拟机” 选择“试用试用开放麒麟而不安装&#xff08;T&#xff09;”&#xff0c;进入op…

同步互斥问题模型

目录 一. 生产者-消费者问题二. 多生产者-多消费者问题三. 吸烟者问题四. 读者-写者问题五. 哲学家进餐问题 \quad 一. 生产者-消费者问题 \quad 问题分析 \quad 如何实现 \quad \quad V操作不会导致进程阻塞&#xff0c;因此两个v操作顺序可以交换。 \quad 二. 多生产者-多消费…

[答疑]Eric Evans这样画是真不懂还是有特别考虑

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 albert 2024-5-2 10:14 您觉得Evans这样画是真不懂还是有特别的考虑&#xff1f; &#xff08;补注&#xff1a;指的是“《领域驱动设计》里的这个不变式是不是也是错的”中提到的图…

重看Spring聚焦BeanDefinition分析和构造

目录 一、对BeanDefinition的理解 &#xff08;一&#xff09;理解元信息 &#xff08;二&#xff09;BeanDefinition理解分析 二、BeanDefinition的结构设计分析 &#xff08;一&#xff09;整体结构体会 &#xff08;二&#xff09;重要接口和类分析 三、构造 BeanDef…

16、ESP32 Web

Web 服务器具有移动响应能力&#xff0c;可以使用本地网络上的任何设备作为浏览器进行访问。 示例功能&#xff1a; 构建 Web 服务器控制连接到 ESP32 的 LED在本地网络的浏览器上输入 ESP32 IP 地址访问 Web 服务器通过单击 Web 服务器上的按钮&#xff0c;更改 LED 状态 //…

triton之normalization教程

一 前向 在上式中,x是代表一个tensor import torchimport triton import triton.language as tltry:# This is https://github.com/NVIDIA/apex, NOT the apex on PyPi, so it# should not be added to extras_require in setup.py.import apexHAS_APEX = True except Module…

怎样通过Java语言实现远程控制8路控制器/断路器

怎样通过Java语言实现远程控制8路控制器/断路器呢&#xff1f; 本文描述了使用Java语言调用HTTP接口&#xff0c;实现控制8路控制器/断路器&#xff0c;支持8路输出&#xff0c;均可独立控制&#xff0c;可接入各种电器。 可选用产品&#xff1a;可根据实际场景需求&#xff0…

zabbix监控Tongweb7企业版(by lqw+sy)

此贴参考zabbix通过jmx监控Tongweb7企业版&#xff08;by lqw&#xff09;&#xff0c;是在此帖子的基础和同事整理的文档基础上重新部署验证的优化版&#xff0c;使用的是centos7。 优点&#xff1a; 1.不需要通过jmx配置进行监控。&#xff08;jmx配置需要修改tongweb的配置…

前端基础学习html(1)

1.标题标签.h1,h2...h6 2.段落标签p 换行标签br 3.加粗strong(b) /倾斜em(i) /删除 del(s) /下划线ins(u) 4.盒子&#xff1a;div //一行一个 span//一行多个 5.img :src alt title width height border 图片src引用&#xff1a;相对路径 上级/同级/中级 绝对路径&#xff…

【CTF-Crypto】修复RSA证书入门汇总

证书修复 文章目录 证书修复基础知识Truncated 1Truncated 2Jumbled 基础知识 为什么要引入证书&#xff1f; 在正常题目中&#xff0c;大部分直接给出了数字&#xff0c;但是数字在现实世界中传输不稳定&#xff0c;容易在某处出现错误&#xff0c;所以我们将所有的数字信息…

移动机器人系统与技术:自动驾驶、移动机器人、旋翼无人机

这本书全面介绍了机器人车辆的技术。它介绍了道路上自动驾驶汽车所需的概念。此外&#xff0c;读者可以在六足机器人的构造、编程和控制方面获得宝贵的知识。 这本书还介绍了几种不同类型旋翼无人机的控制器和空气动力学。它包括各种旋翼推进飞行器在不同空气动力学环境下的模…

【c++leetcode】35. Search Insert Position

问题入口 二分搜索 时间复杂度O(logn) class Solution { public:int searchInsert(vector<int>& nums, int target) {int start 0;int end nums.size() - 1;while (start < end){int mid (start end) / 2;if (nums[mid] target){return mid;}else if(nums…

【C++】1.贪心算法:零钱兑换的奇妙之旅

欢迎来CILMY23的博客 本篇主题为 贪心算法&#xff1a;零钱兑换的奇妙之旅 个人主页&#xff1a;CILMY23-CSDN博客 个人专栏&#xff1a; Python | C | C语言 | 数据结构与算法 上一篇C博客&#xff1a;掌握C函数重载和引用开启代码优化的新篇章 感谢观看&#xff0c;支…

电机控制器电路板布局布线参考指导(七)电流检测模块布局布线

电机控制器电路板布局布线参考指导&#xff08;七&#xff09;电流检测模块布局布线 1.高侧电流检测2.低侧电流监测3.两相和三相电流检测4.关键元器件选型要求5.布局6.布线7.工具设置8.输入和输出滤波9.注意事项 很多电机驱动器产品系列包括内置了电流感测功能的器件&#xff0…