百度安卓模拟器检测和Xposed检测技术

在做某一款软件碰上vmp代码native抽取。。。遂之放弃。。。转到某一款同样类型的程序。。。

竟然发现,在主流的app中,换皮的程序竟然有那么多。。。也称之为马甲包。。。还有一些行内的龌龊行为。。。绝望。。。卧槽!

不扯淡了,直接正题。扯一下分析过程。

以下分析仅为个人学习用途,切勿用作为别的非法行为,本人概不负责!!!

分析过程

在真机以及虚拟机中测试,发现有款教育类的APP,在真机上是不需要登录就可以查看到某一些文章,但是有次数的限制,但是在虚拟机中就得百分百登录之后才能进行一些列的操作。然后就开始漫长的分析了。。。

通过分析他的so的native代码,发现在请求详细的接口中带有一些熟悉的字眼。。。

1
&ticket=&randStr=&isXposed=0&isEmulator=0

我擦,这个不就是xposed和虚拟机吗???

从更深层次的想,我擦,某款app竟然使用的是百度的so,以及使用它的同样的反垃圾协议。。。

在天眼查上查找相关信息,竟然没有发现与百度有直接关系,反而是有竞争关系。。。

通过分析了几款百度的程序,发现绝大多数都是使用这套协议。那就意味着,怼了这个协议,那么百度通用的产品,基本都是一览无遗了。。。

怎么怼这个是后话,不扯了。。。

直接贴上代码了。

查询接口

markdown

markdown

markdown

虚拟机检测

这个为最简单而又常用的检测代码了。。。
markdown

Xposed框架检测

markdown

root检测就更简单了

直接检测

1
2
3
4
5
6
7
8
9
10
public static boolean checkSuperuserApk(){
try {
File file = new File("/system/app/Superuser.apk");
if (file.exists()) {
Log.i(LOG_TAG,"/system/app/Superuser.apk exist");
return true;
}
} catch (Exception e) { }
return false;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static boolean checkRootPathSU()
{
File f=null;
final String kSuSearchPaths[]={"/system/bin/","/system/xbin/","/system/sbin/","/sbin/","/vendor/bin/"};
try{
for(int i=0;i<kSuSearchPaths.length;i++)
{
f=new File(kSuSearchPaths[i]+"su");
if(f!=null&&f.exists())
{
Log.i(LOG_TAG,"find su in : "+kSuSearchPaths[i]);
return true;
}
}
}catch(Exception e)
{
e.printStackTrace();
}
return false;
}
谢谢,爱你么么哒