HardBirch

Android系统扫描带广告应用的方法

时间:13-01-08 栏目:android学习笔记 作者:魔豆先生 评论:0 点击: 6,547 次

android上应用广告检测广告检查广告扫描广告杀手广告插件杀手的应用甚多,但是他们采用了什么原理来进行的呢,今天进行深入剖析。

在反编译带广告的apk的包后,会发下如下特征:

1. manifest.xml文件中有对各个activity的声明,其中包含了广告插件的窗口;

2.广告插件是一个单独的jar包,在混淆中,proguard.cfg文件中必须对public的类和方法做相应的keep处理。

所以,在反编译后的包里面依然可以找到广告插件对应的包名。

针对上述迹象,对目前带广告检测功能的应用进行试验:

1.将待扫描的APK打包进广告插件,给“广告扫描工具”进行扫描。

2.在manifest.xml中声明一些广告平台使用的activity。

LBE和360对广告插件的扫描结果不大一样,LBE能扫描数来的相对多一些。

 

测试结果如下:

方法1能扫描出来。

方法2不能扫描出来。

 

所以,在此也打算用包名,类名匹配的方法来进行广告插件扫描。在具体的广告插件扫描方案是:

(1) 列出系统安装的所有apk;

(2)列出每个apk使用的所有class;

(3)单个class与广告插件特征库进行匹配;

 

在android系统上

(1)获取所有安装的包的代码:

PackageManager packagemgr= getPackageManager();

List<PackageInfo> packageList= packagemgr.getInstalledPackages(0);
count = packageList.size();
for(int i = 0; i < count; i++) {
    PackageInfo pi = packageList.get(i);
    if (pi.versionName == null)
        continue;
    
    //判断该软件包是否在/data/app目录下
    File file = new File( "/data/app/" +  pi.packageName + ".apk");
    if(!file.exists())
              systemInstalledApk++;
    userInstalledApk++;
    /**
     * 应用程序的名字
     */
    applicationName = pi.applicationInfo.loadLabel(packagemgr).toString();
         packageName = pi.packageName;
}
(2)获取单个package内所有的class:

try {
path = context.getPackageManager().getApplicationInfo(packageName, 0).sourceDir;// 获得某个程序的APK路径
} catch (NameNotFoundException e) {
e.printStackTrace();
}
try {
DexFile dexFile = new DexFile(path);// get dex file of APK
Enumeration<String> entries = dexFile.entries();
while (entries.hasMoreElements()) {// travel all classes
String className = (String) entries.nextElement();
}

} catch (IOException e) {
e.printStackTrace();
}

 

在PC端上:

实现实现上述两点也容易,也不容易。

完全自己的程序的话,可以考虑解析class.dex文件。这个涉及去了解dex文件的格式,然后读取响应的class内容。

如果仅仅是做一个自动化工具的话,可以考虑使用dexdump.exe程序去解析class.dex文件。

剩下的工作可以使,C应用,MFC,Java,shell脚本等等统统可以搞定。

 

剩下的一个问题就是广告插件特征库的收集,收集越全,扫描出来的广告插件就可以越准确。

 

 

 

 

声明: 本文由( 魔豆先生 )原创编译,转载请保留链接: Android系统扫描带广告应用的方法

Android系统扫描带广告应用的方法:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐