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

这篇具有很好参考价值的文章主要介绍了【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

教程背景

课程作业要求使用反编译技术,在游戏中实现无碰撞。正常情况下碰撞后角色死亡,修改为直接穿过物体不死亡。文章来源地址https://www.toymoban.com/news/detail-745330.html

需要准备的软件

  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或其他)
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF
  4. 命令行运行il2CppDumper,其中<libil2cpp>表示input中的libil2cpp.so路径,<global-metadata>表示input中的global-metadata.dat的路径,<output>为output文件夹路径。
Il2CppDumper.exe <libil2cpp> <global-metadata> <output>
  1. 执行成功后,output文件夹中文件如下图所示。
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF

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

  1. 使用VS打开.\output\dump.cs,可以查看C#程序中的代码结构,以及函数或类的逻辑地址。可以看到其中不包含函数的具体实现也有八万多行,其中很多函数都是系统函数,不是我们需要关注的。
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF
  2. 将.\output\DummyDll\Assembly-CSharp.dll导入到DnSpy中,可以清晰的看到不同的class和函数。
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF

三、定位需要修改的函数

  1. 由于我们需要实现角色无碰撞,所以我们定位到PlayerController中的OnTriggerEnter2D和OnCollisionEnter2D函数,这两个函数用于处理与碰撞相关的逻辑。(根据需要实现的功能,定位到的函数和修改方式均有所差异)
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF
  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的汇编指令。
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF
  3. 保存patch后的libil2cpp.so为libil2cpp.so。

五、使用AndroidKiller打包运行

  1. 使用AndroidKiller打开{my_game}.apk,打开后路径如下。
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF
  2. 在文件夹中打开对应路径,然后将第四步中patch好的libil2cpp.so复制到该路径下,替换同名文件。
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF
  3. 点击左上角的编译,然后点击安装,可以直接将修改版的app安装至已经用adb连接好的android设备。
    【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】,android,软件逆向,软件教程,CTF
  4. 运行测试,无碰撞功能已经实现,角色穿过物体不会死亡。

到了这里,关于【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • [IL2CPP逆向] 某立志传 - 脱离Steam运行

    [IL2CPP逆向] 某立志传 - 脱离Steam运行

    喜欢的请支持正版,此版本仅用于学习,不可用于商业目的,请在下载后于24小时内删除。 喜欢的请支持正版,此版本仅用于学习,不可用于商业目的,请在下载后于24小时内删除。 喜欢的请支持正版,此版本仅用于学习,不可用于商业目的,请在下载后于24小时内删除。 重

    2024年02月03日
    浏览(24)
  • Unity的IL2CPP

    ​ 目录 背景 概念 AOT编译器 运行时库 对比 Mono IL2CPP

    2024年02月11日
    浏览(11)
  • Unity 使用 IL2CPP 发布项目

    Unity 使用 IL2CPP 发布项目

    Unity的IL2CPP(Intermediate Language to C++)是一个编译技术,它将C#代码转换为C++代码,然后再编译成平台相关的二进制代码。IL2CPP提供了几个优点,特别是在性能和跨平台部署方面。以下是IL2CPP的一些主要优点: 1.性能提升 :IL2CPP通常能提供比传统的Mono运行时更好的性能,因为它

    2024年04月28日
    浏览(11)
  • Unity IL2CPP 游戏分析入门

    Unity IL2CPP 游戏分析入门

    很多时候App加密本身并不难,难得是他用了一套新玩意,天生自带加密光环。例如PC时代的VB,直接ida的话,汇编代码能把你看懵。 但是要是搞明白了他的玩法,VB Decompiler一上,那妥妥的就是源码。 Unity 和 Flutter 也是如此。 最近迷上了一个小游戏 Dream Blast,今天就拿他解剖

    2024年01月18日
    浏览(13)
  • Unity使用IL2CPP方式打Windows包

    Unity使用IL2CPP方式打Windows包

    笔者Unity版本2021.3.8f1 1,确保安装了对应版本的扩展包:UnitySetup-Windows-IL2CPP-Support-for-Editor 2,打包报错: 和 这里:unable-to-build-il2cpp 建议使用Visual Studio Installer补充安装一些C++相关的工具包。 3,若依旧报错类似 Building LibraryBeeartifactsWinPlayerBuildProgramei6vjejx6_b_vm6.lump.obj failed w

    2024年02月11日
    浏览(10)
  • unity导入Android报错Unity.IL2CPP.Building.BuilderFailedException

    unity导入Android报错Unity.IL2CPP.Building.BuilderFailedException

    把从unity导出的Android包作为一个模块嵌入至Android程序 在解决了sdk31损坏等一系列问题,终于将程序成功安装到了手机上,以为就要通向光明未来了,结果在手机端调试时发现本人手机硬件(高通778,v8)不支持unity程序。 经过百度发现我导出的unity项目只支持处理器架构v7的手

    2024年02月05日
    浏览(10)
  • Unity 安卓构建错误:IL2cpp 需要提取的资源提取失败

    Unity 安卓构建错误:IL2cpp 需要提取的资源提取失败 问题描述: 在 Unity 中进行安卓构建时,可能会遇到一个报错信息:“failed to extract resources needed by IL2cpp”。这个错误通常发生在将 Unity 项目构建为安卓应用程序时,而 IL2cpp 则是 Unity 用于将 C# 代码编译为本地代码的工具。

    2024年02月04日
    浏览(14)
  • 解决Unity安卓编译错误: IL2CPP需要的资源提取失败

    解决Unity安卓编译错误: IL2CPP需要的资源提取失败 在开发Unity游戏时,我们经常会遇到各种各样的问题。其中一个常见的问题是,当我们尝试将游戏导出为Android应用程序时,可能会遇到一个名为\\\"Failed to extract resources needed by IL2CPP\\\"的错误。本文将介绍如何解决这个问题,并提供

    2024年02月03日
    浏览(47)
  • Unity2020 打包报错:windowUnity.IL2CPP.Building.BuilderFailedException

    Unity2020 打包报错:windowUnity.IL2CPP.Building.BuilderFailedException

    在打包的时候报错:windowUnity.IL2CPP.Building.BuilderFailedException 解决方法:把IL2CPP换成mono,重新打包即可 依次点击:Edit-Player-Configuration-Mono 再次重新打包即可

    2024年02月16日
    浏览(13)
  • Unity WebGL 打包il2cpp.exe did not run properly!

    Unity WebGL 打包il2cpp.exe did not run properly!

    是中文问题,WebGL的illcpp对执行过程中一点点的中文都不允许存在。包括 硬盘的中文名称 参考 如何更改磁盘盘符的名字 我的文档中的用户名有中文 系统用户名有中文 win+L封锁之后解锁会出现当前系统用户是否有中文 打包路径中有中文 这个很好解决 环境变量中有中文 由于

    2024年02月16日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包