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

【Unity逆向】玩游戏遇到的“飞天锁血”是怎么实现的?

在这里插入图片描述

文章目录

  • 前言
    • 什么是外挂?
    • 锁血瞬移都是怎么做的?
    • Unity引擎的致命缺陷是什么?
    • WEB入侵如何做到?
  • Unity外挂攻防概述
    • 典型游戏
    • 现实应用
    • Unity开发流程
    • Unity工作界面
    • 打包发布方式
  • Mono
    • Mono跨平台原理
      • JIT方式
    • 优点:
      • 因此后期Unity发布了il2CPP
    • Mono打包目录结构
    • 逆向流程
  • IL2CPP
    • AOT方式
    • 特点
    • 打包目录结构
    • 逆向流程

前言

什么是外挂?

锁血瞬移都是怎么做的?

Unity引擎的致命缺陷是什么?

WEB入侵如何做到?

就是先用kali扫一下,手机信息。根据开了什么端口等等来判断如何去做,是不是可以直接弱口令。

Unity外挂攻防概述

在这里插入图片描述

典型游戏

王者荣耀
原神
永劫无界
明日方舟
森林之子

现实应用

工程建设与数字城市
汽车开发

Unity开发流程

创建项目
导入资源
搭建场景
添加组件
编写逻辑
程序测试
打包发布

Unity工作界面

在这里插入图片描述
在这里插入图片描述

打包发布方式

两种脚本后端
Mono
IL2CPP(最近常用)

Mono

Mono 是跨平台的 .Net Framework 的实现。Mono 做了一件很了不起的事情,将 CLR 在所有支持的平台上重新实现了一遍(包含手机上常用的安卓平台和Switch,PS4,这样的游戏机平台),并且mono还将 .Net Framework 提供的基础类库也重新实现了一遍。

Unity当年选用Mono而不是几乎只能在Windows上运行的.Net Core 就是看重了Mono的跨平台支持。并且Mono是一个开源软件,Unity也很方便在Mono的基础上做修改和微调

在这里插入图片描述

Mono跨平台原理

在这里插入图片描述
Mono打包先转化为中间语言,然后
在运行的时候再把中间语言翻译为机器码
总之,不会在编译的时候翻译为机器码,而是在运行的时候再编译

JIT方式

Just in time 只有运行的时候才会编译

优点:

打包速度快
只是一个翻译官

翻译为中间代码

支持运行时代码执行

必须将代码发布成托管程序集(.dll)

Mono VM的移植非常麻烦,python,java都是解释型语言,都要通过虚拟机来做事,来调用虚拟机的函数,每个平台都要重新翻译成哪个平台的机器语言,来匹配

Mono版本授权受限,很多C#新的特性无法使用
后期收费了

因此后期Unity发布了il2CPP

Mono打包目录结构

在这里插入图片描述

存在 游戏名_Data文件夹

逆向流程

开发人员代码被编译打包到 游戏名_Data\Managed\Assembly-CSharp.dll里面

常规C#逆向流程

使用dnSpy对该DLL进行反编译—支持动调调试

分析核心逻辑实现代码,约等于对着源码阅读

根据分析下结果对代码进行patch,实现某种变态功能

patch–打补丁

IL2CPP

在这里插入图片描述
IL to C++

AOT方式

ahead of time
会把中间代码在翻译成C++代码,直接用C++编译器就够了,
直接给他都编译好

特点

相比Mono构建更慢
程序效率高
多平台移植方便

打包目录结构

存在UnityPlayer.dll

存在 游戏名_Data 文件夹

没有Mono文件夹

游戏名_Data目录下有il2cpp_data文件夹

在这里插入图片描述

逆向流程

在这里插入图片描述
相比Mono更复杂些

GameAssembly.dll一般很大,得至少五十兆,非常大,所有代码都在里面

dumper工具回复符号

用IDA对dll反编译

分析核心逻辑实现的代码

根据分析结果进行patch , 实现某种变态功能


🌸I could be bounded in a nutshell and count myself a king of infinite space.
 特别鸣谢:木芯工作室
特别鸣谢:木芯工作室 、Ivan from Russia


相关文章:

【Unity逆向】玩游戏遇到的“飞天锁血”是怎么实现的?

文章目录前言什么是外挂?锁血瞬移都是怎么做的?Unity引擎的致命缺陷是什么?WEB入侵如何做到?Unity外挂攻防概述典型游戏现实应用Unity开发流程Unity工作界面打包发布方式MonoMono跨平台原理JIT方式优点:因此后期Unity发…...

Spring基础与创建

目录 前言 Spring基础与核心概念 Spring是什么 1、什么是容器 2、什么是IoC 3、理解SpringIoC 4、DI(依赖注入) Spring的创建和使用 1、创建Spring项目 1.1、创建一个普通Maven项目 1.2、添加Spring框架支持 1.3、添加启动类和main方法 2、…...

虚拟机系列教程:虚拟机克隆

克隆主要是对磁盘文件进行操作。 1)完整克隆 a、拷贝虚拟机磁盘文件 b、生成虚拟机配置文件 centos7-2 291b0480-955a-45e2-a001-690fded69d1b c、导入xml并启动 [rootcentos8 ~]# virt-clone -o centos7 --auto-clone ERROR 要克隆的域必须已经关闭。 [rootcent…...

iperf3主页官方信息

​ iPerf 是一款支持TCP,UDP和SCTP的高速协议测试工具 网络极限性能测试网络中立性检测 主页 下载iPerf安装包 公共的iPerf3服务器 iPerf用户手册 iPerf论坛—法语 联系我们 iPerf / iPerf3简介 iPerf3是一款用于对IP网络的最大带宽进行主动测试的工具。提供对和时间&…...

Linux-0.11 kernel目录进程管理sched.c详解

Linux-0.11 kernel目录进程管理sched.c详解 sched.c主要功能是负责进程的调度,其最核心的函数就是schedule。除schedule以外, sleep_on和wake_up也是相对重要的函数。 schedule void schedule(void)schedule函数的基本功能可以分为两大块,…...

AI已到,普通人的机会在哪里?

“普通人赚到钱很难 但是被骗到钱很容易”。每当火起来一个行业(或者仅是一个概念),都会有人来问:现在去做点什么,能够踩上风口?普通人的赚钱机会在哪?怎么做能够暴富?让我们先来看看…...

CSP-J2022入门组二轮补赛试题(山东)T2:宴会

题目链接 CSP-J2022入门组二轮补赛(山东)第2题:宴会 题目背景 今人不见古时月,今月曾经照古人。梦回长安,大唐风华,十里长安花,一日看尽。 唐长安城是当时世界上规模最大、建筑最宏伟、规划布局最为规范化的一座都城。其营建 制度规划布局的特点是规模空前、创设皇城…...

ubuntu 使用 CMake 构建 Qt5 项目

Qt 概述 概念 Qt 是一个跨平台的 C 图形用户界面应用程序框架 常见的 C GUI: Qt 和 MFC 跨平台 Windows Linux MacOS 嵌入式平台 版本 包括商业版和开源免费版 案例 Linux 桌面环境 KDE WPS Office Qt 安装 下载地址: https://download.qt.io/archive/qt/ http…...

ZooKeeper命令及JavaAPI操作

ZooKeeper数据模型 ZooKeeper是一个树形目录服务,其数据模型和Uiix的文件目录树很类似,拥有一个层次化结构。这里面的每一个节点都被称为:ZNode,每个节点上都会保存自己的数据和节点信息。节点可以拥有子节点,同时也允…...

云医疗信息系统源码(云HIS)商业级全套源代码

云his系统源码,有演示 一个好的HIS系统,要具有开放性,便于扩展升级,增加新的功能模块,支撑好医院的业务的拓展,而且可以反过来给医院赋能,最终向更多的患者提供更好地服务。 私信了解更多&…...

u盘拔掉再插上去文件没了原因|文件恢复方法

如果您遇到了“u盘拔了再插文件变空了”的类似问题困扰,请仔细阅读文本,下面将分享几种方法来恢复u盘上丢失的文件,赶紧来试试!为什么u盘拔掉再插上去文件没了“我的u盘为什么放进东西后拔出,再插进电脑去东西就没有了…...

CorelDRAW2023详解新增七大功能 ,CorelDRAW2023最新版本更新怎么样?

CorelDRAW2023新功能有哪些?CorelDRAW2023最新版本更新怎么样?让我们带您详细了解! CorelDRAW Graphics Suite 2023是矢量制图行业的标杆软件,2023年全新版本为您带来多项新功能和优化改进。本次更新强调易用性,包括更…...

LearnOpenGL-光照-4.光照贴图

本人刚学OpenGL不久且自学,文中定有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/LearnOpenGLProject 文章目录光照贴图漫反射贴图例子1镜面光贴图例子2 采样镜面光贴图小结什么是光照贴图光照贴图如何影响颜色光…...

ThreadLocal解析

ThreadLocal是一个存储线程本地变量的对象,在ThreadLocal中存储的对象在其他线程中是不可见的,本文介绍ThreadLocal的原理。 1、threadLocal使用 有如下代码: Slf4j public class TestThreadLocal {public static void main(String[] args…...

时间格式表

时间格式化对照表 仅供参考标识符含义aAM/PM(上午/下午)A0~86399999 (一天的第A微秒)c/cc1~7 (一周的第一天, 周天为1)cccSun/Mon/Tue/Wed/Thu/Fri/Sat (星期几简写)ccccSunday/Monday/Tuesday/Wednesday/Thursday/Friday/Saturday (星期几全拼)d1~31 (月份的第几天, 带0)D1~36…...

enscape和twinmotion哪个好用?

Twinmotion 和 Enscape这2款渲染软件最近受到了一些初学者的关注。这 2 个软件适用于那些需要 3D 渲染但质量不是他们项目的首要任务的人。在本文中,我们将对Twinmotion 和 Enscape 进行面对面的比较,并帮助您确定哪一个更适合您。什么是 Twinmotion&…...

Canvas

canvas介绍 什么是 Canvas?Canvas 是为了解决 Web 页面中只能显示静态图片这个问题而提出的,一个可以使用 JavaScript 等脚本语言向其中绘制图像的 HTML 标签。 Canvas 解决了什么问题 我在 MSDN(《Microsoft Developer Network》是微软一…...

旅游预约APP开发具有什么优势和功能

旅游活动目前正在作为广大用户休闲娱乐的一个首选内容,不仅是公司团建活动可以选择旅游,而且一些节假日也可以集结自己的亲朋好友来一次快乐有趣的旅游活动,随着当代人对于旅游的需求呈现上升的趋势,也让旅游预约APP开发开始流行并…...

Python之函数参数细讲

文章目录前言一、了解形式参数和实际参数1. 通过作用理解2. 通过一个比喻来理解形式参数和实际参数二、位置参数1. 数量必须与定义时一致2. 位置必须与定义时一致三、关键字参数四、为参数设置默认值五、可变参数1. *parameter2. **parameter总结前言 在调用函数时,…...

跑步耳机入耳好还是不入耳好、十大跑步运动耳机品牌排行榜推荐

健身房经常会播放一些节奏较快的歌曲,这样能够激发大家在运动过程中的动力,所以运动时聆听音乐确实比较有效果,居家运动、室外跑步时选择运动耳机就变成了刚需,首先不能影响其他人、佩戴时要稳定,音质和续航要有保证&a…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...