如何使用签名工具解析apk,查看apk签名和基本信息,AndroidManifest.xml的介绍

如何查看apk签名

使用appium 启动运行后,选择此apk,查看运行日志,可发现解析apk数据的签名信息

[ADB] Starting 'D:\Program Files (x86)\Android\android-sdk\build-tools\29.0.3\apksigner.bat' with args '["verify","--print-certs","C:\\Users\\huxuejing\\AppData\\Local\\Programs\\Appium\\resources\\app\\node_modules\\appium\\node_modules\\appium-uiautomator2-server\\apks\\appium-uiautomator2-server-v1.18.0.apk"]'
[ADB] apksigner stdout: Signer #1 certificate DN: [email protected], CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US

查看包名,activity

查看包名就一行命令, 显示Apk的信息.

aapt dump badging [xxx.apk]

如何解析apk

使用工具:jadx-1.0.0
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

如何查看或者验证apk的基本信息

apk解压或者解析之后,找到AndroidManifest.xml文件,打开查看
包名:
在这里插入图片描述
版本号:
在这里插入图片描述
targetSdkVersion:
在这里插入图片描述

MD5签名:

CN 名称(名字与姓),OU 组织单位名称 ,O =组织名称  L 城市, ST=省份   C=国家

可使用keytool工具生成证书
在这里插入图片描述

AndroidManifest.xml介绍

显示了manifest文件的通常的结构以及它可以含有的元素

<?xml version="1.0" encoding="utf-8"?> 
<manifest>  //根节点,描述了package中所有的内容 
    <uses-permission /> //请求你的package正常运作所需赋予的安全许可。一个manifest能包含零个或更多此元素 
    <permission />  //声明了安全许可来限制哪些程序能使用你的package中的组件和功能。一个manifest能包含零个或更多此元素 
    <permission-tree />  
    <permission-group /> 
    <instrumentation />  //声明了用来测试此package或其他package指令组件的代码。一个manifest能包含零个或更多此元素 
    <uses-sdk />  //指定当前应用程序兼容的最低sdk版本号 
    <application>  //包含package中application级别组件声明的根节点。此元素也可包含application中全局和默认的属性,如标签,icon,主 题,必要的权限,等等。一个manifest能包含零个或一个此元素(不允许多余一个) 
        <activity>  //用来与用户交互的主要工具。当用户打开一个应用程序的初始页面时一个activity,大部分被使用到的其他页面也由不同的activity所实现并声明在另外的activity标记中。 
            <intent-filter>  //声明了指定的一组组件支持的Intent值 
                <action /> 
                <category /> 
                <data /> 
                    <type/> 
                    <schema/> 
                    <authority/> 
                    <path/> 
            </intent-filter> 
            <meta-data /> 
        </activity> 
        <activity-alias> 
            <intent-filter> . . . </intent-filter> 
            <meta-data /> 
        </activity-alias> 
        <service>  //Service是能在后台运行任意时间的组件 
            <intent-filter> . . . </intent-filter> 
            <meta-data/> 
        </service> 
        <receiver>   //IntentReceiver能使你的application获得数据的改变或者发生的操作,即使它当前不在运行 
            <intent-filter> . . . </intent-filter> 
            <meta-data /> 
        </receiver> 
        <provider>  //ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件 
            <grant-uri-permission /> 
            <meta-data /> 
        </provider> 
        <uses-library /> 
        <uses-configuration />   
    </application> 
</manifest>

<uses-permission 含有系统权限和自定义权限

<permission 一般是自定义权限

<permission 与<uses-permission中的权限可存在重复权限

<uses-permission 和<permission 都是app所声明的权限,若存在权限未标记在此处的,则为未声明权限

猜你喜欢

转载自blog.csdn.net/u014150715/article/details/109781369