008神器依赖xposed可修改其他应用获取到的系统参数值,见下图
但是我们直接从网上下载的008神器生成的手机型号和安卓版本号都是好几年前的。下面就来分析下怎么修改这些手机型号和安卓版本号数据。
首先当然是要反编译,这里推荐个反编译神器:Android Killer,支持一键反编译
反编译后的项目结构如下图:
然后找到存放手机型号的文件:imeiStore,按现有格式将新的手机型号数据增加或者替换进去
安卓版本号并不在imeiStore中,而是在代码中保存了一个map,然后每次都随机生成,查找到该文件
点击图中红色箭头指向的按钮,即可将smali文件转化成java文件,查看java文件
这里我们需要将apiLevelMap的key-value进行修改,改成自己想要的安卓版本信息。那么如何改呢?我们可以直接改java文件然后将修改后的java文件通过工具转换成smali文件再放回原目录中。但是因为我们这里修改map的key-value对代码结构几乎没有影响,所以我选择直接修改smali文件。不过,这里有一个需要注意的地方,就是方法getSdkLevel()
这个随机获取sdkLevel的方式,当我们修改上面的版本号后需要进行相应的修改。原本的sdkLevel是从api6开始并且后面的key都是连续的,所以这个算法里直接用了String str = r.nextInt(i) + 6和apiLevelMap.get(str)。为了尽量简单,我只改为apilevel从17开始,并且后续key也都是连续的,所以这里我就只需要把+6改为+17.
修改好后将文件放回反编译后的原目录下。
接下来就是再打包。放到相同目录下,使用apktool将反编译后的项目文件夹重新打包成apk文件,打包命令:apktool b 008shenqi
打包后的apk在你的项目包里的dist文件夹下,之后我们将这个apk进行签名,签名成功即可直接运行。
android killer同样为我们提供了便捷的签名功能: