android逆向奇技淫巧二:ui automator viewer查找资源id和定位关键代码

  做逆向,不论是在windows还是Android,抑或是macos,都必须要面对的一个问题:找到关键的代码。android平台下怎么找到关键的代码了?本文以某国民级短视频APP为例,分享从UI界面定位到关键代码的链路逻辑!

  老规矩,先在模拟器运行这款APP,然后打开ui automator viewer “截屏”(注意:要暂停短视频播放才行,否则截屏的时候会报错)!如下:

       android逆向奇技淫巧二:ui automator viewer查找资源id和定位关键代码

   比如我们想找点赞按钮的执行代码(至于为什么要找这个按钮的执行代码,道上人士都懂的),光标移动到笔芯上,右边就会显示出笔芯的imageView,这里能看出其实是一个按钮控件;先阿敏有resource-id和class类型;接着进入jadx(这种apk上百兆,用jadx容易卡死,需要增加内存,增加的方法见文章末尾的参考1),找到resources.arsc文件,用刚才找到的id字段也就是byb作为关键词,找到点赞笔芯的id: 2131168834

        android逆向奇技淫巧二:ui automator viewer查找资源id和定位关键代码 

  然后继续搜索,发现原来是这两行代码引用了:

      android逆向奇技淫巧二:ui automator viewer查找资源id和定位关键代码

  本想点击进一步查看java源码,无奈本机内存只有16G,而jadx已经消耗了9G,还是卡者不动,无法继续,这里换成android killer继续逆向分析。把这一串id转成16进制,然后在android killer里面搜索:

  android逆向奇技淫巧二:ui automator viewer查找资源id和定位关键代码

       发现到处都在引用;后续会继续分享怎么分析这些引用!

   

  附:至于这里为啥用id来检索,而不是控件的名称了?我个人理解:大概率是因为控件名称开发人员随时都可能更改,所以编译器自动生成id与之对应。控件名称随时可以改,但是id不变,通过这种方式做到松耦合!

 

 

参考:

1、https://blog.csdn.net/PLA12147111/article/details/100062592  jadx卡死解决方案

android逆向奇技淫巧二:ui automator viewer查找资源id和定位关键代码

上一篇:C语言 void 指针 - C语言零基础入门教程


下一篇:Java设计模式:代理模式(一)