Xposed 入门

  • Xposed的原理

Android基于Linux,第一个启动的进程自然是init进程,该进程会 启动所有Android进程的父进程——Zygote(孵化)进程,该进程的启动配置在 /init.rc脚本中,而Zygote进程对应的执行文件是/system/bin/app_process, 该文件完成类库的加载以及一些函数的调用工作。在Zygote进程创建后, 再fork出SystemServer进程和其他进程。而XposedFramework呢,就是用自己实现的app_process替换掉了系统原本 提供的app_process,加载一个额外的jar包,然后入口从原来的: com.android.internal.osZygoteInit.main()被替换成了: de.robv.android.xposed.XposedBridge.main(), 然后创建的Zygote进程就变成Hook的Zygote进程了,而后面Fork出来的进程 也是被Hook过的。这个Jar包在:/data/data/de.rbov.android.xposed.installer/bin/XposedBridge.jar

 

另外使用Xposed模块是需要Root权限的 !!

这篇文章没有讲在真机上如何root,而是在夜神模拟器上操作

夜神模拟上安装xposed.installer.apk

 

目标工程App类   cybertech.cn.com.myapplicationhack.MainActivity

接下来编下xposed模块工程

step1:

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >

        <meta-data
            android:name="xposedmodule"
            android:value="true" />
        <meta-data
            android:name="xposeddescription"
            android:value="TestModule" />
        <meta-data
            android:name="xposedminversion"
            android:value="53" />
    </application>

step 2:

build.gradle中添加

 provided 'de.robv.android.xposed:api:82'
    provided 'de.robv.android.xposed:api:82:sources'

step3:

package cybertech.cn.com.xposertest;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
public class MainHook implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        if(loadPackageParam.packageName.equals("cybertech.cn.com.myapplicationhack")){
            findAndHookMethod("cybertech.cn.com.myapplicationhack.MainActivity", loadPackageParam.classLoader, "getInfoMsg",
                    new XC_MethodHook() {
                        @Override
                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                            param.setResult("your App is hacked!");
                        }
            });
        }
    }
}

step4

  res/asserts文件夹创建一个xposed_init文件(没有后缀!) 填写hook类 :cybertech.cn.com.xposertest.MainHook

  编译打包 在模拟上运行!

需要打钩  然后重启!

原先

hook 之后

大功告成!

ps  如果没有效果 看下xpose中日志

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值