反编译与xposed模块开发

需求描述: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就是用来帮助我们编译XposedXposedBridge的。
#.关于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
#.个人项目地址点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值