前言:
本篇主要是介绍一下我们如果拿到了一个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”复制到百度查询就知道中文含义了。
正好在学习破解入门,刚好就需要这么个初级教程
查壳是方便了,但主要还是脱壳不好脱
怎么APK破解看源码?
判断lib文件夹里的东西,我也会
会查壳,还得来个怎么脱壳啊,老大
加密狗可以查到不
谢谢分享,学习原理了
比较初级的方法,但是还是有用的
查到不一定能破,哈哈
链接: https://pan.baidu.com/s/{屏蔽} 提取码: p7i6
大佬看一下这个是啥加固的 ,看不出来呀,帮下忙
链接已经屏蔽了,我先看下如果查出来了,结果发你邮箱
查壳的话,我用PEiD