做逆向,不论是在windows还是Android,抑或是macos,都必须要面对的一个问题:找到关键的代码。android平台下怎么找到关键的代码了?本文以某国民级短视频APP为例,分享从UI界面定位到关键代码的链路逻辑!
老规矩,先在模拟器运行这款APP,然后打开ui automator viewer “截屏”(注意:要暂停短视频播放才行,否则截屏的时候会报错)!如下:
比如我们想找点赞按钮的执行代码(至于为什么要找这个按钮的执行代码,道上人士都懂的),光标移动到笔芯上,右边就会显示出笔芯的imageView,这里能看出其实是一个按钮控件;先阿敏有resource-id和class类型;接着进入jadx(这种apk上百兆,用jadx容易卡死,需要增加内存,增加的方法见文章末尾的参考1),找到resources.arsc文件,用刚才找到的id字段也就是byb作为关键词,找到点赞笔芯的id: 2131168834
然后继续搜索,发现原来是这两行代码引用了:
本想点击进一步查看java源码,无奈本机内存只有16G,而jadx已经消耗了9G,还是卡者不动,无法继续,这里换成android killer继续逆向分析。把这一串id转成16进制,然后在android killer里面搜索:
发现到处都在引用;后续会继续分享怎么分析这些引用!
附:至于这里为啥用id来检索,而不是控件的名称了?我个人理解:大概率是因为控件名称开发人员随时都可能更改,所以编译器自动生成id与之对应。控件名称随时可以改,但是id不变,通过这种方式做到松耦合!
参考:
1、https://blog.csdn.net/PLA12147111/article/details/100062592 jadx卡死解决方案