Android扫描含有广告的应用_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android扫描含有广告的应用

Android扫描含有广告的应用

 2013/10/23 18:55:51  红袖添香夜伴读  博客园  我要评论(0)
  • 摘要:曾经在应用里使用过有米和万普的广告,先简单介绍下我所知道的在应用里接入这些广告平台的方式。一般分为以下几个步骤:1、引入jar包(必需)2、AndroidManifest文件中配置权限(必需)3、AndroidManifest文件中添加必要的Activity声明或者Service、Receiver(必需)4、添加PublisherID(可选)形如:<meta-dataandroid:value="999999#123"android:name="DOMOB_PID"/>(多盟)5
  • 标签:android 应用 广告

曾经在应用里使用过有米和万普的广告,先简单介绍下我所知道的在应用里接入这些广告平台的方式。

一般分为以下几个步骤:

1、引入jar包(必需)

2、AndroidManifest文件中配置权限(必需)

3、AndroidManifest文件中添加必要的Activity声明或者Service、Receiver(必需)

4、添加Publisher ID(可选)

   形如:class="tag"><meta-data android:value="999999#123" android:name="DOMOB_PID" /> (多盟)

5、使用xml或代码显示广告(必需)

通过研究以上几个步骤,现提供三种扫描广告应用的方法: 1、获取AndroidManifest文件中配置的元数据(即meta-data),分析key值是否是某一广告平台(有的广告平台有特定的标识,如多盟的就是DOMOB_PID)。 2、扫描AndroidManifest文件中声明的Activity或Service、Receiver,与收集到的广告平台的广告行为特征对比。 3、扫描应用中所有Class,与收集到的广告平台的广告行为特征对比。 然后逐条分析各种方法的可行性,先分析第一种方法:   1、假如使用某个广告平台,不需要配置元数据,那么这种方法就无法扫描到(所以将第4步标为可选)   2、假如应用中只配置了元数据,并未引入jar包(即不产生广告行为),但是这种方法扫描到了,所以也是不对的 所以第一种方法不可行。 再来分析第二种方法:     获取Manifest文件里声明的Activity,然后与收集到的广告Activity匹配     假如我只声明了Activity,并没有引入jar包(未产生广告行为),那么扫描出的结果肯定也是有问题的。另外要注意广告特征库的收集,收集的越多,扫描结果越准确。不过有些广告还会以他们方式发送广告,比如有米,它会在AndroidManifest文件里注册Service和Receiver,目的可想而知,所以这种方法扫描也会有漏网之鱼的。 现提供相关代码: files/29886889.png" alt="" border="0" />  广告实体类代码如下:
public class AdModel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
    * @Fields ad_name : TODO 广告服务商
    */
    private String ad_name;
    /**
    * @Fields ad_type : TODO 广告类型
    */
    private int ad_type;
    public AdModel(String paramString, int paramInt) {
        this.ad_name = paramString;
        this.ad_type = paramInt;
    }
    public String getAd_name() {
        return this.ad_name;
    }
    public int getAd_type() {
        return this.ad_type;
    }
    public void setAd_name(String paramString) {
        this.ad_name = paramString;
    }
    public void setAd_type(int paramInt) {
        this.ad_type = paramInt;
    }
}

  

广告管理工具类:(广告特征库,通过反编译恶意广告拦截专家获得)
public class AdManagerUtil {
    public static Map<String, AdModel> adList = new HashMap();
    static {
        adList.put("com.adsmogo.adview.AdsMogoWebView", new AdModel("芒果广告", 0));
        adList.put("com.lmmob.ad.sdk.LmMobAdWebView", new AdModel("力美", 0));
        adList.put("com.mobisage.android.MobiSageActivity", new AdModel("艾德思奇",
                0));
         adList.put("net.youmi.android.AdActivity", new AdModel("有米", 0));
        adList.put("net.youmi.android.AdBrowser", new AdModel("有米", 0));  
        adList.put("cn.domob.android.ads.DomobActivity", new AdModel("多盟", 0));
        adList.put("com.adwo.adsdk.AdwoAdBrowserActivity", new AdModel("安沃", 0));
        adList.put("com.vpon.adon.android.WebInApp", new AdModel("Vpo", 0));
        adList.put("com.google.ads.AdActivity", new AdModel("AdMob", 0));
        adList.put("com.adchina.android.ads.views.AdBrowserView", new AdModel(
                "AdChina", 0));
        adList.put("com.winad.android.ads.VideoPlayerActivity", new AdModel(
                "赢告", 0));
        adList.put("com.wiyun.common.SimpleBrowserActivity", new AdModel("微云",
                0));
        adList.put("com.greystripe.android.sdk.AdContentProvider", new AdModel(
                "Greystripe", 0));
        adList.put("com.mdotm.android.ads.MdotmLandingPage", new AdModel(
                "MdotM", 0));
        adList.put("com.millennialmedia.android.MMAdViewOverlayActivity",
                new AdModel("Millennial", 0));
        adList.put("com.mt.airad.MultiAD", new AdModel("AirAD", 0));
        adList.put("com.wooboo.adlib_android.AdActivity", new AdModel("哇棒", 0));
        adList.put("com.tencent.mobwin.MobinWINBrowserActivity", new AdModel(
                "聚赢", 0));
        adList.put("com.baidu.mobads.AppActivity", new AdModel("百度", 0));
        adList.put("com.umengAd.android.UmengAdDetailActivity", new AdModel(
                "友盟", 0));
        adList.put("com.fractalist.sdk.base.sys.FtActivity", new AdModel("飞云",
                0));
        adList.put("net.miidi.ad.banner.AdBannerActivity",
                new AdModel("米迪 ", 0));
        adList.put("cn.appmedia.ad.AdActivity", new AdModel("Appmedia", 0));
        adList.put("com.suizong.mobplate.ads.AdActivity", new AdModel("随踪", 0));
        adList.put("com.inmobi.androidsdk.IMBrowserActivity", new AdModel(
                "InMobi", 0));
        adList.put("com.telead.adlib_android.AdActivity", new AdModel("天翼", 0));
        adList.put("com.l.adlib_android.AdBrowseActivity", new AdModel("百分联通",
                0));
        adList.put("cn.aduu.adsdk.AdSpotActivity", new AdModel("aduu", 0));
        adList.put("com.donson.momark.activity.AdActivity", new AdModel(
                "Momark", 0));
        adList.put("com.doumob.main.WebViewActivity", new AdModel("Doumob", 0));
        adList.put("com.mobile.app.adlist", new AdModel("第七传媒", 0));
        adList.put("com.fractalist.sdk.base.sys.FtActivity", new AdModel("飞云",
                0));
        adList.put("com.adzhidian.view.WebViewActivity", new AdModel("指点传媒", 0));
        adList.put("com.huawei.hiad.core.BrowserActivity", new AdModel("华为聚点",
                0));
        adList.put("", new AdModel("", 0));
        adList.put("", new AdModel("", 0));
        adList.put("", new AdModel("", 0));
        adList.put("com.adchina.android.ads.views.FullScreenAdActivity",
                new AdModel("AdChina", 3));
        adList.put("com.lmmob.ad.sdk.LmMobFullImageActivity", new AdModel("力美",
                3));
        adList.put("com.wooboo.adlib_android.FullActivity",
                new AdModel("哇棒", 3));
        adList.put("com.adwo.adsdk.AdwoSplashAdActivity", new AdModel("安沃", 3));
        adList.put("com.telead.adlib_android.FullActivity",
                new AdModel("天翼", 3));
        adList.put("cn.aduu.adsdk.AdSpotActivity", new AdModel("优友", 3));
        adList.put("com.fractalist.sdk.base.sys.FtActivity", new AdModel("飞云",
                3));
        adList.put("", new AdModel("", 3));
        adList.put("", new AdModel("", 3));
        adList.put("", new AdModel("", 3));
        adList.put("net.cavas.show.MainLoadCavasActivity", new AdModel("芒果", 1));
        adList.put("com.adsmogo.offers.adapters.WanpuAdView", new AdModel("万普",
                1));
        adList.put("net.miidi.ad.wall.AdWallActivity", new AdModel("米迪", 1));
        adList.put("com.dianle.DianleOfferActivity", new AdModel("点乐 ", 1));
        adList.put("com.lmmob.sdk.AdListActivity", new AdModel("力美", 1));
        adList.put("com.yjfsdk.advertSdk.AdverWallActivity", new AdModel("易积分",
                1));
        adList.put("com.winad.android.wall.MoreAdActivity",
                new AdModel("赢告", 1));
        adList.put("com.telead.adlib.adwall.TeleadWallActivity", new AdModel(
                "天翼", 1));
        adList.put("com.mobile.app.adlist.GEList", new AdModel("第七传媒", 1));
        adList.put("com.juzi.main.TheAdVirtualGoods", new AdModel("桔子平台", 1));
        adList.put("com.fractalist.sdk.base.sys.FtActivity", new AdModel("飞云",
                1));
        adList.put("com.waps.OffersWebView", new AdModel("万普世纪", 1));
        adList.put("com.wiyun.offer.OfferList", new AdModel("微云", 1));
        adList.put("com.etonenet.pointwall.EtonenetPointWallActivity",
                new AdModel("移通", 1));
        adList.put("", new AdModel("", 1));
        adList.put("", new AdModel("", 1));
        adList.put("com.winad.android.adwall.push.PushContentActivity",
                new AdModel("赢告", 2));
        adList.put("com.bypush.PushActivity", new AdModel("艾普 ", 2));
        adList.put("com.kuguo.ad.MainActivity", new AdModel("酷果", 2));
        adList.put("cn.aduu.adsdk.AduuPushAdReceiver", new AdModel("优友", 2));
        adList.put("com.iadpush.adp.IA", new AdModel("IadPush", 2));
        adList.put("com.mobile.app.adpush.GELaunchNotify", new AdModel("第七传媒",
                2));
        adList.put("com.fractalist.sdk.base.sys.FtActivity", new AdModel("飞云",
                2));
        adList.put("com.adzhidian.view.WebViewActivity", new AdModel("指点传媒", 2));
        adList.put("com.longmob.service.LongActivity", new AdModel("掌龙广告平台", 2));
        adList.put("cn.jpush.android.ui.PushActivity", new AdModel("极光推送", 2));
        adList.put("", new AdModel("", 2));
        adList.put("", new AdModel("", 2));
        adList.put("", new AdModel("", 2));
    }
}

  

  具体扫描过程:
List<App> appList = new ArrayList<App>();
List<PackageInfo> packages = packageManager.
getInstalledPackagesPackageManager.GET_ACTIVITIES );
                for (int i = 0; i < packages.size(); i++) {
                        PackageInfo packageInfo = packages.get(i);
                        /**-------可能发送广告------**/
                        ActivityInfo[] arrayOfActivityInfo = packageInfo.activities;
                        if(arrayOfActivityInfo!=null)
                        {
                            for(ActivityInfo activityInfo:arrayOfActivityInfo)
                            {
                                if(AdManagerUtil.adList.containsKey(activityInfo.name))
                                {
                                    appinfo.setContainAd(true);
                                    appList.add(appinfo);
                                }
                            }
                        }
}

appList包含的就是可能带广告的应用。

最后分析第三种方法:     未完待续....
  • 相关文章
发表评论
用户名: 匿名