【ETH链游】阿蟹Axie Infinity模拟器运行及多开

2023-10-27

Axie Infinity

在这里插入图片描述

众所周知,阿蟹【Axie Infinity】是去年最火的一款GameFi游戏,由越南团队Sky Mavis开发,短短几个月内就红遍东南亚,最大市场在菲律宾,其次是越南、马来西亚、印尼与美国等。

去年6月,该游戏单日平均收入就和《王者荣耀》并列全球第一;去年7月近30日平均收入也有3.34亿美元,超过王者荣耀2.31亿美元,拿下宝座。

自疫情以来,东南亚经济深受打击,菲律宾有高达730万人失业,马来西亚失业率也创1993年以来高峰,失业族群更遍及各领域:大学应届毕业生、三轮车司机,以及到海外当移工赚钱的人士。当他们因封城或无法出国失去收入,能在线上赚钱的Axie自然成最好机会,让游戏迅速走红。

但随着潮水和泡沫的褪去,从去年12开始GameFi板块的全面暴跌,我们应该谨慎对待P2E链游,小小娱乐即可,切勿投入过多,毕竟风险巨大。

模拟器检测

阿蟹【Axie Infinity】官方提供的Android APK在PC端的Android模拟器上无法正常运行,相信我们大家已经发现了。以雷电模拟器为例,安装后运行,屏幕一片空白。请添加图片描述
首先想到的是可能官方做了模拟器检测。
在这里插入图片描述
我们查看APK的lib目录,果然看到了【libemulator_check.so】这样明显用于模拟器检测的库。可见官方也是下了一定的工夫,在本机代码层做了检测,而不仅仅是在Java代码层来做检测,这样仅仅凭借Xposed之类的Java层Hook技术就很难搞定了。

但无论他的【libemulator_check.so】如何检测,哪怕他用了无数种检测手段,哪怕这个.so他再使用vmp加壳,但只要我想办法让他的Java代码不去调用【libemulator_check.so】不就行了吗?

一番研究和搜索,发现这个【libemulator_check.so】实际上来自一个开源项目:
https://github.com/happylishang/AntiFakerAndroidChecker
在这里插入图片描述
果然,使用【jadx】反编译后,我们看到它Java代码中调用了

 EmulatorDetectUtil.isEmulator(context);

进行模拟器检测,于是我们通过【apktool】对其反编译后,修改smali代码,去掉这些调用,然后重新打包。

可是,悲剧的事情发生了,我们重新打包后APK无法运行了,哪怕是在正常的小米手机真机上也无法运行了,看来它除了做模拟器检测,还做了签名校验。
在这里插入图片描述
果不其然,我们在反编译的代码中发现他在【libglvnftpb.so】中做了签名校验的事情

不过对于签名校验的破解,我们有万能的大杀器:

《Android逆向【4】:暴力破解APK签名校验,愉快的重新打包微信支付宝APK》
https://blog.csdn.net/CharlesSimonyi/article/details/122184098

当然我们也可以不重新打包他的APK,而是直接通过Xposed来Hook【 EmulatorDetectUtil.isEmulator()】

不过最后搞了一通,我们还是失败了,游戏在模拟上运行还是一片空白。

于是我们直接在反编译的代码中搜索【System.loadLibrary】看它究竟加载了哪些so
在这里插入图片描述
至此我们发现了【C0010.m9(485)】这个神奇的函数,这个函数来自于【libglvnftpb.so】的本机代码。
在这里插入图片描述
好家伙,我们发现他为数不多的Java代码居然调用了【C0010.m9】这个函数多达531次!原来他是把整个APK的Java代码部分所需要的字符串,全部压缩放到了【libglvnftpb.so】里,APP运行起来后,会通过System.loadLibrary(“glvnftpb”);
加载【libglvnftpb.so】,这个时候【libglvnftpb.so】会进行签名校验、模拟器检测等操作,自检通过以后,这些字符串才会释放到内存中,接下来调用【libglvnftpb.so】的【C0010.m9】方法,传递不同的数字以查表的方式获取正确的字符串。

那么如果仅仅是把【libglvnftpb.so】干掉,让它不加载【libglvnftpb.so】那是不行的,因为整个APP的Java代码到处都在依赖【libglvnftpb.so】的【C0010.m9】以获取必须的字符串。

解决思路

可以从两条路子下手:

  1. 先把原版【Axie Infinity】在Android真机上跑起来,然后借助frida,编写脚本,反复调用【C0010.m9】并枚举int参数,把其内部的所有字符串和int值的对应关系一一套出来,然后编写一个【libglvnftpb.so】替换它,当然我们自己编写的【libglvnftpb.so】不做任何检测动作,直接返回正确的字符串。当然,这还有很多细节需要处理。

  2. 收集老版本的APK,这点对于游戏APP逆向来说非常重要,如果你关注一个游戏APP,最好写个脚本从一开始就盯着官方的每一个新版本的发布,尽可能搜集多的老版本APK。因为官方和工作室做对抗,也是循序渐进的,在【Axie Infinity】较早的时候,不仅没有做模拟器检测和签名校验,甚至连其il2cpp代码都是未做混淆的,所有函数和变量一目了然,但是随着官方和工作室对抗了近一年之久,各种检测和混淆手段层出不穷。收集尽可能多的历史版本,我们可以对比两个连续的新旧版本之间的差异,比较容易的发现官方做了哪些改动。同理,解决模拟器检测的另一个思路就是,我们仍然使用老版本的Java代码,但整合新版本的unity文件,老版本用于启动unity环境的Java代码可是没有调用so做模拟器检测的,同时游戏类APP每个新版本的改动主要还是其中的unity文件,这样套用以后使得APP的Java代码不做模拟器检测,但是unity却是最新版本,可以正常游戏。当然这取决于APP的具体实现,好在【Axie Infinity】的检测逻辑基本都在so中,而游戏逻辑全在【libil2cpp.so】中,至于Java部分,新老版本变化不大,使得我们做新老套用成为可能。

修改版

由于时间精力有限以及其它一些原因,我们暂时不能详细给出修改阿蟹【Axie Infinity】模拟器检测的具体步骤和代码,所以目前先给出一个修改好的APK文件,并且会随着官方新版本的更新而更新,目前修改版的APK可以到这里下载(右侧的【Releases】处下载):
https://github.com/encoderlee/cracked_axie_infinity

运行效果

目前最新的1.1.3.3版本在雷电模拟器中运行的效果
在这里插入图片描述
在这里插入图片描述

一些好的开源项目

在实现了在雷电模拟器上运行以后,我们很容易在一台电脑上多开N个号,并且给每个客户端设置不同的代理,同时我们也可以借助以下开源项目,实现Android设备的自动化,从而实现一些自动化操作:
Android自动化测试工具:https://github.com/openatx/uiautomator2
网易开发的手游自动化测试工具:https://airtest.netease.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ETH链游】阿蟹Axie Infinity模拟器运行及多开 的相关文章

随机推荐

  • Java Stream流详解

    本文目录 学习目标 中间操作 Filter 过滤 Map 转换 Sorted 排序 Distinct 去重 Limit 限制 Skip 跳过 Peek 展示 终止操作 forEach 循环 Collect 收集 Count 计数 Reduc
  • 软件测试基础理论知识—用例篇

    什么是测试用例 测试用例 Test Case 是为了实施测试而向被测试的系统提供的一组集合 这组集合包含 测试环境 操作步骤 测试数据 预期结果等要素 需求的概念 满足用户期望或正式规定文档 合同 标准 规范 所具有的条件和权能 包含用户需
  • 【整理】QT .pro文件中的变量说明

    注释 以 开始的行 直到结束 模板变量 告诉qmake生成哪种makefile TEMPLATE app 其中 app 表示该工程建立一个应用程序的makefile 这是默认值 所以如果模板没有被指定 这个将被使用 lib 表示该工程建立一
  • 第一个servlet程序、配置web.xml以及使用html表单给服务器传输数据

    一 Serlvet简介 serlvet是一个服务器小程序 它可以对用户的请求 request 作出响应 response 举个例子 当我们在html页面填写一个表单时 我们点击提交 这就能发送一个请求 服务器可以接收到我们的请求然后执行相应
  • 【Ceph】1 pools have many more objects per pg than average

    公司 Ceph 集群从 v12 升级到 v14 后 今天某个 CephFS 的集群收到一个 HEALTH WARN 的告警 具体的 Warning 的信息为 1 pools have many more objects per pg tha
  • vue3组件内判断是否进行路由跳转

    import onBeforeRouteLeave from vue router import ElMessageBox from element plus onBeforeRouteLeave to from next gt if fo
  • 【毕业设计】机器视觉停车位识别检测系统 - python 深度学习

    文章目录 1 简介 2 检测效果 3 实现方式 3 1 整体思路 3 2 检测空车位 3 3 车辆识别 4 最后 1 简介 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高
  • PHP7 连oracle 11g 可能出现的pdo_oci_handle_factory,Check the character问题和解决方法

    错误代码 SQLSTATE HY000 pdo oci handle factory Error while trying to retrieve text for error ORA 12541 错误代码 SQLSTATE HY000 O
  • 分布式日志系统解决方案

    一 什么是PlumeLog PlumeLog 是一款无入侵的分布式日志系统 基于log4j log4j2 logback搜集日志 设置链路ID 方便查询关联日志 基于elasticsearch作为查询引擎 实现日志报错预警 PlumeLog
  • C++ Primer 16 类模板部分特例化

    模板与泛型编程 面向对象编程和泛型编程都能矗立在编写程序时不知道类型的情况 不同之处在于 OPP 能处理类型在程序运行之前都未知的情况 而泛型编程中 在编译时就能知获类型了 当我们编写一个泛型程序时 是独立于任何特定类型来编写代码的 模板是
  • 基于mbedTLS算法库实现国密SM2签名和验签算法

    网上有大量的基于OpenSSL实现的国密算法库 比如著名的GmSSL 可以直接拿来用 我自己常用的是mbedTLS的算法库 比较小巧简单 在mbedTLS的大数算法的基础上实现了国密SM2的签名和验签算法 在基于mbedTLS实现SM2签名
  • 配置pacemaker时用到的一些CRM CLI命令

    官方网站 http www clusterlabs org doc crm cli html CRM CLI是分层设计 常见层级如下 node 主要用于节点的各种操作 resource 主要用于资源的各种操作 ra 查看RA的各种属性 co
  • python 均方误差_python如何实现均方误差和均方根误差?

    一 python实现均方误差 均方误差是各数据偏离真实值的距离平方和的平均数 也即误差平方和的平均数 用法 一般被用在机器学习的预测值与真实值之间的距离 均方误差对应的是最小二乘法 coding utf 8 import math def
  • python程序员 培训

    非常感谢大家这么长时间对我们的喜爱和关注 我们都知道 python是当前的大趋势 无论是就业前景 发展空间 还是薪资待遇都是当下最为火爆的行业 所以我们特意联系了央视公开课曾推荐的万门大学 向大家赠送一份人工智能的课程 这个课程我们已经了解
  • QSlider风格设置

    QT的滑动条在开发的过程中经常使用 默认的QSlider风格比较简陋 一般达不到UI设计的效果 本篇记录一个QSlider使用过程中风格的设置 1 qss常用的字段属性 1 1背景属性 属性 值 意思 background Backgrou
  • 用C语言实现经典游戏——贪吃蛇

    目录 1 游戏实现思想 1 定义蛇对象 2 食物对象 3 分数 4 初始化蛇 5 初始化食物 6 修改控制台光标位置 7 画出蛇和食物 8 蛇的移动控制 9 开始游戏 10 蛇移动 11 画墙 12 去除蛇尾 13 去除光标 14 显示分数
  • 06.数据库日常应用实例

    生活事例 01 用户注册 A select操作 搜索数据库所有用户名 B 与新注册的用户名进行比对 C 如果相同 新用户需从新改名 D 直到与数据库中的用户名不同 方能注册 02 转账 A select操作 搜索数据库所有账号 B 收款方账
  • Please enable Javascript to view this page

    今天进防火墙时出错 以下设置解决 internet选项 gt 安全 gt 受信任站点 gt 添加站点 转载于 https www cnblogs com cw828 p 10063200 html
  • 测试原则-阶段-测试用例设计-调试

    测试原则 阶段 测试用例设计 调试 测试原则和方法 测试阶段 测试策略 测试用例的设计 调试 软件度量 测试原则和方法 系统测试 成功的测试 测试原则 软件测试的方法 静态测试 动态测试 测试阶段 单元测试 集成测试 确认测试 系统测试 配
  • 【ETH链游】阿蟹Axie Infinity模拟器运行及多开

    Axie Infinity 众所周知 阿蟹 Axie Infinity 是去年最火的一款GameFi游戏 由越南团队Sky Mavis开发 短短几个月内就红遍东南亚 最大市场在菲律宾 其次是越南 马来西亚 印尼与美国等 去年6月 该游戏单日