悟夜叉个人博客 技术专题 APK基础信息简易分析(初级篇)

APK基础信息简易分析(初级篇)

前言:

本篇主要是介绍一下我们如果拿到了一个APK,如何手动的分析出APK的基础信息。现在市面上太多一键分析APK的工具了,有时候自己不依靠一键工具,手动做一下也是挺有趣的。文章内不会出现太多的专业术语,内容通俗易懂,所以将此篇文章定义为“初级篇”。

工具:

1、Jadx gui(JAVA反编译工具):简约且好用的逆向分析工具

2、Haozip 等解压缩工具

问答:

问题1、如何判断APK是否有加固(加壳)?

APK文件其实就是一个压缩包形式,我们首先需要对APK文件进行解压。

直接在文件夹搜索“ *.so ”,然后对照下面的厂商特征表进行判断。当然,如果是假加固,或者更深层次的加固手法,这个方式可能就不是特别准确了。

“libjiagu_x86.so”对应的是360加固平台,更多厂商特征的可参考下面的内容。

.版本 2

** 更多的加固特征,可以自行百度,这个我就也不整理了,大家可以做参考。代码大概的意思就是(以第一个举例),如果APK文件中包含“libchaosvmp.so”和“libddog.solibfdog.so”文件,说明就是娜迦(NAGA)加固的。

.判断开始 (so = “libchaosvmp.so” 或 so = “libddog.solibfdog.so”)
返回 (“娜迦”)
.判断 (so = “libexec.so” 或 so = “libexecmain.so” 或 so = “ijiami.dat”)
返回 (“爱加密”)
.判断 (so = “libsecexe.so” 或 so = “libsecmain.so” 或 so = “libSecShell.so” 或 so = “libsec.so” 或 so = “libSecShell.so” 或 so = “libSecShell-x86.so” 或 so = “libDexHelper.so” 或 so = “libDexHelper-x86.so” 或 so = “libsec.so” 或 so = “libSecShell.so” 或 so = “libSecShell-x86.so”)
返回 (“梆梆免费版”)
.判断 (so = “libprotectClass.so” 或 so = “libjiagu_art.so” 或 so = “libjiagu.so” 或 so = “libjiagu_x86.so”)
返回 (“360加固”)
.判断 (so = “libegis.so” 或 so = “libNSaferOnly.so”)
返回 (“通付盾”)
.判断 (so = “libnqshield.so”)
返回 (“网秦”)
.判断 (so = “libbaiduprotect.so”)
返回 (“百度”)
.判断 (so = “aliprotect.dat” 或 so = “libsgmain.so” 或 so = “libsgsecuritybody.so”)
返回 (“阿里聚安全”)
.判断 (so = “libtup.so” 或 so = “libexec.so” 或 so = “libshell.so” 或 so = “mix.dex” 或 so = “mixz.dex”)
返回 (“腾讯”)
.判断 (so = “libtosprotection.armeabi.so” 或 so = “libtosprotection.armeabi-v7a.so” 或 so = “libtosprotection.x86.so”)
返回 (“腾讯御安全”)
.判断 (so = “libnesec.so” 或 so = “APKProtect” 或 so = “libAPKProtect.so”)
返回 (“网易易盾”)
.判断 (so = “libkwscmm.so” 或 so = “libkwscr.so” 或 so = “libkwslinker.so”)
返回 (“几维安全”)
.判断 (so = “libx3g.so”)
返回 (“顶像科技”)
.默认
返回 (“未知加固或未加固”)

问题2、APP的包名、版本号、入口信息、权限信息在哪里获取?

类似于这种APK的基础信息,我们解压APK后,在根目录找到“AndroidManifest.xml”文件,所有信息都在里面。

我们直接打开“AndroidManifest.xml”文件是乱码的,因为这里面是二进制字符,和打开文件的编辑器无关。我们借助“Jadx gui”或者百度搜索下载“二进制文件转换器”转换成正常格式都可以正常查看。

我们找到xml文件的第二行:

<manifest xmlns:android=”http://schemas.android.com/apk/res/android” android:versionCode=”270″ android:versionName=”2.7.0″ android:compileSdkVersion=”30″ android:compileSdkVersionCodename=”11″ platformBuildVersionName=”11″ platformBuildVersionCode=”30″ package=”com.woyue.batchat”>

1、versionCode:版本号

2、versionName:版本名

3、package:apk包名(通过包名可以确定是不是官方版本的app)

接下来就是权限信息了,这里我们需要找到带有“permission”关键字的所有行,这里会有两个含有关键字的出现,一个是<uses-permission>,另外一个是<permission>,对于这两个有什么区别,我会另开一篇文章介绍。反正只要带有“permission”关键字的就是权限获取详细信息。

这个时候我们只需要将“android:name=xxx”复制到百度查询就知道中文含义了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

评论列表(12)

联系我们

联系我们

站长QQ/VX:82794

在线咨询: QQ交谈

邮箱: 82794@qq.com

任何技术问题请联系QQ,非特殊行业请勿加微信!龙信小伙伴请联系微信群找我。
关注微信
非商务合作请勿添加

非商务合作请勿添加微信

返回顶部