首先用 AndroidCrackTool 反编译apk,查看得到的AndroidManifest.xml,在里面寻找Loca关键字,发现有com.immomo.momo.map.activity.MyLocationAMapActivity类,
然后用AndroidCrackTool提前dex,发现只能提取一个,手工把apk改成zip,把里面所有的dex文件复制出来,然后逐个转换成jar文件。
把所有的jar文件用 jd-gui.jar 打开查看,在classes13.dex.jar中找到com.immomo.momo.map.activity.MyLocationAMapActivity类,发现是继承自 BaseAMapActivity,看了看反编译代码 (此处注意,不同版本的jd-gui对同一个jar文件反编译的结果不同,同一个类的方法,有的版本可以正确反编译,有的还是字节码,不分高低版本,都有可能出现)发现好像不是想要的类。
从AndroidManifest.xml中查找 service,发现一个com.amap.api.location.APSService,根据定位代码实现原理,定位本身应该是作为一个服务出现。于是在classes.dex.jar中找到此类,根据代码找到里面的定位信息都通过com.amap.api.location.AMapLocation类来传递。在此类中找到getLatitude,setLatitude,getLongitude,setLongitude方法。写frida脚本hook.
setTimeout(function(){
Java.perform(function () {
var hook = Java.use("com.amap.api.location.AMapLocation");