去播放广告破解本地VIP

登陆后自动去除视频播放前广告,本地VIP(个人中心可见),在4.6.4版本测试通过
1)文件位置:smali\com\sohu\sohuvideo\control\user\f.smali
定位到.method public final a(Lcom/sohu/sohuvideo/control/user/f$a;)V
if-nez v0, :cond_4前加一句const/4 v0, 0x1
2)文件位置:smali\com\sohu\sohuvideo\control\user\SohuUserManager.smali
定位到:.method public final a(Lcom/sohu/sohuvideo/control/sso/OnLogoutListener;)V
if-nez v0, :cond_1之前加一句const/4 v0, 0x1
3)文件位置:smali\com\sohu\sohuvideo\log\item\VideoPlayLogItem.smali
定位到:.method public getIsVip()Z
在倒数第二行的return v0之前加一句const/4 v0, 0x1
4)文件位置:smali\com\sohu\sohuvideo\models\SohuUser.smali
定位到:.method public hasNoAdPrivilege()Z
return v0之前加一句const/4 v0, 0x1
定位到.method public hasSohuCinemaPrivilege()Z
return v0之前加一句const/4 v0, 0x1
定位到:.method public isSuperVip()Z
return v0之前加一句const/4 v0, 0x1
5)文件位置:smali\com\sohu\sohuvideo\ui\presenter\a.smali
定位到:.method public final isVip()Z
return v0之前加一句const/4 v0, 0x1
6)文件位置:smali\com\sohu\sohuvideo\ui\presenter\b.smali
定位到:.method public final isVip()Z
return v0之前加一句const/4 v0, 0x1
7)文件位置:smali\com\sohu\sohuvideo\ui\LoginActivity.smali
定位到:.method private clickLoginResponse()V
if-nez v0, :cond_0之前加一句const/4 v0, 0x1
8)文件位置:smali\com\sohu\sohuvideo\ui\PersonalCenterActivity.smali
定位到:.method private showAdvert(Lcom/sohu/sohuvideo/models/ActionProtocolInfo;)V
第二个if-eqz v0, :cond_0前加一句const/4 v0, 0x1
9)文件位置:smali\com\sohu\sohuvideo\ui\PersonalInfoEditActivity.smali
定位到:.method private clickSaveResponse()V
if-nez v0, :cond_1之前加一句const/4 v0, 0x1
10)文件位置:smali\com\sohu\sohuvideo\ui\WebViewActivity.smali
定位到:.method private initWebSetting()V
if-eqz v0, :cond_0之前加一句const/4 v0, 0x1

去除启动3秒广告

1,简单修改函数跳转即可,先把3秒倒计时的过程去掉
文件位置:com.sohu.sohuvideo\smali\com\sohu\sohuvideo\ui\fragment\NavigateAdvertFragment.smali
定位到函数:.method static synthetic access$000(Lcom/sohu/sohuvideo/ui/fragment/NavigateAdvertFragment;)V
其中有一句 invoke-direct {p0}, Lcom/sohu/sohuvideo/ui/fragment/NavigateAdvertFragment;->showAdTime()V
是跳转到倒计时,我们修改这个跳转,直接跳转到倒计时之后,也就是改为
invoke-direct {p0}, Lcom/sohu/sohuvideo/ui/fragment/NavigateAdvertFragment;->goToNextPage()V
这相当于中间跳过了好几个函数,往后翻能看到goToNextPage()V这个函数的。
另外还有一处也要改
文件位置:com.sohu.sohuvideo\smali\com\sohu\sohuvideo\ui\fragment\NavigateAdvertFragment$a.smali
定位到函数:.method public final handleMessage(Landroid/os/Message;)V
里面有一句跟上面改法相同
2,这已经是差不多,不过搜狐视频虽然显示的是3秒开始倒计时,但是其实整个过程并不是3秒,因为“还有3秒”这个提示也要先停顿显示1秒左右,再开始变成“还有2秒”、“还有1秒”的,所以经过我上面的修改,只是去掉了倒计时的过程,并没有去掉“还有3秒”这个界面的大约1秒钟时间,属于不完美破解
3,后来想到通过fiddler2 来抓取app向服务器获取广告的url,经过一番努力(过程实在是太恶心想吐不讲了),找到了与启动3秒广告相关的url,屏蔽掉即可。com.sohu.sohuvideo\smali\com\sohu\sohuvideo\control\http\c\a.smali,中的http://agn.aty.sohu.com(有两个,把第一个删了就行了)
4,同时还顺带找到了3秒启动广告前的静态广告url,url里上传了一个key,在com.sohu.sohuvideo\smali\com\sohu\sohuvideo\control\http\c\a.smali 中,找到这一段:/v4/mobile/loading/list.json?。往下找有key是9854b2afa779e1a6bff1962447a09dbd,删掉或者随意改就可以了。
大侠阿木首创

破解版权限制只能在线观看不能离线缓存的限制

以下内容在搜狐视频5.0上面验证通过
比如生活大爆炸第八季,无法缓存。视频详情界面缓存按钮是灰色,且有个斜杠(表示不能下载)
1,先找到这个按钮图片ID为0x7f020070
2,搜索此ID,只有一处可疑,直接过去看
com.sohu.sohuvideo\smali\com\sohu\sohuvideo\ui\adapter\DetailContainerAdapter.smali
这个文件里,在.method private getDetailView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;这个方法下(看函数名也知道是显示视频详情的界面)
3,简单分析可发现cond_3定义了无法下载按钮的显示,向上查找,只有一句是跳转到cond_3的if-eqz v6, :cond_3,
4,在这一句上面插入一行const/4 v6, 0x1,回编译,发现无法下载按钮的确变成可下载的样式了,不过第一次点击的同时会提示“由于版权原因本片暂时只提供在线观看”和弹出又闪回缓存界面,再次点击这个按钮就可以正常弹出缓存界面了。
5,说明破解不完美,继续查找这句提示的ID 0x7f0703c1 ,找到两处,简单试验或分析都可以知道问题在这里com.sohu.sohuvideo\smali\com\sohu\sohuvideo\ui\fragment\DetailSeriesDialogDownload.smali
其中有个函数.method public onDownloadLimited()V定义了显示这句提示,和弹回缓存界面。
所以把这句函数改为空就可以了
6,打包试验,完美。
大侠阿木首创

屏蔽消息通知

1)文件位置:smali\com\sohu\push\PushPrefrence.smali
定位到.method public constructor <init>(Landroid/content/Context;)V
invoke-direct {p0}, Ljava/lang/Object;-><init>()V删除
2)文件位置:smali\com\sohu\sohuvideo\control\push\PushService.smali/code>
定位到.method public constructor ()V
invoke-direct {v0}, Lcom/sohu/sohuvideo/control/push/g;-><init>()V删除

去除多余权限

文件位置:AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 开机启动权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 创建快捷方式
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /> 删除快捷方式
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 读取系统设置
<uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" /> 修改系统设置

屏蔽更新

屏蔽自动更新和第三方市场更新
文件位置:AndroidManifest.xml
android:versionCode=“99999999999”
删除设置中的消息推送选项
文件位置:res\layout\act_settings.xml
android:id="@id/push_limit"内加android:visibility="gone"
删除设置中的更新选项
文件位置:res\layout\act_settings.xml
android:id="@id/version_update"内加android:visibility="gone"

个人中心清洁化

文件位置:res\layout\act_personal_center.xml
android:id="@id/vw_sohu_cinema"android:id="@id/vw_clear_advertise"android:id="@id/vw_redeem_code"所在的布局中加入android:visibility="gone"

标题栏广告

文件位置:res/layout/vw_titlebar_logoandevent.xml
除了logo外的其他布局高度宽度改为0,即可

这样就OK了

5.0版本修改记录

屏蔽强制弹出升级提示

5.0的旧版本,后来(在出了5.1以后),每次打开会有强制升级提示,访问的url为:http://api.tv.sohu.com/mobile_user/version/checkver.json?phoneType=MX4&partner=26&api_key=9854b2afa779e1a6bff1962447a09dbd&sver=5.0.0&sysver=5.0.1&plat=6&userType=0&poid=1&manufacturer=Meizu
尝试屏蔽此url的关键词,发现每次启动仍会提示“当前版本已是最新版本”,把版本号改高,也是一样提示。也就是说,并非静默检测。所以根据“检测中”关键词搜索string,找到ID,通过ID,定位到smali\com\sohu\sohuvideo\control\update\UpdateActivity.smali,直接改相应的函数发现会一直出现“检测中...”