逆向破解学习-割绳子

news/2024/5/17 15:35:05 标签: 学习, gitee, 逆向

试玩

在这里插入图片描述支付失败,请检查网络设置

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

Hook成功

在这里插入图片描述

Hook代码

import android.app.Application;
import android.content.Context;

import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class HookComYoDo1Ctr2A4399_1 extends HookImpl {
    @Override
    public String packageName() {
        return "com.yodo1.ctr2.A4399_1";
    }

    @Override
    public String appName() {
        return "割绳子";
    }

    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        // 先hookApplication
        XposedHelpers.findAndHookMethod(
            Application.class,
            "attach",
            Context.class,
            new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    super.beforeHookedMethod(param);
                    // 获取上下文
                    Context context = (Context) param.args[0];
                    // 获取类加载器
                    ClassLoader classLoader = context.getClassLoader();
                    // 获取自定义的类
                    final Class<?> productData = XposedHelpers.findClass(
                        "com.yodo1.android.sdk.helper.ProductData",
                        classLoader
                    );
                    // 获取自定义的类
                    final Class<?> payType = XposedHelpers.findClass(
                        "com.yodo1.android.sdk.constants.PayType",
                        classLoader
                    );
                    //        @Override // com.yodo1.android.sdk.callback.Yodo1PurchaseListener
                    //        public void purchased(int code, String orderId, ProductData productData, PayType payType) {
                    //            String productId = productData.getProductId();
                    //            if (code == 1) {
                    //                Yodo1GameSDK.paySuccess(productId);
                    //                YLog.d("sdk通知支付成功,开始和ops校验订单... ");
                    //            } else if (code == 2) {
                    //                YLog.d("sdk通知取消支付 ");
                    //                Yodo1GameSDK.payCancel(productId);
                    //            } else {
                    //                YLog.d("sdk通知支付失败 ");
                    //                Yodo1GameSDK.payFail(productId);
                    //            }
                    //        }
                    XposedHelpers.findAndHookMethod(
                        "com.zeptolab.sdk.ui.Yodo1Pay$8",
                        classLoader,
                        "purchased",
                        int.class,
                        String.class,
                        productData,
                        payType,
                        new XC_MethodHook() {
                            @Override
                            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                                super.beforeHookedMethod(param);
                                param.args[0] = 1;
                            }
                        }
                    );
                }
            }
        );
    }

    private static final class TestApplication extends Application {
        /*
        final void attach(Context context) {
            attachBaseContext(context);
            mLoadedApk = ContextImpl.getImpl(context).mPackageInfo;
        }
         */
        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
        }
    }
}


http://www.niftyadmin.cn/n/4931425.html

相关文章

Android Studio Giraffe 正式版下载地址

Android Studio 是 Android 的官方 IDE。它专为 Android 而打造&#xff0c;可以加快您的开发速度&#xff0c;帮助您为每款 Android 设备构建最高品质的应用。 比以往更快地编码和迭代 Android Studio 基于 IntelliJ IDEA 而构建&#xff0c;可以提供较短的编码和运行工作流…

C 语言的求模运算符 %

求模运算符 % modulus operator 只用于整数。 结果是左侧整数除以右侧整数的余数 remainder #include<stdio.h>int main(void) {int a 8;int b 3;printf("8 %% 3 %d\n", a % b);return 0; }结果&#xff1a; 8 % 3 2求模运算符常用于控制程序流。 程序…

题目:2511.最多可以摧毁的敌人城堡数量

​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;2511. 最多可以摧毁的敌人城堡数目 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 顺序遍历数组&#xff0c;记录上一个我军城堡和没有城堡的位置。当碰到空位置时&#xff0c;若上一次更新的…

【数据结构】反转链表、链表的中间节点、链表的回文结构(单链表OJ题)

正如标题所说&#xff0c;本文会图文详细解析三道单链表OJ题&#xff0c;分别为&#xff1a; 反转链表 &#xff08;简单&#xff09; 链表的中间节点 &#xff08;简单&#xff09; 链表的回文结构 &#xff08;较难&#xff09; 把他们放在一起讲的原因是&#xff1a; 反转链…

【Java】数据交换 Json 和 异步请求 Ajax

&#x1f384;欢迎来到边境矢梦的csdn博文&#xff0c;本文主要讲解Java 中 数据交换和异步请求 Json&Ajax 的相关知识&#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&#…

Spring Cloud Gateway系例—GatewayFilter 工厂

目录 6.1.AddRequestHeader 6.2.AddRequestHeadersIfNotPresent 6.3.AddRequestParameter 6.4.AddResponseHeader 6.5.CircuitBreaker 6.5.1. 熔断指定的状态码 6.6.CacheRequestBody 6.7.DedupeResponseHeader 6.8.FallbackHeaders 6.9.JsonToGrpc 6.10.LocalRespo…

022 - STM32学习笔记 - 扩展外部SDRAM(一) - 初识SDRAM和FMC

022 - STM32学习笔记 - 扩展外部SDRAM&#xff08;一&#xff09; - 初识SDRAM和FMC 之前学习了I2C读写EEPROM和SPI读写FLASH&#xff0c;学完之后在学习一种新的存储介质–SDRAM。 一、初识SDRAM 我们知道在stm32内部是有一定大小的SRAM&#xff08;256Kb&#xff09;和FLA…

vue+element多层表单校验prop和rules

核心点&#xff1a;外层循环是item和index&#xff0c;内层循环是item2和index2 如果都是定义的同一个属性名 外层循环得写:prop"block.index.numerical" 同理内层循环就得写:prop"objectSpecs. index2 .numerical" 校验函数方法 :rules"getRules(it…