Contents

简单修改两个小朋友APP

临时需求

清明在家,想给小朋友找个简单练习数学运算的APP,老是手写出题不符合我这种现代懒人的气质。搜索一圈,运气不错,先后找了两个比较有用的APP。

第一个APP

数学无尽冒险
  • 版本:v1.7.0
  • 下载地址:https://www.duote.com/android/520153.html

数学无尽冒险游戏是一款依据乘除法为主题的经典跑酷类手游游戏,数学无尽冒险游戏代入感十足给玩家一种舒服的觉得,玩家在拯救自身小伙伴们时必须开展数学难题思索及其突破自我,赶紧来数学无尽冒险畅玩吧,看一下是不是你最聪慧的玩家。 1.每抵达一个特殊的地区的情况下,就会有一些数据,全是一些比较简单的小学算术题,玩家必须迅速的计算回答才可以砥砺前行。 2.数学无尽冒险游戏会给您产生无穷的意外惊喜和开心,能够协助玩家活跃性自身的人的大脑,提升自己的反应能力和沟通能力。 3.卡通形象设计设计方案,好几个副本都给游戏增加了挑战性。

看着不错,一款类似跑酷的小游戏,通过做数学题领奖励,APP本身免费,但是要金币或观看视频才能复活,里面的服务都依托GooglePlay,看样子是个海外应用。

最终目标:我打算改下APP,弄个无限金币复活,因为小朋友玩的话,每次还没做几道题就结束了。

初步分析APP:360加固,Unity3D、mono

/posts/2022/diy-math-app/res/1.png /posts/2022/diy-math-app/res/2.png

目测加固只处理了dex,毫不影响我们分析U3D,OpenArk找到DnsSpy,打开分析assets\bin\Data\Managed\Assembly-CSharp.dll

/posts/2022/diy-math-app/res/3.png

然后看下C#反编的代码,很清晰,无混淆、无VM,省事不少。很快就找到PlayerPrefsManager类,看名字应该就是管理Preference用的。

/posts/2022/diy-math-app/res/4.png

public class PlayerPrefsManager : MonoBehaviour
{
  public int GetGems()
  {
    return ObscuredPrefs.GetInt("Gems");
  }
}

GetGems是获取金币的函数,虽然用了Anti-Cheat Toolkit(一个反作弊的工具包),调用ObscuredPrefs来对数据做加密保护,但丝毫不影响我们操作,直接Patch几条IL指令,return int.MaxValue;

nop
ldc.i4 0x7fffffff
stloc.0
ldloc.0
ret

保存替换原apk中Assembly-CSharp.dll,最后签名即可。

/posts/2022/diy-math-app/res/5.png

结果模拟器正常,但在手机里崩溃,看来在高版本系统里有问题(多半是libjiagu惹得祸),不想管了,外网找了个新版本v1.9.8。

分析新版本:无加固、Unity3D、il2cpp

/posts/2022/diy-math-app/res/6.png

没任何保护的代码直接Il2CppDumper分析global-metadata.dat,ida里找到GetGems函数,Patch即可,打包、签名同上。

/posts/2022/diy-math-app/res/7.png

/posts/2022/diy-math-app/res/8.png

第二个APP

小学数学加减法电脑版
  • 版本:0.0.2
  • 下载地址:https://dl.pconline.com.cn/download/2343535.html

小学数学加减法电脑版是一款热门的学习办公软件,功能齐全,操作简单流畅,具备良好的用户体验。本站提供小学数学加减法电脑版下载。本来是自用的,现在放出来给有需要的家长。 带小孩出去时候,经常有些碎片时间,比如去餐厅吃饭之前,这个时候小孩都是在玩电脑游戏,所以想着能不能利用起来,考虑到自己儿子也在读小学,就做了这个小软件,方便家长让一二年级的小孩练习数学计算。 提供一二年级的数学加减乘除运算测试,一次10题,花费的时间也不多,通过自己小孩测试情况看,还是有效果的。

这个APP很不错,简单有用,给作者点赞!但是没开源,看了一下,是H5的,直接修改www目录的js。

最后改造:修改了下题目的难度,打包签名即可,后面还可以基于作者的模板自己写题。

/posts/2022/diy-math-app/res/9.png

文末

本文只是做个简单小记,说明如何修改两个APP,更多只是为了解决我的小需求,感兴趣或者有疑问的可Email联系。