游戏逆向_Android读写游戏内容

这篇具有很好参考价值的文章主要介绍了游戏逆向_Android读写游戏内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

Android外挂的实现,需要涉及相应游戏内容的读写。读写的游戏内容包括代码和数据

针对不同的读写对象,通用的步骤就是寻找对象地址(位置)→获取相应权限→读写。下面将更详细介绍下相关实现。

二、实现方式

实现方式可以分为两大类:注入式和非注入式。

注入式:需要注入到相应游戏进程空间,常用方法是通过ptrace和zygote注入。

非注入式:不需要注入到游戏进程空间,通过Android系统机制从其它地方入手读写游戏内容。

根据需要读写游戏内容的性质,可以采用不同的方式。注入式适合读写动态数据,比如游戏过程中计算的中间变量(伤害等)、动态加载的属性(生命值等)、游戏状态(成功标志等)、动态编译代码(Unity、lua脚本等)。而非注入式比较适合修改静态代码、资源信息等(针对有反注入保护的游戏,非注入也可以用来获取动态数据)。

(一)非注入式:

1、/data/data/$PackageName私有文件夹下数据修改,比如修改lib目录下的SO(为游戏运行时实际加载SO库)。在获取ROOT权限后,可修改里面内容。比如要修改主逻辑模块,直接利用十六进制编辑器(UltraEdit等工具)修改保存。

2、直接利用APKTOOL等工具解密APK文件,可获取部分游戏资源信息。APK的常见文件目录介绍如下:

AndroidManifest.xml 每个应用都必须有的,包含包名、权限、Activity等相关信息;

META-INF 该目录下存放应用的签名信息;

Res 该目录下存放的是资源文件(图片字符串等);

Lib 该目录存放的是SO文件;

Assets 该目录存放的是配置文件(但是进程包含资源文件信息);

Classes.dex Java字节码文件(Java源码编译产出);

resources.arsc 编译后的二进制资源文件。

可以看出,这种方式可以获取到不少游戏内容。比如有些安全性差的lua引擎手游,其lua脚本会明文存放在Assets目录里面(通常命名有lua或者script相关字符)。又比如Unity游戏,如图1所示,其C#脚本编译后的DLL会存放在assets/bin/Data/Managed/Assembly-CSharp.dll里,可直接利用ILSpy等工具反编译的游戏脚本代码(关于Unity的辅助或破解版就有通过直接修改此文件内容实现功能)。
游戏逆向_Android读写游戏内容
3、利用/proc文件系统,每个进程在该文件夹下都有相应的文件(提及进程了当然是在运行过程中才有),里面会包含一些重要文件,如图2所示。部分重要文件介绍如下:

/proc/$pid/cmdline 用于开始进程的命令 ;

/proc/$pid/cwd 当前进程工作目录的一个链接 ;

/proc/$pid/environ 可用进程环境变量的列表 ;

/proc/$pid/exe 正在进程中运行的程序链接;

/proc/$pid/fd/ 进程打开的每一个文件的链接;

/proc/$pid/mem 进程在内存中的内容;

/proc/$pid/stat 进程的状态信息;

/proc/$pid/statm 进程的内存使用信息;

/proc/$pid/maps 进程虚拟地址空间使用信息。

通过这些文件,可以获取相应的游戏信息。其中mem文件可获取到游戏的内存镜像,既是可通过修改该文件实现修改游戏进程空间内容目的。比如葫芦侠修改器既是通过这种非注入方式实现通用修改器功能(《Debug Hacks》里面有样例代码,如图3所示,直接使用read、write等函数即可读写进程内容。一般需要配合maps里面的内容获取模块基址信息。)
游戏逆向_Android读写游戏内容
游戏逆向_Android读写游戏内容
(二)注入式:

注入式的读写,目的性较强,既是事先已经通过静态或者动态调试确定了在特定位置可以获取到内容地址,然后需要在游戏动态运行过程中读写相应地址内容(涉及到内存的读写操作,比如memset、memcpy、mmap、strcpy等函数)。其具体实现方式如下:

1、在注入到游戏进程空间后,直接修改特定位置汇编指令,改变其对特定地址的读写逻辑。比如在游戏外挂中常用到的修改函数参数方法,就可以通过这个方式实现:分析定位到具体函数后,在其刚开始的汇编指令段找到个参数使用点,改变其赋值即可。如图4所示,某个游戏一个功能函数参数R1代表能量值,将红框地址的指令改写成FF25(MOVS R5, #0xFF)即可实现动态修改该函数参数为0xFF的目的(实现能量恒满的外挂功能)。

这种方式需要了解ARM、Thumb等汇编指令的常见读写指令。比如写操作,ARM汇编指令MOV R3, #0的Opcode为00 30 A0 E3。
游戏逆向_Android读写游戏内容
2、上述方式其实是最基本的注入式写方式,拥有最简单的逻辑:静态分析到地址→改写页属性(mprotect函数改写属性)→直接修改内容。更进一步,遇到些读写操作需要占用大量字节的情况,无法在原有地址构造相应汇编指令实现,则需要HOOK技术。这里又分成两种:一种是利用MSHOOKFUNCTION、GOT表替换等实现函数地址替换,另一种是利用Inline Hook实现函数中间过程跳转。由于本文不是HOOK专题文章,故相对简单介绍下这些方式如下:

A、MSHOOKFUNCTION、GOT表替换等方式,可简单调用函数实现,较为方便。但是局限性较强,不能获取到函数中间变量数据,仅限于参数和返回值的读写。

B、Inline Hook方式,实现较为复杂,但是优势明显:可读写函数中间运算数据。比如游戏有个巨大的受击计算函数,里面涉及到伤害防御力等计算,伤害值仅是一个临时变量,这个时候,就需要静态分析出伤害值的存放位置(哪个位置哪个寄存器),然后利用Inline Hook读写相应数据即可。文章来源地址https://www.toymoban.com/news/detail-412008.html

到了这里,关于游戏逆向_Android读写游戏内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Unity游戏破解】外挂原理分析

    dll一般很大,因为里面是所有的游戏功能编译成的二进制码 开发人员代码被编译打包到GameAssembly.dll中 使用il2ppDumper工具,并借助游戏名 _Datail2cpp_dataMetadataglobal-metadata.dat恢复符号 使用IDA对该dII进行反编译 分析核心逻辑实现的代码(相对Mono困难) 根据分析结果对代码进行pa

    2023年04月09日
    浏览(30)
  • 浅谈3D坦克的部分游戏外挂

    3D坦克又名:Tanki Online,是由俄罗斯 Alternativa 公司创作发行的一款坦克游戏,于 2009 年 6 月 4 日俄罗斯开启公开测试,于 2010 年 4 月在中国发布。游戏至今数十年,渐渐衍生了一些游戏外挂,由于我才疏学浅,只浅聊其中出现的部分外挂,如有错误,欢迎批评指正。 第一:

    2024年02月19日
    浏览(30)
  • 游戏安全:外挂检测的基本操作

    文章目录 概要 常见的方法和技术 1.行为分析 2.签名检测 3.封包分析 4.内存扫描 5.硬件检测 6.自动化检测 7.举报系统   检测外挂通常是在线游戏和软件应用程序中的一项重要任务,以确保游戏或应用的公平性和安全性。以下是一些常见的方法和技术,用于检测外挂: 监控玩家

    2024年02月04日
    浏览(34)
  • 谈谈游戏中如何防外挂和防破解

    这篇文章写于2018年一直在草稿箱,当时在某厂做手游,现在回过头来看,这些方法依然有用。 对于一些外挂软件,现在我们借力AI,针对性上报玩家的行为序列log,通过AI分析是否外挂,然后把数据交由运营处理。 在我开发一款大型mmoarpg过程中和服务器主程讨论游戏中防外

    2024年02月14日
    浏览(28)
  • 游戏安全、外挂、AI、黑灰产 | 游戏安全这场游戏厂商与玩家的共同战役,曙光初现!

    每位游戏从业者的起点,应当都是年少时期与某款游戏的结缘,许多小时候天天泡在网吧里的“网瘾少年”,凭着满腔对游戏的热爱,长成了游戏行业的筑基者。 不过有光的地方就有影子。在游戏世界中跋涉得愈发深入,就会发现,许多“偷偷赚钱”的产业正如附骨之蛆般随

    2024年02月20日
    浏览(37)
  • 【Android 逆向】程序员高危开发方向 ( 违法软件类型 | 赌博游戏 | 色情类应用 | 涉及金融类软件 | 爬虫类软件 | 区块链货币 | 甄别是否合法 )

    棋牌类 游戏开发 , 写这类游戏的程序员 很容易被抓 , 只要 涉及到了 充值 以及 提现 , 就是涉嫌赌博 ; 常见的 就是 麻将类游戏 , 纸牌类游戏 , 具体的地方麻将或扑克玩法 , 德州扑克 , 21 点 , 老虎机 等 类型的 游戏 ; 抽卡类的游戏 , 充值 然后 赌概率 , 比如原神这种 , 只充值

    2024年01月19日
    浏览(35)
  • 【游戏逆向】Lua游戏逆向及破解方法介绍

    随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台。Lua脚本编写逻辑的手游也是越来越多,如梦幻西游、刀塔传奇、开心消消乐、游龙英雄、奇迹暖暖、疾风猎人、万万没想到等手游。随着Lua手游的增加,其安全性更值得关注,在此归纳一些常用的分析方法,同

    2024年02月04日
    浏览(34)
  • x86游戏逆向之实战游戏线程发包与普通发包的逆向

    网游找Call的过程中难免会遇到不方便通过数据来找的或者仅仅查找数据根本找不到的东西,但是网游中一般的工程肯定要发给服务器,比如你打怪,如果都是在本地处理的话就特别容易产生变态功能,而且不方便与其他玩家通信,所以找到了游戏发包的地方,再找功能就易如

    2024年02月06日
    浏览(36)
  • 9.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏连接服务器的操作

    内容参考于:易道云信息技术研究院VIP课 上一个内容:游戏底层功能对接类GameProc的实现 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan 码云版本号:44c54d30370d3621c1e9ec3d7fa1e2a028e773e9 代码下载地址,在 titan 目录下,文件名为:titan-接管游戏连接服务器的操作.zip 链接

    2024年03月08日
    浏览(35)
  • 61.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏红字公告功能的逆向分析

    内容来源于: 易道云信息技术研究院VIP课 上一节内容:游戏公告功能的逆向分析与测试-CSDN博客 码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:63e04cc40f649d10ba2f4fa313ca65cc78f46516 代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-游戏红字公告功能的逆

    2024年01月23日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包