如何调试Android微信


调试线上apk作为一个比较简单、有效的逆向手段,能够简单粗暴对smali文件打断点,从而猜测开发者的意图,了解app内部的逻辑。

本次只对java代码做一个调试,对于C/C++编写的native代码编译的so文件,下篇分析。为了能够方便的调试,本次使用的手机是debug版本的Android rom。

反编译

本次以微信的最新版本6.7.3版本为例,使用apktool工具反编译获取获取smali文件。

➜  ~ apktool d /Users/cmm/com.tencent.mm.apk
I: Using Apktool 2.3.3 on com.tencent.mm.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /Users/cmm/Library/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
S: Could not decode file, replacing by FALSE value: layout-v14/chatting_item_to_shortvideo.xml
S: Could not decode file, replacing by FALSE value: drawable-xxhdpi-v4/reader_news_fontfour.png
S: Could not decode file, replacing by FALSE value: layout/ipcall_share_dialog_ui.xml
复制代码

得到文件:

加载smali文件

  • 新建一个项目,复制smali文件到src目录下。
  • 安装android studio的smali插件(github.com/JesusFreke/…)
  • 开始调试,启动微信
    bash adb shell am start -D -n "com.tencent.mm/com.tencent.mm.ui.LauncherUI"

小试牛刀

先看下拿到了这个源代码能够干啥。

先抓下登录界面的UI。


调试逻辑

就看下微信登录的流程,学习下。先看下当前的登录的activity是哪个:

➜  ~ activity
  mCurrentFocus=Window{eba6f62 u0 com.tencent.mm/com.tencent.mm.plugin.account.ui.MobileInputUI}
  mFocusedApp=AppWindowToken{10c4e57 token=Token{11b6bd6 ActivityRecord{9eca3f1 u0 com.tencent.mm/.plugin.account.ui.MobileInputUI t1799}}}
➜  ~

复制代码

搜索result_data关键字,能够看到所有的rpc请求返回。

结尾

本文的方法无法对加了壳的apk调试。由于加壳会导致性能问题、crash问题等,目前很多大厂的apk没有加壳。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值