美文网首页Android逆向笔记
花式向朋友炫耀自己微信小游戏技巧

花式向朋友炫耀自己微信小游戏技巧

作者: h080294 | 来源:发表于2018-07-17 22:12 被阅读62次

    最近朋友通过微信给我分享了一个养鲲的小程序游戏,开始觉得没什么,后来渐渐的停不下手来了。游戏就是养鱼赚钱,然后用赚的钱再买鱼,最后“吞噬”合成鲲中的王者--“彩鲲”。

    但是单靠养鱼赚钱太难了,高级的鱼和鲲贵的吓死人。联想到红极一时的跳一跳小游戏以及各种花式辅助,想着自己也分析一下。

    一、分析日志Log信息

    Android系统及其程序日志一般都是通过LogCat输出的,通过logcat的输出内容,我们能看出很多端倪。市场上虽然有一小撮app直接使用Android自带的工具类,但是大部分的app都封装了自己的Log工具类。

    首先,我们从log方面入手。解压apk,查看一下目录文件,在lib中发现了可疑的log相关的文件,libwechatxlog.so。

    简单的浏览一下内容,看起来跟log很有强的相关性,导出函数也多以xlog为开头。

    接下来去dex中搜索xlog,在XLogSetup类发现了关键词Boolean isLogcatOpen,判断应该是打开Logcat的开关。

    到这里,我们可以观察一下keep_setupXLog的参数。方法中一共有7个参数,我们最为关心的是给isLogcatOpen赋值的那个boolean参数,也就是第6个参数。并且是由Xlog.setConsoleLogOpen(isLogcatOpen.booleanValue())控制开关。接着注意到在代码中“public static Xlog xlog = new Xlog()” 创建了一个xLog的对象,根据其功能,看起来xLog像是一个工具类。

    搜索一下xLog,到Xlog类看一看。

    这里xLog实现了一个接口a。XLoggerInfo看上去就是日志的组成结构,logWriter写出的信息也正好是XLoggerInfo的相关日志组成信息。

    interface a的结构和android系统的日志结构类似,并且也设定了不同的日志级别。

    在接口实现的x类中,我们看到了具体到各个级别的log输出。其调用参数“str, "", "", Process.myTid(), Process.myPid(), Thread.currentThread().getId().......”也和XLogInfo的结构一致。

    所以hook住这个参数并打印,就能得到对应的日志信息了。

    二、Log日志

    有了日志,我们就可以进一步的分析了。查看日志,发现了WxaPkgRuntimeReader Tag打印的信息,看名字猜测是小程序的运行时的相关日志。

    根据标签MicroMsg.WxaPkgRuntimeReader,找到对应的类。通过分析(查阅资料)得知,public static String a(g gVar, String str)方法所返回的就是js源码。

    继续hook该方法,然后把js文件存到本地即可。

    三、修改源码

    dump下来源码后,就可以查看相关的逻辑。我们的目标是不花钱就可以购买巨贵无比的鲲,搜索代码,最终发现消费钱币的地方:this.currentCoin = this.currentCoin - t;。那么我们将减号替换成加号,就可以越买越多了。

    四、实际效果

    简单写一个xposed插件,hook上面分析的过函数。

    通过日志把相关信息打印出来,可以看到是hook成功的了。

    到游戏中实际体验一下,不减钱随便买,轻松合成了最高级别的鲲。钱由于是累加的,已经多到不会念了,6935D到底是多少。。。

    后记

    随便修改游戏的代码逻辑是不可取的,会失去游戏的乐趣,并且这种作弊的行为可能会导致封号。

    更多有意思的内容,关注微信订阅号

    相关文章

      网友评论

        本文标题:花式向朋友炫耀自己微信小游戏技巧

        本文链接:https://www.haomeiwen.com/subject/kwbrpftx.html