阅读 363

一文带你了解android检测加固的方案

1.移动端主流加固

按照市场使用及推广目前市面上已经成型并进行销售的移动端加固主要有:
1.爱加密加固
2.梆梆加固
3.腾讯乐固
4.网易易盾
5.360加固
6.阿里云加固
7.百度加固
8.娜迦加固
9.顶象加固

2. 移动端加固的详细分析

2.1 爱加密加固

  1. 爱加密加固后会出现两个的Application的入口类,分别为SuperApplication和NativeApplication。

2.APK加固后的入口点会变成 com.shell.SuperApplication
3.加固后会在assets目录下新增三个文件分别为:ijiami.dat、ijiami2.dat、ijiami.ajm。
4.加固后悔增加两个so文件分别为libexec.so和libexecmain.so。

2.2梆梆加固

1.加固后会在Assets的目录下新增secData0.jar文件
2.加固后会新增几个so文件:libSecShell.so、libSecShell_x86.so、libSecShell_art.so等。
3.加固后apk的入口类变成com.secshell.shellwrapper.SecAppWrapper。

2.3 腾讯乐固

1.加固后APK的入口变成com.tencent.StubShell.TxAppEntry
2.加固后lib文件会新增几个文件:liblegudb.so、libshella-2.10.2.3.so、mix.dex。

2.4 网易易盾加固

1.加固后libs目录下会新增个so文件:libnesec。

2.5 360加固

1.加固后apk 的入口点变成:com.stub.StubApp
2.Assets目录下会新增几个so文件分别诶:libjiagu.so,libjiagu_ls.so,libjiagu_x86.so,libjiagu_art.so。

2.6 阿里云加固

1.壳的入口点还是为原apk的入口点,不过方法都是被抽取并native的。
2.加固后Assets目录下会新增一个文件:libdemolishdata.so
3.加固后libs目录下会新增一个文件:libdemolish.so

2.7 百度加固

1.加固后apk的入口点变成com.baidu.protect.StubApplication
2.assets目录和libs目录会新增几个文件分别为:libbaiduprotect.so、libbaiduprotect_x86.so、libbaiduprotect_art.so、baiduprotect1.jar。

2.8娜迦加固

1.加固后libs目录会新增几个so文件分别为:libddog.so、libcdog.so、libfdog.so

2.9顶象加固

1.加固后apk的入口点还是原来的入口点,但是全部都变成native的,而且全是在so文件里,并利用arm编写了对应方法。
2.加固后libs目录下回新增so文件分别为:libjni.so,libsec.so

3.识别移动端加固

3.1 识别检测的方法

通过直接读取apk文件里面的文件特征属性并进行比对,只要apk里面有对应的加固特征属性,那么就证明该apk被加固了。

3.2代码实现

以下是用C++实现了读取apk文件(apk文件其实就是个zip文件)并进行比对的实现代码


CString CApkScanToolDlg::IsAndroidApkProtect()
{
	CString EncryptType;
	vector<CString>::iterator it;
	UpdateData(FALSE);
	ZipFileData m_zipFiledata;
	m_zipFiledata.GetZipFileData(m_filePath.GetBuffer(m_filePath.GetLength()));
	for(it= m_zipFiledata.m_fileInfo.begin(); it != m_zipFiledata.m_fileInfo.end();it++)
	{
		
		CString ExtenName = GetFileExtenName(*it);
		if("so" == ExtenName || "dex" == ExtenName || "dat" == ExtenName)
		{
			CString temp =GetFileName(*it);
			if("libtup.so"  == temp || "libexec.so" == temp || "libshell.so" == temp  || "mix.dex" == temp)
			{
				EncryptType = "腾讯";
				return EncryptType;
			}
			else if("libsgmain.so"  == temp || "aliprotect.dat" == temp || "libsgsecuritybody.so" == temp || "libmobisec.so" == temp)
			{
				EncryptType = "阿里聚安全";
				return EncryptType;
			}
			else if("libchaosvmp.so"  == temp || "libddog.so" == temp || "libfdog.so" == temp )
			{
				EncryptType = "娜迦";
				return EncryptType;
			}
			else if("libkwscmm.so" == temp  ||  "libkwscr.so" == temp || "libkwslinker.so" == temp)
			{
				EncryptType = "几维安全";
				return EncryptType;
			}
			else if("libtosprotection.x86.so"== temp  ||  "libtosprotection.armeabi-v7a.so" == temp || "libtosprotection.armeabi.so" == temp)
			{
				EncryptType = "腾讯御安全";
				return EncryptType;
			}
			else if("libsecexe.so" == temp  ||  "libtosprotection.armeabi-v7a.so" == temp || "libtosprotection.armeabi.so" == temp)
			{
				EncryptType = "梆梆免费版";
				return EncryptType;
			}
			else if("libDexHelper.so" == temp  ||  "libDexHelper-x86.so" == temp )
			{
				EncryptType = "梆梆企业版";
				return EncryptType;
			}
			else if("libexec.so" == temp  ||  "libexecmain.so" == temp || "ijiami.dat" == temp )
			{
				EncryptType = "爱加密免费版";
				return EncryptType;
			}
			else if("libprotectClass.so" == temp  ||  "libjiagu.so" == temp || "libjiagu_art.so" == temp  || "libjiagu_x86.so" == temp)
			{
				EncryptType = "360";
				return EncryptType;
			}
			else if("libegis.so" == temp  ||  "libNSaferOnly.so" == temp )
			{
				EncryptType = "通付盾";
				return EncryptType;
			}
			else if("ijiami.ajm" == temp )
			{
				EncryptType = "爱加密企业版";
				return EncryptType;
			}
			else if("libedog.so" == temp )
			{
				EncryptType = "娜迦企业版";
				return EncryptType;
			}
			else if("libnqshield.so" == temp )
			{
				EncryptType = "网秦";
				return EncryptType;
			}
			else if("librsprotect.so" == temp )
			{
				EncryptType = "瑞星";
				return EncryptType;
			}
			else if("libbaiduprotect.so" == temp )
			{
				EncryptType = "百度";
				return EncryptType;
			}
			else if("libapssec.so" == temp )
			{
				EncryptType = "盛大加密";
				return EncryptType;
			}
			else if("libx3g.so" == temp )
			{
				EncryptType = "顶像科技";
				return EncryptType;
			}
			else if("libAPKProtect.so" == temp )
			{
				EncryptType = "APKProtect";
				return EncryptType;
			}
			else if("libnesec.so" == temp )
			{
				EncryptType = "网易易盾";
				return EncryptType;
			}
			

		}
		
	}

	EncryptType = "恭喜你这App文件没被加固";
	return EncryptType;
}
复制代码
文章分类
Android
文章标签