Jun_19.md

今日任务

  • 定位目标

Que 0x01 思路梳理

  • 最终任务:逆向分析某 apk,梳理其主干功能代码逻辑

之前想到的定位方案是通过关键字搜索的方式来定位到功能模块,不过在实践中验证了这条思路不可行。

由于没有过 Android 开发经验,所以这里打算先了解一下 Apk 打包的大致过程。

Que 0x02 Apk 打包大致过程

Step 1 打包资源文件,生成 R.java 文件

输入

  • Resource 文件
  • Assert 文件
  • AndroidMainfest.xml 文件
  • Android 基础类库

工具

  • aapt

输出

  • 打包好的资源文件
  • R.java 文件

Step 2 处理 aidl 文件,生成相应的 java 文件

输入

  • 源码文件
  • aidl 文件
  • framework.aidl

工具

  • aidl

输出

  • .java 文件

Step 3 编译工程文件,生成相应的 class 文件

输入

  • 源码文件
  • 库文件

工具

  • javac

输出

  • .class 文件

Step 4 转换 class 文件,生成 .dex 文件

输入

  • .class 文件
  • 库文件

工具

  • javac

输出

  • .dex 文件

Step 5 打包生成 apk

输入

  • 打包后的资源文件
  • 打包后类文件
  • libs 文件

工具

  • apkbuilder 工具

输出

  • 未签名的 .apk 文件

Step 6 Apk 签名

输入

  • 未签名的 .apk 文件

工具

  • jarsigner

输出

  • 签名的 .apk 文件

Step 7 对签名后的 Apk 文件进行对齐处理

输入

  • 签名后的 .apk 文件

工具

  • zipalign

输出

  • 对齐后的 .apk 文件

Que 0x03 新的思路

在大致了解了 Apk 打包过程之后,发现似乎除了对 Apk 架构更了解以外,对于当前的任务并没有很大的帮助。

请教前辈之后,得到一个新的思路,定位当前的顶层 Activity,找到关键功能的 button,看看是如何实现的。

Que 0x04 定位顶层 Activity

这里只写测试手机:

adb shell dumpsys activity | grep "mResumedActivity" # 三星 S8
adb shell dumpsys activity | grep "mFocusedActivity" # 坚果 Pro2

目标 app 当前 Activity 信息如下:

mResumedActivity: ActivityRecord{e335a40 u0 com.samsung.android.app.music.chn/com.samsung.android.app.music.common.activity.MusicMainActivity t294}

那么其 Activity 名为 com.samsung.android.app.music.chn/com.samsung.android.app.music.common.activity.MusicMainActivity 尝试分析这个 Activity

你可能感兴趣的:(Jun_19.md)