需求描述:008神器生成的数据中,手机型号数据老旧并且android版本低于4.4无法满足现有需求,需要更新手机型号数据并且扩展到更高的android版本。
思路一:反编译008神器并重新打包
使用androidKiller反编译008.apk,点击打开链接
思路二.实现一个修改手机信息的xposed模块
#.xposed介绍
xposed框架的作者是rovo89,Xposed框架的原理是修改系统文件,替换了/system/bin/app_process可执行文件,在启动Zygote时加载额外的jar文件(/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar),并执行一些初始化操作(执行XposedBridge的main方法)。然后我们就可以在这个Zygote上下文中进行某些hook操作。
- XposedInstaller,这是Xposed的插件管理和功能控制APP,也就是说Xposed整体管控功能就是由这个APP来完成的,它包括启用Xposed插件功能,下载和启用指定插件APP,还可以禁用Xposed插件功能等。
- Xposed,这个项目属于Xposed框架,其实它就是单独搞了一套xposed版的zygote。这个zygote会替换系统原生的zygote。所以,它需要由XposedInstaller在root之后放到/system/bin下。
- XposedBridge。这个项目也是Xposed框架,它属于Xposed框架的Java部分,编译出来是一个XposedBridge.jar包。
- XposedTools。Xposed和XposedBridge编译依赖于Android源码,而且还有一些定制化的东西。所以XposedTools就是用来帮助我们编译Xposed和XposedBridge的。
#.关于xposed的使用
1.添加依赖包:导入XposedBridge.jar包或使用gradle依赖
provided files('libs/XposedBridgeApi-54.jar')
这里使用provided而不用compile是因为xposed框架中已经包含该jar包,所以只建立编译时依赖。
2.声明xposed模块
<!-- 标记app为xposed模块 --> <meta-data android:name="xposedmodule" android:value="true" /> <!--xposed版本 --> <meta-data android:name="xposedminversion" android:value="54" /> <meta-data android:name="xposeddescription" android:value="测试Xposed" />
3.创建hook类
public class XposedUtil implements IXposedHookLoadPackage { @Override public void handleLoadPackage(XC_LoadPackage.LoadPackageParam mLoadPackageParam) throws Throwable { } }
4.声明hook入口
创建完我们hook类之后,我们需要将该类加载到XposedInstaller中,也就是我们必须声明该类的位置,需要在xposed_init中声明:创建assets文件夹,然后在里面新建一个文件,文件名为xposed_init,没有后缀,然后在里面写入我们刚刚创建的类的完整类名
com.dovar.fakermobile.XposedUtil