当前位置:首页 > 经验 >

手机apk文件打开方式是什么(apk后缀的文件手机怎么打开)

来源:原点资讯(www.yd166.com)时间:2022-10-27 03:18:59作者:YD166手机阅读>>

在 Android 开发中, 我们很少使用 Android 逆向去分析 apk 文件的, 但是作为一个测试人员,我们要对这个 apk 文件进行一系列的分析,审核,测试。这篇文章讲解如何解析一个 apk 文件,主要从下面几方面介绍:

● 解析前准备环境介绍

● 解析出 apk 的一些基本信息

● 解析出方法调用图

01

解析前环境介绍

使用语言:python

使用的python库:androguard

本章使用的apk文件:自己编写一个apk,apk文件最好不要混淆

我们先对 APK 文件进行一些简单的介绍

手机apk文件打开方式是什么,apk后缀的文件手机怎么打开(1)

我们解压一个 apk 文件,解压后的目录如上图所示

● META-INF目录

信息描述,签名等用途。

● res 目录

工程的资源文件,以主工程为主,其他文件(jar包)会合并到该目录下;但values文件将不会出现在此目录下,因为已经将其编译到resource.arsc文件中;raw文件会保持原有内容不会被编译。

● resources.arsc

编译后的二进制资源文件, 在网上查了说,很多做汉化补丁就是修改这个资源包进行汉化的。

● classes.dex

虚拟机执行的文件

● AndroidManifest.xml

清仓文件

def unzip_File(zip_src, dst_dir): print(dst_dir) r = zipfile.is_zipfile(zip_src) if r: fz = zipfile.ZipFile(zip_src, 'r') for file in fz.namelist(): fz.extract(file, dst_dir) searchDirFile(dst_dir) else: print('This is not zip')

02

解析APK的一些基本信息

from androguard.misc import AnalyzeAPK apk, dex, dx = AnalyzeAPK(filePath)

这三个对象对应的类别是:下面会分别介绍

androguard.core.bytecodes.apk.APK

androguard.core.bytecodes.dvm.DalvikVMFormat

androguard.core.analysis.analysis.Analysis

这个 apk 文件对象,其实就是读取 AndroidManifest.xml 文件, 了解过Android 的程序员应该知道,这个文件中就是清仓文件, 我们申请一些权限,注册 Activity, Service, Broadcast,ContentProvader 都在清仓文件中申请。

特别注意

手机apk文件打开方式是什么,apk后缀的文件手机怎么打开(2)

我们一般在编写代码的时候,有一些注册文件可能只注册了,但是没有实际的实现,我们在编译项目的时候,这些文件注册虽然会报错,但是不影响编译,运行的时候也不会报错,所以apk只是单纯的读取AndroidManifest.xml 文件,并不会验证读取文件的有效性。解决方法我们下面在具体介绍。

permissions = apk.get_permissions() # APK 获取权限信息 activities = apk.get_activities() # APK 全部的 activity service = apk.get_services() # APK 全部的 service receiver = apk.get_receivers() # APK 全部的 广播 provider = apk.get_providers() # APK 全部的 providers packagename = apk.get_package() # 获取当前 APK 的名字 appname = apk.get_app_name() # 获取当前 appName

03

解析出方法调用图

有兴趣可以参考

https://www.jianshu.com/p/c753184ac90c

手机apk文件打开方式是什么,apk后缀的文件手机怎么打开(3)

我们可以使用 dex 对象, 获取文件中所有类的,所有方法,所有的成员变量和字符串。注意, 这边获取的 dex 对象是一个 list

手机apk文件打开方式是什么,apk后缀的文件手机怎么打开(4)

900×65 36.7 KB

看起来很完美了,也可以解决我们上面提到的问题。但是和我们最终目标还有有点远,就是获取的方法调用图。我们最后一个 dx 即将登场。

classAnalysis = dx.classes['Lcom/example/songzekun/myapplication/MainActivity;'] for meth in classAnalysis.get_methods(): for _, call, _ in meth.get_xref_from(): print("from -> {} -- {}".format(call.class_name, call.name)) for _, call, _ in meth.get_xref_to(): print("to -> {} -- {}".format(call.class_name, call.name))

手机apk文件打开方式是什么,apk后缀的文件手机怎么打开(5)

1080×638 203 KB

from 是方法的调用来源, to 是当前方法中执行了那些方法, 我们可以根据这样的关系, 来构建整个应用的类,方法之间的调用图。

当然你还需要对一些 api 的方法进行一些过滤。下面代码是我对一些基本信息的过滤,过滤结束后,就是我们真正实现的方法。

# 我们排除一下 def screenClass(packagename, activities, service, receiver, provider): packagename = packagename.replace('.', '/') classAnalysis = dx.get_internal_classes() className = [] activityName = [] serviceName = [] receiverName = [] providerName = [] for item in classAnalysis: if packagename in item.name: className.append(item.name) for item in activities: item = changeClass(item) if item in className: activityName.append(item) for server in service: item = changeClass(item) if server in className: serviceName.append(server) for rece in receiver: item = changeClass(item) if rece in className: receiverName.append(rece) for pro in provider: item = changeClass(item) if pro in className: providerName.append(pro) return className, activityName, serviceName, receiverName, providerName

04

总结

到这里,我也介绍完毕,总体说来,就是apk的静态扫描技术,我个人就以这些技术做一些应用场景,欢迎大家留言讨论。

APK 代码结构展示

精准测试用例推荐

APK上架自动检测

根据 APK 文件直接提取代码特征,应用特征,对当前的APK 做分类(比如一些木马病毒的的APK), 对APK进行风险评估, 也可以作APK错误扫描,崩溃预测,敏感权限申请等等。

https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=toutiao×tamp=1661360400&author=Muller

栏目热文

手机apk怎么安装(手机上安装apk的方法)

手机apk怎么安装(手机上安装apk的方法)

简介:手机app的安装有三种方式,下面给大家总结一下。工具:手机 app一、扫码下载一般电视屏幕、网页、包装袋上都有二维...

2022-10-27 03:47:20查看全文 >>

手机apk文件安装不了(手机怎么安装apk文件)

手机apk文件安装不了(手机怎么安装apk文件)

安卓手机无法安装软件怎么办?以下华子上网就为大家带来安卓手机无法安装软件解决办法,具体操作步骤如下:1.其中最常见的就是...

2022-10-27 03:37:48查看全文 >>

手机如何打开apk文件(华为手机怎么打开apk)

手机如何打开apk文件(华为手机怎么打开apk)

我们知道安卓是可以通过APK文件来安装App的,并不像iOS那样局限于应用商店。同时,安卓App的APK安装包包含了很多...

2022-10-27 03:17:05查看全文 >>

apk.1文件怎么用手机打开(apk.1文件在手机上用什么软件打开)

apk.1文件怎么用手机打开(apk.1文件在手机上用什么软件打开)

自从知名帧率测试应用“性能狗”(Perfdog)开始收费后,CFan曾先后向大家介绍过SoloPi和华为DevEco T...

2022-10-27 04:03:24查看全文 >>

apk文件在手机怎么打开(下载的apk文件怎么打开)

apk文件在手机怎么打开(下载的apk文件怎么打开)

手机、平板电脑、PC等移动终端设备给人们带来便利的同时,不同系统阵营设备间数据传输始终是个难题,在这个日趋频繁的应用领域...

2022-10-27 03:41:34查看全文 >>

手机apk文件怎么打开安装(手机上apk文件怎么打开)

手机apk文件怎么打开安装(手机上apk文件怎么打开)

大家好,我是数码小能手笔点酷玩,今天给大家分享一个实用小技巧——如何不额外安装第三方软件,直接提取手机APP的安装包!亲...

2022-10-27 04:05:38查看全文 >>

手机能直接打开apk文件吗(手机端如何打开apk文件)

手机能直接打开apk文件吗(手机端如何打开apk文件)

手机搬家app是一款好用的实用的换机应用,该软件突破各种手机搬家的技术局限,操作简单,随下随用,传资料不需要联网、不需要...

2022-10-27 03:55:36查看全文 >>

手机apk文件打不开(手机下载apk文件无法打开)

手机apk文件打不开(手机下载apk文件无法打开)

大家在手机上下载APP的时候,有没有遇到过下载的安装包出现解析包失败,无法安装的情况。今天我就这种情况总结了以下原因:原...

2022-10-27 03:16:40查看全文 >>

手机怎么打开apk文件并安装(手机可以安装apk文件吗)

手机怎么打开apk文件并安装(手机可以安装apk文件吗)

工具原料iphone手机,数据线,电脑。操作方法01下载apk文件。02打开下载好的apk文件。03安装按钮。04...

2022-10-27 03:36:26查看全文 >>

手机打开apk文件用什么软件(手机apk用啥软件打开)

手机打开apk文件用什么软件(手机apk用啥软件打开)

感谢你关注“最佳应用”每篇文章解决某行业或某人群的一个痛点第七期原创文章By:小佳每一台手机都自带应用商店,对于玩机爱好...

2022-10-27 04:04:58查看全文 >>

文档排行