如何通过类名找到对应的dex文件

本文介绍两种定位Android中特定类(AppStartupManager)实现位置的方法。方法一针对系统类,通过查看日志、进程名及源码来定位;方法二适用于APP类,利用脚本(ClsName2FindDex.sh)快速定位类所在的DEX文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

假设仅知道AppStartupManager这个类关键词,我们需要找到其对应实现的类。

方法一适用于寻找系统类
方法二适用于寻找APP类

方法一

  1. 先通过查看log,找到对应的pid
  2. ps | grep pid 查看对应的进程名称processName
  3. 通过processName谷歌到对应的源码 (善用搜索技巧)
  4. 然后通过上层目录(可能在上n层),找到Android.mk文件
  5. 查找 LOCAL_MODULE:= services
  6. 这里的 services 即为我们最终的dex文件
  7. 到/system/framework/下找到services.dex(或其他格式)
  8. 反编译即可

方法二

使用ClsName2FindDex.sh脚本寻找

sh ClsName2FindDex.sh demo.apk className

#######################################################
#
#
#   Name: ClsName2FindDex
#   Author: Tasfa
#   Version: V1.0.0
#
#   Usage: sh ClsName2FindDex.sh demo.apk className
#
#######################################################

unzip -o -q $1 "*.dex" -d ./dex
for i in `find ./dex -name "*.dex"`; do
    out=`strings $i | grep $2\;`
    first=${out:0:1} 
    if [ ! $first ]; then  
       : 
    else  
       echo "Class L$2 maybe in "
       echo "\033[31m$i\033[0m"
       echo $out
    fi     
done
rm -rf ./dex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值