好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 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,
提示搜索
提示词: 当前没有广告
通过搜索
就会发现几个关键的方法:
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 为空指令!
有图有真相!
奖励已经出来
提取码都为:2022 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|