当前位置:网站首页>mt管理器测试滑雪大冒险
mt管理器测试滑雪大冒险
2022-07-01 22:50:00 【冷巷(*_*)】
突然想玩玩小时候的小游戏了(没流量了)。看到个支付,就想测试测试
滑雪大冒险
mt管理器
首先就是打开mt管理器,提取这个游戏的安装包。
还是没壳的~
然后点一下安装包,点 查看 。
随便点一个dex
点第一个
点击常量 。
点击过滤
输入 购买 , 点确定
因为我们要的是成功,所以这里点第一个
点击搜索
然后点进去
因为没会员,可以用np管理器打开到这里,然后再转成java。
转Java代码如下
// // Decompiled by Jadx (from NP Manager) // package com.yodo1.android.sdk.helper; import android.app.Activity; import com.yodo1.android.sdk.constants.PayType; import com.yodo1.android.sdk.utils.RegexUtils; import com.yodo1.sdk.adapter.callback.ChannelSDKCallback; import com.yodo1.sdk.adapter.entity.ChannelPayInfo; import com.yodo1.sdk.adapter.entity.User; import com.yodo1.sdk.adapter.function.PayAdapterBase; import com.yodo1.sdk.kit.YLog; import org.w3c.dom.Element; class Yodo1PayHelper$5 implements ChannelSDKCallback { final /* synthetic */ Yodo1PayHelper this$0; final /* synthetic */ Activity val$activity; final /* synthetic */ ChannelPayInfo val$channelPayInfo; final /* synthetic */ User val$channelUser; final /* synthetic */ String val$extraParam; final /* synthetic */ String val$orderId; final /* synthetic */ PayAdapterBase val$payAdapter; final /* synthetic */ Element val$payElement; final /* synthetic */ PayType val$payType; final /* synthetic */ ProductData val$productData; public void onResult(int i, int i2, String str) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(i2); stringBuilder.append(""); Yodo1PayHelper.access$602(stringBuilder.toString()); stringBuilder = new StringBuilder(); stringBuilder.append(" pay channelpay callback, status = "); stringBuilder.append(i); stringBuilder.append(", errorCode = "); stringBuilder.append(i2); stringBuilder.append(", params = "); stringBuilder.append(str); String str2 = "Yodo1PayHelper"; YLog.d(str2, stringBuilder.toString()); if (RegexUtils.isJson(str)) { this.val$productData.setExtras(str); } if (i != 1) { String str3 = " 这是已购买的商品,购买成功"; if (i != 2) { Yodo1PayHelper.access$200(this.this$0, this.val$activity); Yodo1PayHelper.access$900(this.this$0, this.val$activity, this.val$productData.getOrderId()); if (208 == 301) { this.this$0.startPay(this.val$activity, PayType.carriers, this.val$productData, this.val$extraParam); return; } Yodo1PayHelper.access$700(this.this$0, this.val$productData, null, String.valueOf(208), str); if (208 != null) { if (208 != 103) { if (208 != 104) { if (208 == 208) { YLog.d(str2, str3); i2 = 1; } else if (208 != 209) { switch (208) { case 203: i2 = 203; break; case 204: break; case 205: break; default: switch (208) { case 302: case 303: case 304: YLog.d("Yodo1PayHelper,支付更换支付方式errorCode"); i2 = 0; break; default: i2 = 0; break; } } } else { i2 = 3; } } i2 = 207; } i2 = 205; } else { i2 = 0; } this.this$0.purchased(i2, this.val$channelPayInfo.getOrderId(), this.val$productData, this.val$payType); return; } Yodo1PayHelper.access$200(this.this$0, this.val$activity); Yodo1PayHelper.access$900(this.this$0, this.val$activity, this.val$productData.getOrderId()); if (208 == 208) { YLog.d(str2, str3); this.this$0.purchased(1, this.val$channelPayInfo.getOrderId(), this.val$productData, this.val$payType); return; } this.this$0.purchased(2, this.val$channelPayInfo.getOrderId(), this.val$productData, this.val$payType); Yodo1PayHelper.access$700(this.this$0, this.val$productData, null, String.valueOf(208), str); return; } YLog.d(str2, " 正在查询订单状态"); if (this.val$payAdapter.needQueryOrder(this.val$activity)) { Yodo1PayHelper.access$1000(this.this$0, this.val$activity, this.val$productData, new 1(this)); } else if (this.val$payAdapter.needVerifyOrder(this.val$activity)) { YLog.d(str2, " 订单状态校验成功"); Yodo1PayHelper.access$200(this.this$0, this.val$activity); this.this$0.purchased(1, this.val$orderId, this.val$productData, this.val$payType); Yodo1PayHelper.access$900(this.this$0, this.val$activity, this.val$productData.getOrderId()); } else { YLog.d(str2, " 正在提交订单状态"); Yodo1PayHelper.access$1100(this.this$0, this.val$productData, this.val$payType, new 2(this)); } } Yodo1PayHelper$5(Yodo1PayHelper yodo1PayHelper, ProductData productData, PayAdapterBase payAdapterBase, Activity activity, ChannelPayInfo channelPayInfo, Element element, String str, User user, String str2, PayType payType) { this.this$0 = yodo1PayHelper; this.val$productData = productData; this.val$payAdapter = payAdapterBase; this.val$activity = activity; this.val$channelPayInfo = channelPayInfo; this.val$payElement = element; this.val$extraParam = str; this.val$channelUser = user; this.val$orderId = str2; this.val$payType = payType; } }
咱们来好好分析这篇代码,这里面主要的判断相关的代码 就是 status 和 errorcode (重点来了。而我们需要代码执行 购买成功 的那段 而判断 就是 errorcode 是否等于208。
我们仔细看有中文附近的if判断。
这个代码有两个判断,先判断status 来是否判断前面这个 这个errorcode=208。但是 这段代码过后 errorcode=1。我们再看后面的代码。这个代码将errorcode 传入进去 (简单点说就是用了errorcode这个的值)。也就说明 errorcode=1 被用后 就是购买成功的 意思。再看后面的代码
如果前面的代码没有执行 那么 继续判断 errorcode 是不是等于208
那我们把errorcode的值修改成208看看(从理论上看修改成208 或者1 都行)
从代码上看 判断是否等于208 这个 永远都会进行判断是否等于208 而 1 的却不清楚 status的状态 也就告诉我们
不知道会不会运行前面那个判断 而第二个判断一定会运行。所以将errorcode 的值修改为208 那这不就行了?
那就切回到mt管理器。
通过查找发现
errorCode 就是p2来的。
我们给他赋值就行了。
我们在
然后退出来
然后点自动签名。
接着就是安装了
把原来安装的卸载掉,在mt管理器里面下载
在游戏里面点购买,然后点
退出来,发现购买成功了!
测试完成!!!
边栏推荐
- Jerry's records are powered by Vbat with a power supply voltage of 4.2V [chapter]
- Use of locust
- Treatment of insufficient space in the root partition of armbain system
- CADD course learning (3) -- target drug interaction
- YOGA27多维一体电脑,兼具出色外观与高端配置
- [MySQL] basic use of explain and the function of each column
- window10安装wsl(一)(WslRegisterDistribution ERROR)
- [micro service sentinel] sentinelresourceaspect details
- Who do you want to know when opening a stock account? Is it safe to open an account online?
- Istio、eBPF 和 RSocket Broker:深入研究服务网格
猜你喜欢
会声会影2022智能、快速、简单的视频剪辑软件
2022 R1 fast opening pressure vessel operation test questions and answers
Yoga27 multidimensional all-in-one computer with excellent appearance and high-end configuration
Jielizhi, production line assembly link [chapter]
What is the mosaic tailgate?
Cisco exam -- redundant network
[kotlin third party] coil koltin collaboration picture loading library coil glide like picture loading third party
常见的二十种软件测试方法详解(史上最全)
91. (cesium chapter) cesium rocket launch simulation
Summary of "performance testing" of software testing, novice will know the knowledge points on the road
随机推荐
Which securities company is better and which is safer to open a securities account
[applet] realize the left and right [sliding] list through the scroll view component
What is the relationship between modeling and later film and television?
typescript枚举
通过Go语言创建CA与签发证书
Force buckle 710 Random numbers in the blacklist
Where can the courses purchased by CSDN be accessed
认识线程
Cisco -- highly available and reliable network examination
2022 R1 fast opening pressure vessel operation test questions and answers
内存泄露和内存溢出的区别是什么?
建模和影视后期有什么关联?
Treatment of insufficient space in the root partition of armbain system
什么是马赛克?
[micro service sentinel] @sentinelresource details
Matplotlib常用设置
思科考试--冗余网络
日本购物网站的网络乞丐功能
mysql ---- Oracle中的rownum转换成MySQL
[MySQL] index creation, viewing and deletion