浅析微信系列之漂流瓶

准备工作

  1. apktool

  2. jadx

  3. notepad++/sublime/其他好一点的文本编辑器

  4. 手机端可以下载一个Auto.js/开发者助手(补充准备)

  5. 准备好这些工具之后,就可以开始了。为了让文章表达的内容具备可操作性,将按顺序步骤说。

详细步骤

反编译微信

apktool d weixin673.apk

导入编辑器

将反编译后的文件夹整个拖入sublime text,找到res/values目录下的public.xml和strings.xml,分别打开备用。

反编译工具jadx-gui

使用jadx-gui打开weixin673.apk,等待反编译完成,如果你电脑配置大于8G,建议给jadx配置内存如图:在这里插入图片描述
否则就需要单独解压出dex单独反编译了,后面分析起来超级麻烦,略过。

手机端操作

打开Auto.js,打开悬浮窗和它的辅助功能。
打开微信的界面,进入漂流瓶,就是这么个界面:
在这里插入图片描述
点击左边的扔一个,是这样的:
在这里插入图片描述
因为瓶子有2中类型,文字和语音。
我们先看文字的,点击左边图标切换到发送文字模式:在这里插入图片描述
上面是一个文本编辑器,下面有个按钮。
体验一把,写几个字,然后点扔出去,瓶子就被装进瓶子扔出去了。
所以,入口就是扔出去按钮。

Auto.js出场

看见右边那个圆球了没?点击,它会绘制一个UI界面,非常方便分析控件,选中**扔出去**按钮,查看它的一些属性,我主要关注clickableenabledfocusableidtext,重点是clickableidtext
因为我分析的是目前2018.11.22最新版(6.7.3-1360),所以这个按钮的id = a62

文本编辑器

一开始打开的public.xml和strings.xml还记得吧,现在关注public.xml,搜索a62,一定要找对:在这里插入图片描述
复制id=0x7f1104c8这段0x.......的16进制值,转换成10进制:在这里插入图片描述
复制转换后的10进制值,在jadx-gui中全局搜索text:在这里插入图片描述
点击搜索结果,复制bottle_throw_btn,再次全局搜索:在这里插入图片描述
点击搜索结果,可以看到这个按钮初始化的地方。

猜想

文章前面体验了一把扔瓶子,点击瓶子就会把这条消息发出去,他肯定有一个点击事件,OnClickListener,但是分析这个类的OnClick()方法,并没有发现这个按钮的逻辑,这咋整?回到这个按钮初始化的地方,看到他有设置触摸事件setOnTouchListener,如图:在这里插入图片描述
new ThrowBottleUI$2,全局搜索这个类,看到:在这里插入图片描述
case 1:手指弹起,分支好像看到了,getText().toString().trim(),第二个框,h.c cVar = new h.c(trim, this.ibL);可疑的操作,把获取到的字符串传进去了,跟进去:在这里插入图片描述
分析过微信的朋友看到这行代码,是不是很熟悉的味道?哈哈。
这里他au.Dk().a(new g(str), 0),我们再打开g类:在这里插入图片描述
红色标注的再往下应该就是xie议级别的了,就不往下看了,毕竟仅做学习记录之用。

最后

那么微信的扔漂流瓶的功能是分析完了,用来写xposed模块,只需分析到此就行了,其实还有一个就是扔语音,这是一个简单又刺激的任务,提示: 就是最后那个g类,它的第二个构造函数,我hook了它,打印出的第一个参数是语音文件的imgPath, 第二个参数是语音时长(单位毫秒),那么实际上漂流瓶的内容就分析完了。

总结一下

  • 逆向从控件出发,从简单的入口开始。
  • 善于猜想,毕竟都是第一次。
  • 把猜想付出实践,实践是检验真理的唯一标准。
  • 那么最后不留联系方式了,有事漂流瓶联系。
  • 请尊重原创,Javaer
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值