美文网首页逆向 & 外挂Android开发程序员
微信掷骰子,如何掷出6个6?

微信掷骰子,如何掷出6个6?

作者: wuhtt | 来源:发表于2017-09-26 13:41 被阅读1144次

    欢迎访问我的博客,阅读体验会更好哦。

    微信自定义表情的石头剪刀布还有掷骰子,相信大家都有玩过,它的结果是随机的,那有没有一种办法使这个结果确定呢?

    百度知道

    百度知道上是这么说的,我试了一下,不行,重发的时候会骰子的点数会再次改变,可能是对老版本才适用吧。

    其实,在 Android 中使用 Xposed 框架可以完成类似的需求的,在很久以前,我就用过这种插件了,而且在github 上有开源的项目,但是这些项目现在没有适配新版本的微信,而且写 xposed 插件,代码本身没什么,最主要的是找到切入点,什么时候hook,什么时候改变返回等,本文使用最新版本的微信,以hook掷骰子为例,写一个插件,让每一次掷骰子的结果确定。

    微信版本

    我们要找到掷骰子时执行的关键方法,怎么找呢?

    1. 反编译app后,顺着逻辑,猜着找,app经过混淆后,代码可读性很差,难度较大
    2. 通过一些工具来抓取关键方法执行顺序的log,这里介绍两款 icodetoolsAppMethodOrder

    通过 AppMethodOrder 抓到了掷骰子,到骰子点数出现的过程中,所有执行过的方法,如图所示:

    很多的

    然后,我们搜索random,因为他有很大的可能会调用这个函数实现随机,发现只有这个地方用到:

    而且可以看到,跟 tencent 有关的,而且返回值是 int 的函数是这个:

    基本确定是这个就是关键的的函数了,我们可以看一下代码

    这代码是啥意思呢?经过我调试发现,但我们点剪刀石头布的时候参数是2和0,当点击骰子的时候,参数是5和0,所以其实函数的作用就是生成参数一范围内的随机数。

    好的找到了关键函数函数后我们hook这个dM方法:

    改变他的返回值:

    这里稍微注意一下,如果将返回值设置成5,而选择的是剪刀石头布的时候,微信会崩掉。。。

    z可以通过 XSharedPreferences 来完善这个项目,动态修改这个值实现骰子点数的变化。

    最后看一下效果?

    效果图

    欢迎打赏、点赞、关注。

    参考

    Android中利用icodetools工具快速定位App破解中关键点方法

    相关文章

      网友评论

        本文标题:微信掷骰子,如何掷出6个6?

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