抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输(上)

简介: 利用Xposed Hook掉微信猜拳和投骰子

引言



关于这节,反编译apk,看smail代码,ddms轨迹跟踪方法调用: 打开DDMS选择自己微信进程:com.tencent.mm,点击下这个箭头的图标



弹出个是否跟中的对话框,选中,接着就可以开始跟踪了,



界面上点击下发送猜拳的表情,等随机的结果定格之后再按一次,停止跟踪。



然后find输入搜索的关键字,比如我试过: click,emoji,gif等,一直试一直试,昨天试了一天,并没有得出个所以 然来,心情巨差...今天下午突发奇想,从另外一个角度去取巧,人品不错 折腾个所以然来了。


Java中的产生随机数的方法基本都是两种:


  • Math.random()


  • new Random()


可以以这个为突破点试试,利用Jadx把dex文件转换为java文件


1.Jadx把dex文件转换为java文件


官方地址github.com/skylot/jadx


下载编译源码(最后一步,windows下直接运行gradlew.bat):


git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist


等编译完就能用了,cd到build/jadx/bin目录下,你可以使用下述 两个命令,反编译源码(out是输出文件夹,可自己修改)或者直接查看


jadx -d out xxx.apk
jadx-gui xxx.apk


接着呢,普通的APK可以这样整,但是呢,如果微信apk这样搞,那就恭喜你了 过一会儿就卡死了...我的操作是直接解压的apk,然后把里面六个.dex文件 依次调用jadx -d xxx xxx.dex这样,分别反编译到不同的文件夹,最后 放到一个文件夹里



再接着使用as打开。



再接着就要进行分析了。


2.随缘分析


上面讲了,随机基本就那两种套路,ctrl + shift + f 全局搜索 Math.random\(这里用了正则~



18个,不算太多,一个个打开猜测一波:


  • 第1个,排除了,生成0到100的整数,而且这里有个Xfermode东西,猜测是进度条渐进加载的东西。



接着好几个看名知意的(最喜欢这种了~)


  • 第2个,updater排除


  • 第3个,mapsdk排除


  • 第4,5个,offline排除


  • 第7个,*一个这样的数字,不是正常的值...排除


  • 第8个,ShakeEggAnimFrame,直译,摇蛋动画Frame,猜测是摇一摇那个页面的东西..



  • 第9,10,11,因为名字关系,同样排除。


  • 第12个,ChattingAnimFrame,名字有点感觉,聊天动画Frame,方法也有点像,待定。


  • 第13,14 进去看看就知道不是了


  • 第15,16个,点进去看到包名,luckmoney,跟发红包相关的,排除;



  • 第17个,mapsdk包名,应该和腾讯地图有关,排除


  • 第18个,BallonImageView,Ballon翻译毛玻璃,排除。


到此就可能第12个,ChattingAnimFrame 有一定可能是,mark先。


接着全局搜:= new Random\(\),33个,不算多,也不算少, 排除法一一排除,包名,类名,里面的注释,随机是否合理等。



限于篇幅,就不一一列举了,最后定义到这个类:bh.java,然后这个类 里有3个包含Random,依次排除,第一个字符拼接的,肯定不是:



第二个,方法里不加具体整数的话,返回的会是一个随机的整数,排除



那么就剩下第三个了:



综上,随机生成结果的可能就是上面两个地方了。


再接着,再考虑一个问题,猜拳就三种情况,石头剪刀布,这个随机值, 大部分开发都会用0,1,2这样的表示,当然你说float了,再做下向上或者 向下取整,maybe?不过感觉这样的小功能还做取整就有点繁琐了,so, 先试试第二个地方吧。接下来编写一波xposed代码,Hook掉这个方法, 试试Log把这个方法的参数和返回结果都打印出来,如果投骰子的时候 回调了,证明我们的猜想没错。


相关文章
|
8月前
|
Go
腥风血雨中,这招救了我的代码!
腥风血雨中,这招救了我的代码!
31 0
|
6月前
|
图形学
Unity小游戏——使被砍中的怪物四处飞散
Unity小游戏——使被砍中的怪物四处飞散
|
数据库 Android开发
|
数据库
|
数据库管理
|
安全 Java
老爷子这代码,看跪了! (下)
老爷子这代码,看跪了! (下)
108 0
老爷子这代码,看跪了! (下)
|
Java 程序员
老爷子这代码,看跪了! (中)
老爷子这代码,看跪了! (中)
122 0
老爷子这代码,看跪了! (中)
|
Java
老爷子这代码,看跪了! (上)
老爷子这代码,看跪了! (上)
130 0
老爷子这代码,看跪了! (上)
|
数据安全/隐私保护 索引 Python
这下女友总算满意了!
上次跟女友介绍了正则表达式的基本语法,以及在 Python 中如何使用。结果她还不满意,说传说中的正则表达式就这么简单?当然不是,今天就来跟大家一起介绍下正则表达式更多的使用技巧。
139 0