我的汤姆猫2去广告+绿化内购教程 我的汤姆猫2逆向分析

85 阅读3分钟

工具

MT管理器(看版本号选最新版本)

NP管理器(看版本号选最新版本)

我的汤姆猫2(自行必应)

教程

一、准备

1.在mt/np管理器提取安装包/找到安装包位置

2.去除软件签名效验,mt管理器中直接点击,np管理器中优先用超强方案2(去签后能正常打开不闪退才算成功,一般逆向都需要这一步)

3.随便选一个classex文件,点全选用dex++编辑器打开

二、开始

4.逆向购买,搜索方法名startBuying把com.outfit7.engine.billing.felis.d里面的第二个startBuying方法名替换为

.method public final startBuying(Ljava/lang/String;Ljava/lang/String;)V

.registers 10

const-string v0, "iapId"

invoke-static {p1, v0}, Lkotlin/jvm/internal/q;->f(Ljava/lang/Object;Ljava/lang/String;)V

直接模拟购买成功

new-instance v0, Ljava/lang/StringBuilder;

invoke-direct {v0}, Ljava/lang/StringBuilder;->()V

const-string v1, "fake_token_"

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v0

new-instance v1, Lcom/outfit7/engine/billing/message/OnBuyCompleteMessage;

const/4 v2, 0x0

invoke-direct {v1, p1, v0, v2, v2}, Lcom/outfit7/engine/billing/message/OnBuyCompleteMessage;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Float;Ljava/lang/String;)V

iget-object v0, p0, Lcom/outfit7/engine/billing/felis/d;->h:LZ2/b;

check-cast v0, LZ2/c;

const-class v3, Lcom/outfit7/engine/billing/message/OnBuyCompleteMessage;

invoke-virtual {v0, v3, v1}, LZ2/c;->c(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/String;

move-result-object v0

iget-object v1, p0, Lcom/outfit7/engine/billing/felis/d;->d:Lcom/outfit7/engine/messaging/b;

check-cast v1, Lcom/outfit7/engine/messaging/c;

const-string v3, "NativeInterface"

const-string v4, "_OnBuyComplete"

invoke-virtual {v1, v3, v4, v0}, Lcom/outfit7/engine/messaging/c;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

return-void

.end method

5.免广告获取奖励,修改 Lcom/outfit7/inventory/navidad/adapters/xiaomi/s 类的 show 方法

.method public final show(Landroid/app/Activity;)V

.registers 5

.line 1

const-string v0, "activity"

invoke-static {p1, v0}, Lkotlin/jvm/internal/q;->f(Ljava/lang/Object;Ljava/lang/String;)V

直接触发广告展示开始回调

iget-object v0, p0, Lcom/outfit7/inventory/navidad/adapters/xiaomi/s;->e:Ljava/lang/ref/WeakReference;

if-eqz v0, :cond_14

invoke-virtual {v0}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;

move-result-object v0

check-cast v0, LV3/b;

if-eqz v0, :cond_14

invoke-interface {v0}, LV3/b;->a()V # 广告展示开始

:cond_14

直接触发广告奖励回调

iget-object p1, p0, Lcom/outfit7/inventory/navidad/adapters/xiaomi/s;->e:Ljava/lang/ref/WeakReference;

if-eqz p1, :cond_23

invoke-virtual {p1}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;

move-result-object p1

check-cast p1, LV3/b;

if-eqz p1, :cond_23

invoke-interface {p1}, LV3/b;->f()V # 奖励完成

:cond_23

直接触发广告关闭回调

iget-object p1, p0, Lcom/outfit7/inventory/navidad/adapters/xiaomi/s;->e:Ljava/lang/ref/WeakReference;

if-eqz p1, :cond_32

invoke-virtual {p1}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;

move-result-object p1

check-cast p1, LV3/b;

if-eqz p1, :cond_32

invoke-interface {p1}, LV3/b;->c()V # 广告关闭

:cond_32

return-void

.end method

6.清空横幅广告与弹窗广告,把com.outfit7.inventory.navidad.O7AdsNavidad类里面的下列方法名清空

startBanners

startAdjustableBanners

loadInterstitial

showInterstitial

7.到此一切结束,一路保存返回签名安装即可

特别说明

此教程基于我的汤姆猫2v25.4.3.16055,其他版本代码位置可能有所变化,仅供学习交流!