1.预览
本文主要介绍快速定位UI界面的内容在java层的位置;这样可以快速找到自己想要的函数方法;
首先打开UI Automator Viewer;位置在Sdk\tools\bin\uiautomatorviewer.bat ,双击打开,可以看到app的页面布局;
我们看到评论顶部有谁谁来了,resource-id为taolive_chat_item_content,接下来我们就要找到这个响应是如何处理的;
2. 找对应的id
由于电脑用的是windows,所以下载了cygwin64模拟linux环境;可以使用linux命令
apktool反编译apk,本次apk为淘宝直播;在res/value/public.xml中过滤出带有taolive_chat_item_content关键字的资源id
$ grep -ri "taolive_chat_item_content"
ids.xml: <item type="id" name="taolive_chat_item_content" />
public.xml: <public type="id" name="taolive_chat_item_content" id="0x7f101aa8" />
找到对应的id为0x7f101aa8,直接在smali的R类里过滤这个id值就能找到这个资源对应的变量名;
该apk有五个smli文件夹;最好分别搜索;只在smali_classes3和smali_classes4中看到,不过在第一个文件中只定义了好像没用
yxd@DESKTOP-A6A0P2L /cygdrive/f/Android/apktool/taobaos/smali_classes4
$ grep -ri "0x7f101aa8" com/taobao/taolive/room/R$id.smali:.field public static final taolive_chat_item_content:I = 0x7f101aa8
看到变量又被定义为taolive_chat_item_content;
$ grep -ri "taolive_chat_item_content"
com/taobao/taolive/room/R$id.smali:.field public static final taolive_chat_item_content:I = 0x7f101aa8
com/taobao/taolive/room/ui/adapter/ChatListAdapter$MsgItemViewHolder.smali: sget p1, Lcom/taobao/taolive/room/R$id;->taolive_chat_item_content:I
com/taobao/taolive/room/ui/view/TopMessageView.smali: sget v1, Lcom/taobao/taolive/room/R$id;->taolive_chat_item_content:I
可以看到在上面两个类中对这个变量进行声明。
3. java层寻找
下面用jadx打开对应的dex文件;可以全局搜索taolive_chat_item_content,也可以找到那两个类;
初步鉴定发现第一个只是UI下面评论的响应,因为他们共用的同一个resource-id;
分析这个类的大体逻辑;
初步分析和ChatTopMessage chatTopMessage有关系;因为等XX人也会在相同的位置输出;
ctrl摁住跳转;
更像是一种初始化,
判断会经过这里;使用frida hook一下该函数 发现确实从这里经过;
1040{"nick":"玉佩","identify":{"APASS_USER":"0","fanLevel":"1","VIP_USER":"0"},"userid":"2722966967"}
1040{"nick":"蹦蹦哒h","identify":{"APASS_USER":"0","fanLevel":"1","VIP_USER":"0"},"userid":"2744684528"}
1040{"nick":"一切从零开始120","identify":{"APASS_USER":"0","fanLevel":"0","VIP_USER":"0"},"userid":"1926790430"}