我们可以在一部已经Root的安卓手机上,通过安装 Edxpose框架和安装一些插件,来hook 应用是如何调用Android一些方法,并且可以根据打印出的堆栈信息来判断是应用本身的行为,还是应用中的第三方SDK的行为。我们在这里仅仅描述自定义的插件,至于前提条件,各位可以查看Android 手机如何安装EdXposed。
1 主要功能
- Hook 被应用调用的Android 底层方法
- 在log中,仅仅记录我们想测试的应用,其他的应用日志不做记录
- 需要打印出堆栈信息,方便 开发进一步debug。
2 一些开发中小建议
* Step 1 把APP的 Manifest 文件倒出来 * Step 2 整理全部的permission * Step 3 优先查找 TelephonyManager 这个类里的对应的方法
3 我们这里列举几个底层方法,其余的需要您有一定的Android基础,或者你跟Android开发的关系非常好,让他帮你查Mainfest。
* 1 当前设备在WIFI下的Mac地址 * 2 读取联系人信息 * 3 当前设备在WIFI下的ip地址 * 4 当前设备的Mac地址 * 5 当前设备的ip地址 * 6 当前设备的imei * 7 当前设备的位置信息 * 8 当前设备的获取数据连接状态 * 9 当前设备的软件版本号 * 10 当前设备的手机号码 * 11 返回ISO标准的国家码,即国际长途区号 * 12 返回移动网络运营商的名字(SPN) * 13 获取网络类型 * 14 获取设备类型 * 15 SIM卡提供商的国家代码 * 16 统计其他应用的使用数据 * 17 手机状态和服务相关信息 * 18 指纹或生物识别 * 19 摄像头 * 20 SIM卡IMSI信息
1 class : android.net.wifi.WifiInfo
Method : getMacAddress / getIpAddress
2 class : java.net.NetworkInterface
Method : getHardwareAddress / getInetAddresses
3 class : android.telephony.TelephonyManager
Method : getDeviceId / getCellLocation / getDataState / getDeviceSoftwareVersion
getLine1Number / getNetworkCountryIso / getNetworkOperator /
getNetworkType / getPhoneType / getSimCountryIso / getSubscriberId
getServiceState /
4 class : android.hardware.fingerprint.FingerprintManager
Method : authenticate /
5 class : android.hardware.camera2.CameraManager
Method : openCamera
6 class : android.app.usage.UsageStatsManager
Method : queryUsageStats 详细代码待整理~
版权声明:本文为weixin_39757068原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。