查看: 87|回复: 0

[游戏交流] 江湖风云录逆向代码

[复制链接]
累计签到:1 天
连续签到:1 天

1

主题

0

回帖

12

积分

星碎

名望
0
星币
5
星辰
0
好评
0
发表于 昨天 02:35 | 显示全部楼层 |阅读模式

注册登录后全站资源免费查看下载

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

×
一、修改模块:TankHelp类的pay方法

修改目标
跳过真实支付 SDK 调用,直接触发 “支付成功” 的核心逻辑(setSignature(1))。

原问题
原pay方法会调用支付 SDK 发起真实支付,无法直接触发发放逻辑。

修改后的 Smali 代码:
  1. .method private static pay(IILjava/lang/String;IIILjava/lang/String;)I
  2.     .registers 8  # 适配7个参数寄存器+1个本地寄存器,避免负数寄存器冲突
  3.     # 1. 触发native层“支付成功”标识(核心)
  4.     const/4 v0, 0x1
  5.     invoke-static {v0}, Lorg/cocos2dx/cpp/TankHelp;->setSignature(I)V
  6.     # 2. 重置“支付中”标记,避免重复购买无响应
  7.     const/4 v0, 0x0
  8.     sput-boolean v0, Lorg/cocos2dx/cpp/TankHelp;->mPaying:Z
  9.     # 3. 返回支付成功码(与原逻辑一致)
  10.     const/4 p0, 0x1
  11.     return p0
  12. .end method
复制代码
修改说明
  • 移除了原支付 SDK 调用逻辑,直接调用setSignature(1)(native 层识别 “支付成功” 的核心接口);
  • 调整.registers数量为 8,适配方法的 7 个参数,避免寄存器溢出 / 负数寄存器错误。




二、修改模块:TankHelp类的getGivePropWithLuoDing方法
修改目标
让 native 层跳过 “服务验证订单” 的等待逻辑,避免加载卡顿。

原问题
原方法返回类型为void且无返回值,native 层会拿到随机非 0 值,触发服务端验证等待。

修改后的 Smali 代码:
  1. .method public static getGivePropWithLuoDing()I  # 修正返回类型为int(I)
  2.     .registers 1
  3.     # 强制返回0,让native层跳过服务端验证
  4.     const/4 v0, 0x0
  5.     return v0
  6. .end method
复制代码
修改说明
  • 将返回类型从V(void)改为I(int),匹配 native 层的类型期望;
  • 强制返回0,使 native 层的createWaitingPayDlg跳过 “服务端验证等待” 分支。




三、整体验证效果
修改后执行流程:

  • 点击 “购买”→ 调用TankHelp.pay;
  • pay方法直接触发setSignature(1),模拟支付成功;
  • getGivePropWithLuoDing返回0,native 层跳过服务端验证等待;
  • 直接执行物品发放逻辑,界面显示 “获得亓宝” 提示,无加载卡顿。

四、补充说明
若需适配不同商品档位(如 “一箱亓宝” 对应 1200+1000 亓宝),仅需在pay方法中补充 “根据商品 ID 匹配亓宝数” 的逻辑(通过param_0获取商品 ID,调用对应的发放函数),无需额外修改其他代码。
2812e8ac3cdc512c15ad3937f66f54b4.jpg


默认签名:偏爱是我家,发展靠大家! 社区反馈邮箱Mail To:service@pai.al或paijishu@outlook.com
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|偏爱技术社区-偏爱技术吧-源码-科学刀-我爱辅助-娱乐网--教开服-游戏源码

偏爱技术社区-偏爱技术吧-源码-科学刀-我爱辅助-娱乐网-游戏源码

Powered by Discuz! X3.5

GMT+8, 2026-2-10 22:05 , Processed in 0.069431 second(s), 35 queries .

快速回复 返回顶部 返回列表