【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】

news/2024/5/19 21:56:18 标签: android, 软件逆向, 软件教程, CTF

教程背景

课程作业要求使用反编译技术,在游戏中实现无碰撞。正常情况下碰撞后角色死亡,修改为直接穿过物体不死亡。

需要准备的软件

  1. il2CppDumper。
  2. DnSpy。
  3. IDA Pro。
  4. AndroidKiller。

一、使用il2CppDumper导出程序集

  1. 将{my_game}.apk后缀修改为{my_game}.zip,使用解压工具解压至文件夹{my_game}。(my_game为apk的文件名,根据具体情况有所不同)
  2. 在桌面新建一个input文件夹,和一个output文件夹。
  3. 将{my_game}\lib\armeabi-v7a\libil2cpp.so和{my_game}\assets\bin\Data\Managed\Metadata\global-metadata.dat复制到桌面input文件夹。(其中armeabi-v7a根据apk平台不同有所差异,可能是arm64-v8a或其他)
    在这里插入图片描述
  4. 命令行运行il2CppDumper,其中<libil2cpp>表示input中的libil2cpp.so路径,<global-metadata>表示input中的global-metadata.dat的路径,<output>为output文件夹路径。
Il2CppDumper.exe <libil2cpp> <global-metadata> <output>
  1. 执行成功后,output文件夹中文件如下图所示。
    在这里插入图片描述

二、使用VS和DnSpy查看C#代码结构

  1. 使用VS打开.\output\dump.cs,可以查看C#程序中的代码结构,以及函数或类的逻辑地址。可以看到其中不包含函数的具体实现也有八万多行,其中很多函数都是系统函数,不是我们需要关注的。
    在这里插入图片描述
  2. 将.\output\DummyDll\Assembly-CSharp.dll导入到DnSpy中,可以清晰的看到不同的class和函数。
    在这里插入图片描述

三、定位需要修改的函数

  1. 由于我们需要实现角色无碰撞,所以我们定位到PlayerController中的OnTriggerEnter2D和OnCollisionEnter2D函数,这两个函数用于处理与碰撞相关的逻辑。(根据需要实现的功能,定位到的函数和修改方式均有所差异)
    在这里插入图片描述
  2. 我们只需要在il2cpp.so中让OnTriggerEnter2D函数和OnCollisionEnter2D函数不处理任何逻辑,直接return即可。
  3. 我们需要记住OnTriggerEnter2D的地址0x5E2A70和OnCollisionEnter2D的地址0x5E30C8,然后在IDA Pro中patch对应的十六进制代码。

四、使用IDA Pro修改十六进制代码

  1. 使用IDA Pro打开libil2cpp.so,提示框全选是即可。
  2. 分别跳转至0x5E2A70和0x5E30C8,修改对应的字节为BX LR(1E FF 2F E1),其中BX LR是ARM中return的汇编指令。
    在这里插入图片描述
  3. 保存patch后的libil2cpp.so为libil2cpp.so。

五、使用AndroidKiller打包运行

  1. 使用AndroidKiller打开{my_game}.apk,打开后路径如下。
    在这里插入图片描述
  2. 在文件夹中打开对应路径,然后将第四步中patch好的libil2cpp.so复制到该路径下,替换同名文件。
    在这里插入图片描述
  3. 点击左上角的编译,然后点击安装,可以直接将修改版的app安装至已经用adb连接好的android设备。
    在这里插入图片描述
  4. 运行测试,无碰撞功能已经实现,角色穿过物体不会死亡。

http://www.niftyadmin.cn/n/5152021.html

相关文章

树结构及其算法-二叉运算树

目录 树结构及其算法-二叉运算树 C代码 树结构及其算法-二叉运算树 二叉树的应用实际上相当广泛&#xff0c;例如表达式之间的转换。可以把中序表达式按运算符优先级的顺序建成一棵二叉运算树&#xff08;Binary Expression Tree&#xff0c;或称为二叉表达式树&#xff09;…

[PHP]魔众文档管理系统 v4.3.0

魔众文档管理支持Markdown、图表、脑图、富文本&#xff0c;功能全面、安全稳定&#xff0c;支持标签、分类&#xff0c;可以更好的在线管理个人文档。 魔众文档管理系统发布v4.3.0版本&#xff0c;新功能和Bug修复累计8项&#xff0c;新增未分类无标签等特性&#xff0c;系统…

阿里云安全恶意程序检测

阿里云安全恶意程序检测 赛题理解赛题介绍赛题说明数据说明评测指标 赛题分析数据特征解题思路 数据探索数据特征类型数据分布箱型图 变量取值分布缺失值异常值分析训练集的tid特征标签分布测试集数据探索同上 数据集联合分析file_id分析API分析 特征工程与基线模型构造特征与特…

第十七节——指令

一、概念 在Vue.js中&#xff0c;指令&#xff08;Directives&#xff09;是一种特殊的语法&#xff0c;用于为HTML元素添加特定的行为和功能。指令以v-作为前缀&#xff0c;通过在HTML标签中使用这些指令来操作DOM&#xff0c;修改元素的属性、样式或行为。 Vue.js提供了一组…

2023全新小程序广告流量主奖励发放系统源码 流量变现系统 带安装教程

2023全新小程序广告流量主奖励发放系统源码 流量变现系统 分享软件&#xff0c;吃瓜视频&#xff0c;或其他资源内容&#xff0c;通过用户付费买会员来变现&#xff0c;用户需要付费&#xff0c;有些人喜欢白嫖&#xff0c;所以会流失一部分用户&#xff0c;所以就写了这个系统…

PTA:三元组顺序表表示的稀疏矩阵转置Ⅱ

三元组顺序表表示的稀疏矩阵转置Ⅱ 题目输入格式输出格式输入样例输出样例 代码 题目 三元组顺序表表示的稀疏矩阵转置Ⅱ。设a和b为三元组顺序表变量&#xff0c;分别表示矩阵M和T。要求按照a中三元组的次序进行转置&#xff0c;并将转置后的三元组置入b中恰当的位置。 输入…

PTA: 矩阵的乘法运算

矩阵的乘法运算 题目输入格式输出格式输入样例输出样例 代码 题目 线性代数中的矩阵可以表示为一个row&#xff0a;column的二维数组&#xff0c;当row和column均为1时&#xff0c;退化为一个数&#xff0c;当row为1时&#xff0c;为一个行向量&#xff0c;当column为1时&…

企业财务数字化转型的机遇有哪些?_光点科技

随着数字技术的飞速发展&#xff0c;企业正面临着一个前所未有的转型机会。尤其在财务领域&#xff0c;数字化不仅仅是一种技术进步&#xff0c;更是一个全面提升企业竞争力的战略选择。那么&#xff0c;企业财务数字化转型所带来的机遇有哪些&#xff1f; 提高效率与生产力 数…