吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3662|回复: 18
收起左侧

[Android 分享] 某游戏广告逆向(笔记) (无邪书院学习 练习)

  [复制链接]
ywlYWL 发表于 2022-2-15 00:43
本帖最后由 ywlYWL 于 2022-2-15 14:13 编辑

本次学习 的内容来自-----无邪团队的SharkFall


感谢大神浪费自己宝贵的时间,来传道!!!




学习开始!


本次 用到的东东:
工具为:
(电脑端)dnSpy  ********************************->(用来逆向 dll 文件)
连接:https://pan.baidu.com/s/1Bvg1Wsk30q-2dnxl6BjazA?pwd=2022
受害者:
我是熊孩子.apk
连接:https://pan.baidu.com/s/1uFIGtnY3J5_5GznZD0tw7g?pwd=2022






原理-----------取其精华去其糟粕
简单点讲,
就是把对我们没用的代码删掉
对我们有用的代码保留





情景:广告结束后 就会有奖励  

那什么是有用的代码???
我们想要的就是奖励 相关的代码
而运行广告的代码 就不想要的
而这也就弄出来了我们的目标
或者绕过运行广告的代码
直达奖励代码






有了目标,咱们来到关键代码

怎么找?

方法1:
关键词搜索:
ads,ad,reward,videoad,video

方法2,
提示搜索
Screenshot_2022-02-14-22-18-28-912_com.ozachi.bea.jpg

提示词: 当前没有广告
屏幕截图 2022-02-14 224504.png




通过搜索
就会发现几个关键的方法:
mainads  翻译-> 主页广告
playads 翻译-> 播放广告

public void mainAds()

    {
            if (this.adsDiamondTimes < 10)
            {
                    this.playAds(delegate
                    {
                            this.adsDiamondTimes++;
                            ES3.Save<int>("adsDiamondTimes", this.adsDiamondTimes, this.settings);
                            this.mainAdsNumText.text = 10 - this.adsDiamondTimes + "/10";
                            this.addRandomBuff();
                    }, delegate
                    {
                    }, true);
                    return;
            }
            this.showSmallTips("今天已经看过10次广告了,明天再来吧!");
    }

public bool playAds(mainGame.adsCall callback, mainGame.adsCall2 callback2, bool useIE)

    {
            mainGame.<>c__DisplayClass293_0 CS$<>8__locals1 = new mainGame.<>c__DisplayClass293_0();
            CS$<>8__locals1.<>4__this = this;
            CS$<>8__locals1.callback = callback;
            if (Application.platform == 11)
            {
                    if (WindRewardVideoAdvertisement.Instance().Ready("e68a6966a7d"))
                    {
                            WindRewardVideoAdvertisement.Instance().PlayAd("e68a6966a7d");
                            if (useIE)
                            {
                                    WindRewardVideoAdvertisement.Instance().SetAdClosedListener(new WindRewardVideoAdvertisement.OnAdClosed_Delegate(CS$<>8__locals1.<playAds>g__n|0));
                            }
                            else
                            {
                                    CS$<>8__locals1.callback();
                            }
                            this.loadAds();
                            return true;
                    }
                    this.showSmallTips("当前没有广告,过一会儿再来吧!");
                    this.loadAds();
                    callback2();
                    return false;
            }
            else
            {
                    if (WindRewardVideoAdvertisement.Instance().Ready("e68a69b212a"))
                    {
                            WindRewardVideoAdvertisement.Instance().PlayAd("e68a69b212a");
                            if (useIE)
                            {
                                    WindRewardVideoAdvertisement.Instance().SetAdClosedListener(new WindRewardVideoAdvertisement.OnAdClosed_Delegate(CS$<>8__locals1.<playAds>g__n|0));
                            }
                            else
                            {
                                    CS$<>8__locals1.callback();
                            }
                            this.loadAds();
                            return true;
                    }
                    this.showSmallTips("当前没有广告,过一会儿再来吧!");
                    this.loadAds();
                    callback2();
                    return false;
            }
    }


从代码中可以发现
addRandomBuff 这个方法 翻译为:添加随机增益

而且是在主页广告方法的调用里面发现的
那么可以判断它为
奖励代码

但是 这个奖励代码的执行应该与playAds有有关

这个playAds应该就是播放广告的逻辑

在逻辑中判断用户是否 看完广告

就返回 TRUE -------应该就会运行奖励代码
不是 就会 返回 FALSE-------不会运行奖励代码

代码分析完毕




那么开始我们的 取其精华去其糟粕

直接把没用的代码删掉变成这样
    public void mainAds()
   
{
        
this.playAds(delegate
        
{
            
this.adsDiamondTimes++;
            
ES3.Save<int>("adsDiamondTimes", this.adsDiamondTimes, this.settings);
            
this.mainAdsNumText.text = 10 - this.adsDiamondTimes + "/10";
            
this.addRandomBuff();
        
}, delegate
        
{
        
}, true);
   
}


    public bool playAds(mainGame.adsCall callback, mainGame.adsCall2 callback2, bool useIE)
   
{
        
callback();
        
this.showSmallTips("小杨学逆向,破解成功!");
        
return true;
   
}

删除使用dnspy的编辑li指令功能   将需要删除的指令改为Nop  了解汇编语言的都懂吧?  Nop 为空指令!


有图有真相!
Screenshot_2022-02-15-00-34-12-458_com.ozachi.bea.jpg

奖励已经出来
提取码都为:2022

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
qact + 1 + 1 多谢大佬的教程,可惜我没电脑,有没有用MT
z7138910 + 1 + 1 热心回复!
笙若 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ssfor52 发表于 2022-2-15 08:32
没了的速度有点儿快,这是干了啥
cick 发表于 2022-2-17 13:29
我也要试试,跟着楼主学习真好,其它几个帖子已实践过,这个还没试试。等抽个时间小白跟着教程学学,感谢教程出的细致。虽然编辑很麻烦,但是对我们很收益,感谢感谢!!!
woawapj 发表于 2022-2-15 02:13
AIfeifei 发表于 2022-2-15 08:55
啥情况啊
huiye123 发表于 2022-2-15 09:30
会不会是遇到关键字审核了,希望打上马赛克重新发一份。学习一下
花葬 发表于 2022-2-15 09:31
都被封了,什么情况
iiii12 发表于 2022-2-15 10:05
谢谢楼主6666666666666666666
李佑辰 发表于 2022-2-15 10:41
gg什么也看不到了
aonima 发表于 2022-2-15 10:57
????????
Eaysuild.xean 发表于 2022-2-15 14:00
涉嫌推广了吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-10 12:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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