ywlYWL 发表于 2022-2-15 00:43

某游戏广告逆向(笔记) (无邪书院学习 练习)

本帖最后由 ywlYWL 于 2022-2-15 14:13 编辑

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


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



https://static.52pojie.cn/static/image/hrline/2.gif
学习开始!


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


https://static.52pojie.cn/static/image/hrline/1.gif



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


https://static.52pojie.cn/static/image/hrline/1.gif


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

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



https://static.52pojie.cn/static/image/hrline/2.gif


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

怎么找?

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

方法2,
提示搜索


提示词: 当前没有广告


https://static.52pojie.cn/static/image/hrline/4.gif


通过搜索
就会发现几个关键的方法:
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-------不会运行奖励代码

代码分析完毕
https://static.52pojie.cn/static/image/hrline/4.gif



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

直接把没用的代码删掉变成这样
    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 为空指令!


有图有真相!


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

ssfor52 发表于 2022-2-15 08:32

没了的速度有点儿快,这是干了啥

cick 发表于 2022-2-17 13:29

我也要试试,跟着楼主学习真好,其它几个帖子已实践过,这个还没试试。等抽个时间小白跟着教程学学,感谢教程出的细致。虽然编辑很麻烦,但是对我们很收益,感谢感谢!!!

woawapj 发表于 2022-2-15 02:13

学习一下教程

AIfeifei 发表于 2022-2-15 08:55

啥情况啊{:301_999:}

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

涉嫌推广了吧
页: [1] 2
查看完整版本: 某游戏广告逆向(笔记) (无邪书院学习 练习)