前传
炎热的下午 坐在家中啤酒倒满杯,香烟摆好,脑中回想起F8视频里的操作,嗯 是时候找个东西练练手了,搞事搞事儿 先搞一个去广告试试手。腾讯奇异感觉很难搞的样子 嗯。搜狐包挺小的 就这个了。
初始准备
打开Fiddler 调试好手机端口 先研究研究抓包,看看能不能找到蛛丝马迹
找突破口
鼠标随意点一个试试 agn.aty.sohu.com,进去一瞧,嗯 不错不错,运气真好看到了相关的广告关键字 , 发现mediaFile,Duration等几个的变量,大概意思每段15秒, json 共返回了5段,刚好是搜狐的广告时长75秒(真T..长),中间在看别的字段的时候甚至发现了一个不为人知的秘密,原来搜狐视频和56合作,有一个神奇的字段,里面的网址打开直接在56域名下的h5页面看,竟然无广告!还是vip的资源。。。
遇坑
AndroidKiller搜
mediaFile 变量 ,经过筛选找到setMediaFile的关键位置,添加一波Toast的smali代码,运行试试 也验证下 是否能正常编译运行。biaji。
果然上帝在这里挖了个坑,还是个大坑 什么@后加* 等等都不管用,搜索解决几个小时无果,凭我多年开发经验(装逼画面ing),删了这两行style代码 肯定还会有更多的引用也会出错,这种蠢事我会做么?? 我...会.... 由于实在是找不到解决办法 一并删除了 包括values-v22中的 八处引用,编译运行。。。 世界一片清新。哎 人艰不拆啊 有大佬知道什么毛病 给小的说下,给个链接我去学学么么哒。
res\values-v24\styles.xml:6: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Animation.OptionsPanel'.
在遇坑
当编译通过,内心无比愉悦,毕竟之前尝试过很多次都是卡在这一步走不下去 ,浪费很多时间,以至于以为我真的脸黑么,还是不小心在拼多多下载的版本。
其实有时候 很多问题都是不明白其中原理或者关系 导致不明白别人为啥这么做没毛病 ,自己这么做就不行到处是坑,甚至想骂娘,结果在本来就错的基础上越走越偏越调试越偏越问越偏 别人都不明白你在干什么问什么, 自己绕一大圈还得回到原点祭出绝招三大法:清理,重启,关机。可见其中某些东西的重要性,想好再动手还是hei重要滴。
怀着激动的心情点击了一下这个从来没点击过的按钮
走你~~
然后~~~~
内心一万只草泥马奔腾而过,耐心找到出错的地方,加上android studio的动态调试大法 发现应该是加载库的时候出的错(中间一度被Tinker 这个关键字带跑偏 浪费很多时间 决定还是回到bug本身位置处理)
看到他捕捉异常的地方是这个应该和加载库有关,看过个方法 getUidMD5String 上下文后 发现不执行它不至于继续停止运行,
if-eqz的smali改为 if-nez,
这个库问题算是暂时解决 编译运行 。
新的问题 继续跳坑,之前在
setMediaFile 方法添加过的 Toast 代码显然行不通,看报错提示感觉应该是检测到 dex 的问题, 那好(本菜鸡的耐心备受煎熬啊) 把添加的 Toast 代码删掉 继续运行,这次劳资可是错误改完 没加代码,在运行不好我就要冲会员了。泪目啊。。。。
java.lang.VerifyError: Verifier rejected class com.sohu.app.ads.sdk.model.AdsResponse: void com.sohu.app.ads.sdk.model.AdsResponse.setMediaFile(java.lang.String) failed to verify: void com.sohu.app.ads.sdk.model.AdsResponse.setMediaFile(java.lang.String): [0x7] register v3 has type Reference: com.sohu.app.ads.sdk.model.AdsResponse but expected Reference: android.content.Context (declaration of 'com.sohu.app.ads.sdk.model.AdsResponse' appears in /data/app/com.sohu.sohuvideo-02g-A2kjNs5uX3suOJz6QA==/base.apk:classes2.dex)
上帝不负有心人,打开APP 熟悉的广告欢迎界面,熟悉的操作点开首页的 Vip 电影,然后我就
懵逼了!! 懵逼了!!
懵逼到变形这尼玛是为啥??我就重打了一次包 改了一个运行不了的库错误,你就直接给我免去广告了??
能不能尊重一下我的技术,,你正常出广告不行么?? (偶尔会继续出广告)
欲知后事调试如何 待我继续探索找出缘由 一个一个填坑 逆向慢慢路 其中成就辛酸各掺半啊,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更新:
又是闲暇的下午,才想起来这个烂尾还没弄完,继续搞起
之前遇到的问题是 “dex” 导致app闪退, 经过检查,发现并不是,而是我竟然在 com.sohu.app.ads.sdk.model.AdsResponse 这个类里面 没有 Context 的情况下去调用 Toast 方法,简直太可笑了(这个错误犯的好低级)。
·继续在 setMediaFile() 方法插入 Log 代码,修改.locals 变量数(表示新手容易在这里粗心忘记修改) 检测可以正常运行APP,
·接下来就是在这里打断点,动态调试下 看看这个方法的参数究竟是不是广告的播放地址呢??
·可以说是非常顺利了,打开网址瞅一瞅
·熟悉的广告界面 熟悉的15s,竟然看见广告还有一点小激动,
·接下来就好办了,最简单的办法 下面的代码要么删掉,要么让他永远执行到 :cond_0 编译打包和广告see bye bye,
是的 你没看错,就是这个简单和无脑。。。。
至此除了看电影有时间限制,登陆分享等有签名检查外,其余的电视剧综艺美剧都可以 未发现闪退等bug,看来挑这个 App 还是挺好试手的。
大家有什么好的建议疑问或者批评 请留言 一起学习 一起进步 老铁么么哒 哈哈
文件仅用于学习分享,老铁不要乱传哦
https://pan.baidu.com/s/1eEtne8WBqdmOgNbLfqdPTg f8v3