发新帖

分享个自己去芒果TV启动页广告的小体会

[复制链接]
21699 12
本帖最后由 peterdocter 于 2015-1-22 13:31 编辑

修改方法主要出自低调老师的教学...感谢....

前天应约帮个朋友试着去除芒果启动页倒计时广告,之前也没碰过它,所以心里也没底。就先反编译(建议用 APKIDE,不过我是用的 APKDB + NOTEPAD++)看看:

1,首先在 AndroidManifest.xml 搜索 app_name,第一个就是我们要找到了:

<application android:allowBackup="true" android:hardwareAccelerated="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name="com.hunantv.imgo.global.ImgoApplication" android:theme="@style/AppTheme" android:uiOptions="splitActionBarWhenNarrow">

看它后面的  android:name="com.hunantv.imgo.global.ImgoApplication"。

2,依次在 smali 目录下打开 com/hunantv/imgo/global 双击里面的 ImgoApplication.smali,随便找找敏感词,比如 "ad_",结果一下子就找到了。
.method public static e()V
.locals 7

const/4 v2, 0x0

const-string v0, "ad_url" # 广告URL

invoke-static {v0, v2}, Lcom/hunantv/imgo/f/ac;->b(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

move-result-object v0

const-string v1, "ad_file_name" #广告文件名称

invoke-static {v1, v2}, Lcom/hunantv/imgo/f/ac;->b(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

move-result-object v1

const/4 v2, 0x0

const-string v3, "/mobile/ad" #广告在手机中的目录位置

invoke-static {}, Lcom/hunantv/imgo/net/c;->b()Lcom/loopj/android/http/RequestParams;

move-result-object v4

const-class v5, Lcom/hunantv/imgo/net/entity/AdImageEntity;

new-instance v6, Lcom/hunantv/imgo/global/g;

invoke-direct {v6, v0, v1}, Lcom/hunantv/imgo/global/g;-><init>(Ljava/lang/String;Ljava/lang/String;)V

invoke-static {v2, v3, v4, v5, v6}, Lcom/hunantv/imgo/net/d;->a(ZLjava/lang/String;Lcom/loopj/android/http/RequestParams;Ljava/lang/Class;Lcom/hunantv/imgo/net/b;)V

return-void
.end method

3,返回值是 return-void,过程中间没发现与外面有啥红杏出墙的交流,按字面的意思应该是显示广告了,就删空试试吧。改完后为:
.method public static e()V
.locals 0

return-void
.end method

4,回编译测试,启动页广告好象真的没啦。。。修改结束。

5,需要注意的是,现在大多数应用,如果以前显示过广告,一定会有缓存,因此下次打开程序,还有可能显示广告,故此,不妨再搜索一遍  "ad_"。结果在 \smali\com\hunantv\imgo\activity\MainActivity.smali 中,又搜索到 了 const-string v0, "ad_file_name"。

在整个函数里上下看看,发现一些有趣的语句。比如:
    ......
    invoke-static {v1}, Lcom/nostra13/universalimageloader/utils/StorageUtils;->getCacheDirectory(Landroid/content/Context;)Ljava/io/File;
    ...... # 取得缓存的图片在SD卡中的目录
    invoke-direct {v0, v1, v2}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
    ......
    invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setImageBitmap(Landroid/graphics/Bitmap;)V
    ...... # 设置图像位图
    invoke-direct {v0, v6}, Landroid/view/animation/AnimationSet;-><init>(Z)V
    ...... # 显示图片动画
    invoke-virtual {v1}, Lcom/hunantv/imgo/activity/dj;->start()Landroid/os/CountDownTimer;
    ...... # 倒计时显示开始

通过这些关键字,您能联想到什么了吗?在这可进一步修改,就不详细分析了。

其实本文的修改,还没来得及涉及到倒计时这个问题就结束了,在此有必要插 一句:有时我是直接搜索倒计时秒数比如 0xbb8 (3000毫秒)找出一堆来挨个儿分析。。。效率是极低的,我不建议大家按这种方法。更高级的方法还是请更专业的兄弟指教吧,因为我也是在学习中,活到老学到老嘛!

哦!对了,其实 start() 以及 CountDown 这种关键字,我是在首次启动应用,显示启动页广告时的 logcat 里面看到的。此种方法再配合搜索 "ad_",准确率更高。。。

以上是我的业余改法,写到这里就已经开始思维凌乱了,拿出来可能误人子弟,我目的只是想提供一个另类思路,请高手指正,见笑!!

恭喜汉化界前辈老烈来破处
PC时成名之作 winrar 汉化
android时成名之作 智器pdf去广告



已有2人评分 NB 荣获致谢 理由
sndncel + 1 + 1 很给力!
myoldid + 1 + 1 赞一个!

查看全部评分 总评分: NB +2  荣获致谢 +2 

举报 使用道具

回复

精彩评论12

fammer    发表于 2015-1-22 13:27:52 | 显示全部楼层
支持。叼!!!!

举报 使用道具

回复
Sarkozy    发表于 2015-1-22 13:27:59 | 显示全部楼层
大神!!!!!

举报 使用道具

回复
越狱    发表于 2015-1-22 13:41:55 | 显示全部楼层
支持烈火

举报 使用道具

回复
myoldid    发表于 2015-1-22 13:51:13 | 显示全部楼层
还没玩过这类去广告,学习下

举报 使用道具

回复 支持 反对
ccsopq    发表于 2015-1-22 13:54:43 | 显示全部楼层
可能查看源代码会比较方便吧

举报 使用道具

回复 支持 反对
hdfg159    发表于 2015-1-22 14:09:20 | 显示全部楼层
我擦,这样也行,看了看,支持一下

举报 使用道具

回复 支持 反对
sndncel    发表于 2015-1-22 18:43:02 | 显示全部楼层
谢谢分享。。。。进来学习了呀。哈哈。

举报 使用道具

回复 支持 反对
哆啦B梦    发表于 2015-1-22 20:12:07 | 显示全部楼层
感谢分享

举报 使用道具

回复
荆轲刺秦琼    发表于 2015-1-29 14:09:53 | 显示全部楼层
谢谢分享。。。。进来学习了

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表