某游戏广告逆向(笔记) (无邪书院学习 练习)
本帖最后由 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 没了的速度有点儿快,这是干了啥 我也要试试,跟着楼主学习真好,其它几个帖子已实践过,这个还没试试。等抽个时间小白跟着教程学学,感谢教程出的细致。虽然编辑很麻烦,但是对我们很收益,感谢感谢!!! 学习一下教程 啥情况啊{:301_999:} 会不会是遇到关键字审核了,希望打上马赛克重新发一份。学习一下 都被封了,什么情况 谢谢楼主6666666666666666666 gg什么也看不到了 ???????? 涉嫌推广了吧
页:
[1]
2