本帖最后由 Aimers 于 2018-5-24 14:02 编辑
某狐视频去广告破解
所提供的内容仅供学习交流使用,严禁用于商业用途,请于下载后24小时内删除
新手破解,请多指教。
1、去官网下载最新的apk,拆包后重新打包,安装。发现闪崩,推测是做了签名认证。到这里爆破签名后,重新反编译打包安装,发现没有问题。
2、去除多余权限和开屏的广告。
apktool打开后AndroidManifest.xml中删除多余的权限,例如读取短信,定位,快捷方式。主Avtivity换成MainAvtivity。
<activity android:icon="@drawable/launcher_sohu" android:name="com.sohu.sohuvideo.FirstNavigationActivityGroup" android:screenOrientation="portrait" android:theme="@style/Theme.AppStartTheme">
<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts"/>
</activity>
<activity android:configChanges="keyboardHidden|navigation|orientation|screenLayout|screenSize|smallestScreenSize" android:launchMode="singleTask" android:name="com.sohu.sohuvideo.ui.homepage.MainActivity" android:screenOrientation="portrait" android:theme="@style/Theme.MainRecommendActivity" android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="com.sohu.sohuvideo.MAINACTIVITY"/>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
3. 去除播放视频的广告
a. 安装抓包软件。 我是用Mac上的Charles 抓包的,Win上有Fiddler 。手机安装证书,不会的可以参考这里。
b. 手机设置好代{过}{滤}理后,点击播放视频,开始抓包。
c. 我一眼就喵到有个纯IP的地址,点进去一看,复制地址到Chrome
果然,这个就是我们要找的地址,找这个广告的地址太简单了
然后Charles 里全局搜索这个地址。
发现它是从data.void那个地址跳转的,然后全局搜索那个地址。
最终发现所有的源头指向http://agn.aty.sohu.com
d. 全局Sublime搜索上面的地址,发现在Const 中有定义
全局替换所有Smail 中的这个地址为任意无效地址。打包,重新安装。(ps:一开始我只改了Const的无效,发现一些SDK中依然有这个地址)
4. 去除我的Tab页面的广告
很容易定位到MainMineFragment 。
能发现里面有一些方法太显眼了,例如updateAdvertState 、updateMvmsAdState 、loadAdvert 、showAdvert 、sendMvmsAdRequest 。这些方法有的是请求广告的,有的是加载广告的,我这里的做法是注释掉调用的地方。就去掉了Tab页面的广告。
5. 去除上方滑动分类的部分广告
这个Fragment是ChannelColumnDataFragment ,它的类型是由ChannelTemplateListAdapter 控制。我把getView Smail文件的Switch语法改成了其他的View。结果是去掉了一部分广告,这块的去除不是很完美。
6. 去除搜索详情的广告
同上,这个Fragment是SearchTemplateResultFragment ,它的类型是由SearchTemplateListAdapter 控制。
我把getView Smail文件的Switch语法改成了某个Title的View,最终那块地方就留下了空白。
7. 总结
有个kw 包下的t 文件,这个好像是播放页面的广告。具体的有ADBanner2ViewHolder 、ADBannerViewHolder 和GameViewHolder 。改的时候总是崩溃就没改这里了,有空的话好好研究一下。
还有MainActivity 里有个initADSDK 方法
private void initADSDK() {
try {
if (ir.b.k()) {
LogUtils.p("fyf-----------------紧急开关关闭所有广告");
SdkFactory.closeAdSwitch(-1);
return;
}
com.sohu.scadsdk.videosdk.a.a(getApplicationContext());
int c = ir.b.c();
SdkFactory.getInstance();
SdkFactory.setTimeOut(c);
SdkFactory.getInstance();
SdkFactory.setDeviceType(1);
if (SohuUserManager.getInstance().isLogin()) {
SdkFactory.getInstance().TrackingPassportId(getApplicationContext(), SohuUserManager.getInstance().getUser().getPassport());
}
if (ir.b.m()) {
LogUtils.p("fyf-----------------紧急开关关闭框内广告");
SdkFactory.closeAdSwitch(2);
}
if (ir.b.n()) {
LogUtils.p("fyf-----------------紧急开关关闭框外广告");
SdkFactory.closeAdSwitch(5);
}
if (ir.b.l()) {
LogUtils.p("fyf-----------------紧急开关关闭启动图广告");
SdkFactory.closeAdSwitch(1);
}
} catch (Throwable th) {
LogUtils.e(th);
}
}
总觉得可以一键关闭所有的广告,但是试的时候都崩溃了,原因不明,后续研究。
新人发帖,希望大家多多支持啊~
下载地址
链接: https://pan.baidu.com/s/1s8XbVqt0-1rtQ6CSlvo-vQ 密码: 16dg
|