图文精华

易锦教育»学术中心 学术交流社区 作业中心 Android逆向精英班(第一期) 2021-08-03 精英班学员
分享

2021-08-03 精英班学员

晨辉 发表于 2021-8-4 17:26:50
图片展示不正常,已整理成word文档放到附件中。

关键代码:

XposedHook类中的handleLoadPackage函数内添加:

```

/**
         * 赛车向前冲app
         */
        if ("com.gameley.racercop.cm".equals(loadPackageParam.packageName)) {
            //修改onResult()方法参数值,报错,找不到此类,可能与加载先后有关
            /*XposedHelpers.findAndHookMethod("cn.egame.terminal.paysdk.EgamePayJD$2$1$1",
                    loadPackageParam.classLoader,
                    "onResult",
                    int.class, String.class, Object.class,
                    new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                            super.beforeHookedMethod(param);

                            //打印打印堆栈
                            printStackTrace("com.gameley.racercop.cm");
                            XposedBridge.log("原resultCode:" + param.args[0]);

                            //修改resultCode即可
                            param.args[0] = 1;

                            XposedBridge.log("改后resultCode:" + param.args[0]);
                        }
                    });*/

            //拦截onFaild(),用onSuccess()进行替代
            XposedHelpers.findAndHookMethod(
                    "com.gameley.race.pay.GameleyPay",
                    loadPackageParam.classLoader,
                    "onFaild",
                    int.class,
                    new XC_MethodReplacement() {
                        @Override
                        protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
                            //用onSuccess方法来代替运行
                            XposedHelpers.callMethod(
                                    methodHookParam.thisObject,
                                    "onSuccess", methodHookParam.args);

                            return null;
                        }
                    });
        }
```

XposedHook类内工具方法:

```
/**
  * 打印堆栈信息
  *
  * @param packageName 包名
  */
private void printStackTrace(String packageName) {
     XposedBridge.log("-------" + packageName + "-------->");
     Throwable ex = new Throwable();
     StackTraceElement[] stackElements = ex.getStackTrace();
     for (int i = 0; i < stackElements.length; i++) {
        StackTraceElement element = stackElements[i];
        XposedBridge.log("at " + element.getClassName() + "." + element.getMethodName() + "(" + element.getFileName() + ":" + element.getLineNumber() + ")");
     }
}
```

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

NCK 发表于 2021-8-5 12:36:56
赛车向前冲Hook内购
首先在AK搜索支付失败

发现有两个文件符合 这两个地方都可以Hook

我选择了gameleypay来hook

利用截取失败的方法 重新调用成功的方法


<
回复

使用道具 举报

马到成功 发表于 2021-8-5 14:15:17
学员:马到成功

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

夏西 发表于 2021-8-6 18:46:26
逆向分析某赛车单机游戏支付逻辑,编写xposed插件实现内购功能,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

心情落叶 发表于 2021-8-6 23:21:13
落沙 2021-08-06 提交

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

小吴 发表于 2021-8-7 11:17:28
本帖最后由 小吴 于 2021-8-7 11:19 编辑

cheCrack cheCrack cheCrack

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

李波 发表于 2021-8-8 19:51:11
  1. public class GameLeyHack implements IXposedHookLoadPackage {
  2.     Class<?> msg;
  3.     @Override
  4.     public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
  5.         if (lpparam.packageName.equalsIgnoreCase("com.gameley.racercop.cm")) {
  6.             msg = findClass("android.os.Message", lpparam.classLoader);

  7.             findAndHookMethod(Application.class, "attach", Context.class, new GameLeyHack.MulDex());

  8.         }
  9.     }
  10.     class MulDex extends XC_MethodHook {

  11.         @Override
  12.         protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
  13.             super.beforeHookedMethod(param);

  14.             super.beforeHookedMethod(param);
  15.             Context context = (Context) param.args[0];
  16.             ClassLoader loader = context.getClassLoader();
  17.             findAndHookMethod("com.gameley.race.pay.GameleyPay", loader, "onFaild",
  18.                     int.class, new XC_MethodReplacement() {
  19.                         @Override
  20.                         protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
  21.                             XposedHelpers.callMethod(param.thisObject, "onSuccess", param.args[0]);
  22.                             return null;
  23.                         }
  24.                     });


  25.         }

  26.         @Override
  27.         protected void afterHookedMethod(MethodHookParam param) throws Throwable {
  28.             super.afterHookedMethod(param);
  29.         }

  30.     }
  31. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

古哥 发表于 2021-8-9 18:00:02
本帖最后由 古哥 于 2021-8-9 18:01 编辑

1.购买时取消,显示支付失败,jadx搜索得到.
AK直接修改smali跳转.验证后发现只是显示.没有真实购买


2.JADX搜索GameleyPay发现调用的类,进去看

发现是动态加载的类





Hook替换失败的方法
  1. XposedBridge.log("111111111111111111111111111111");
  2.             XposedBridge.log("packageName:"+loadPackageParam.packageName);
  3.             XposedHelpers.findAndHookMethod("com.gameley.race.pay.GameleyPay", loadPackageParam.classLoader,
  4.                     "onFaild",
  5.                     int.class, new XC_MethodReplacement() {
  6.                         @Override
  7.                         protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {

  8.                             XposedHelpers.callMethod(methodHookParam.thisObject,"onSuccess",
  9.                                     methodHookParam.args);
  10.                             return null;
  11.                         }
  12.                     });
复制代码

复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

挥霍 发表于 2021-8-9 18:31:15





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

msms_0oEDH0D8 发表于 2021-8-12 12:12:18
1) jadx 搜索“购买”找到onSuccess 及onFaild方法 -》再通过这两个方法找到调用处
2)分析发现onResult方法调用处类是动态加载,通过其上层调用onClick方法Hook到动态加载类的Class,并对onResult方法hook, 代码如下:

public class Hook_RacingCar_Test_onResult implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        // if (loadPackageParam.packageName.equals("com.gameley.racercop.cm")) {
        if (loadPackageParam.packageName.equals("com.gameley.racercop.cm")) {
            XposedBridge.log("赛车 Hook Beginning...");
                        XposedHelpers.findAndHookMethod(
                    "cn.egame.terminal.paysdk.EgamePayJD$2$1",
                    loadPackageParam.classLoader,
                    "onClick",
                    DialogInterface.class, int.class,
                    new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                            super.beforeHookedMethod(param);

                            Class<?> clz = XposedHelpers.findClass("cn.cmgame.billing.api.GameInterface", loadPackageParam.classLoader);
                            XposedBridge.log("赛车 clz=> " + clz.getClassLoader());

                            XposedHelpers.findAndHookMethod(
                                    "cn.egame.terminal.paysdk.EgamePayJD$2$1$1",
                                    loadPackageParam.classLoader,
                                    "onResult",
                                    int.class, String.class, Object.class,
                                    new XC_MethodHook() {
                                        @Override
                                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                                            super.beforeHookedMethod(param);
                                            
                                            param.args[0] =1;
                                        }
                                    });

                        }
                    });

        }
    }
}

4) 小米9测试Ok

注:对loadClass方法hook在小米手机上无法列出运行时类
<
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则