Lyxin_c 发表于 2019-2-12 15:49

hook微信骰子和划拳功能

本帖最后由 Lyxin_c 于 2019-2-12 19:07 编辑

微信版本703.


首先进行方法分析,假设随机数产生是在本地(否则微信服务器处理内容是不是太多了),并且在点击过程中,有点击事件的产生,onItemClick,有随机数方法random。

在方法跟踪中操作,搜索点击事件:

如果我们使用jadx去查看分析,也可以确定点击事件出发了smileyGrid的a方法,所以这个入口是对的。



搜索随机数函数,只有一个parent:



尝试去hook方法 gv,参数有两个,返回值是int。第一个参数应该是结果范围,第二个参数应该是起始位置。


多次使用骰子去获取参数和返回值,发现参数1恒等于5,参数2是0,返回值在0-5之间波动,恰好骰子结果等于返回值+1 .!


多次使用划拳去获取参数和返回值,发现参数1恒等于2,参数2是0,返回值在0-2之间波动,剪刀为0,石头为1,布为2.!




(手机截图就不上传了)
振奋人心的结果,可以得出最开始的假设结论,随机结果就是在本地产生的。



总结一下:我找这个随机函数找了很久,思路一直是线性的从方法跟踪和对应代码入手,因为经过了反编译,所以阅读难度大,代码数量多,经历了许多无意义操作。Hook需要的是结果,那我直接去猜测引用过random函数,有点击事件,从而直接找到了想要的结果。大胆猜测,小心求证应该就是这样了。

慕琪 发表于 2019-2-12 20:27

最简单的就是自己先断网,然后自己点筛子,然后等出红感叹号,选自己需要的 点重新发送不就行了。。无脑

Lyxin_c 发表于 2019-2-12 17:52

丶那年如此年少o 发表于 2019-2-12 17:02
HOOK后将返回值设置成某个值就可以实现骰子每次的值都一样了吧?

是的,测试了一下,一直是一个值。但是你一直摇6就很过分了{:1_926:}

米小图 发表于 2019-2-12 16:25

这种的对用户数据影响不太的大行为应该都是本地随机。

丶那年如此年少o 发表于 2019-2-12 17:02

HOOK后将返回值设置成某个值就可以实现骰子每次的值都一样了吧?

tydzjing 发表于 2019-2-12 17:19

厉害了,这个如何应用呢

Lyxin_c 发表于 2019-2-12 17:51

tydzjing 发表于 2019-2-12 17:19
厉害了,这个如何应用呢

hook的位置在文中说了,自己写个hook的demo就可以了。

xj1314520 发表于 2019-2-12 18:47

66666666666666666666666

Lyxin_c 发表于 2019-2-12 21:19

慕琪 发表于 2019-2-12 20:27
最简单的就是自己先断网,然后自己点筛子,然后等出红感叹号,选自己需要的 点重新发送不就行了。。无脑

现在已经改了吧。反正这只是小练习。

wy0515 发表于 2019-2-13 01:09

支持 希望多发这样的帖 7.0.0微信版本以上的分析太少了   
页: [1] 2
查看完整版本: hook微信骰子和划拳功能