• 首页

  • 文章归档

  • 关于页面
底 层 码 农
底 层 码 农

管理员

获取中...

09
25
xposed

xposed hook

发表于 2020-09-25 • xposed hook • 被 8,221 人看爆

以一个手游的脚本为例,

import android.content.*;
import android.graphics.*;
import android.os.*;
import android.widget.*;
import de.robv.android.xposed.*;
import de.robv.android.xposed.callbacks.*;
import java.util.*;
import android.app.*;

/* 注意:该类不要自己写构造方法,否者可能会hook不成功
 * 开发Xposed模块完成以后,关闭bebug以提升性能
 * debug模式只需要第一次重启,以后修改hook代码就不用重启了
 */

public class xposedmain implements IXposedHookLoadPackage {
    public static Activity 上下文;

    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam 包名) throws Throwable {
        //判断是不是这个软件包名,不判断的话,全部的软件都会被hook
        提示("已hook的包名∶" + 包名.packageName);
        if (!包名.packageName.equals("com.ais.jg.wzry"))
            return;

        if (上下文 == null) {XposedHelpers.findAndHookMethod(Activity.class, "onCreate", Bundle.class, new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(MethodHookParam 参数) throws Throwable {super.afterHookedMethod(参数);
                        if (上下文 == null) {上下文 = (Activity)参数.thisObject;
                            提示("模块已开启");
                            XposedBridge.log("得到Activity上下文");}}});}

        //查找和hook方法,演示植入方法
        /*XposedHelpers.findAndHookMethod(
         "fun.liangyong.HookJiguang.MainActivity",
         包名.classLoader, "onCreate", 
         new Object[]{Bundle.class,
         new XC_MethodHook(){
         @Override
         protected void afterHookedMethod(MethodHookParam 参数) throws Throwable {
         植入方法();
         }

         private void 植入方法() {
         提示("我是植入的不会的方法");
         }
         }});*/
        //查找和hook方法,演示hook boolean方法
        /*XposedHelpers.findAndHookMethod(
         "fun.liangyong.HookJiguang.MainActivity"//要hook的应用类名
         , 包名.classLoader,
         "激活"//要hook的方法
         //,String.class//函数名,可以注释掉,String就是String.class
         , new XC_MethodHook()//回调
         {@Override
         protected void afterHookedMethod(MethodHookParam 参数) throws Throwable {//拦截之后要做什么
         super.afterHookedMethod(参数);
         参数.setResult(true);////强制返回boolean为true
         }});
         */
        //查找和hook方法,演示hook String方法
        String classPath = "ui.bean.devicescmd.CmdBean";
        String[] methodArrs = {"getDdClientCmd","getFailedCmd","getLsClientCmd","getRfClientCmd","getVmClientCmd"};
        for(String method :methodArrs){
            XposedHelpers.findAndHookMethod(
                classPath//要hook的应用类名
                , 包名.classLoader,
                method//要hook的方法
                //,String.class//函数名,可以注释掉,String就是String.class
                , new XC_MethodHook()//回调
                {@Override
                    protected void afterHookedMethod(MethodHookParam 参数) throws Throwable {//拦截之后要做什么
                        super.afterHookedMethod(参数);
                        参数.setResult("f");////替换返回String
                    }});

        }

    }

    private void 提示(String 内容) {try {
            Toast.makeText(上下文, 内容,  1000).show();
        } catch (Exception e) {XposedBridge.log("提示异常:" + e);}
        XposedBridge.log("免重启方法输出" + 内容);
        // 雨 道  汉 化: 实现这个方法
    }
}

分享到:
文件下载(已失效、作者已跑路)
JS 数组根据属性实现类似sql的group by 分组
  • 文章目录
  • 站点概览
管理员

帅哥管理员

Twitter QQ Email RSS
看爆 Top5
  • 文件下载(已失效、作者已跑路) 10,887次看爆
  • xposed hook 8,222次看爆
  • JS 数组根据属性实现类似sql的group by 分组 4,109次看爆
  • 雷电模拟器安装xposed框架 476次看爆

Copyright © 2023 管理员 · 湘ICP备2022002868号

粤公网安备 44030602006639号