java方式调用apksigner对Apk 检查是否签名异常 v1、v2、v3、v4 (JAVA)

apksigner

apksigner 是 Google 官方提供的针对 Android Apk 签名和验证的专用工具,位于 Android SDK / build-tools / SDK 版本 / apksigner 。

无论是 apk 包 还是 jar 包,其本质都是 zip 格式的压缩包,如果只针对 v1 签名的话,两者的签名过程其实差不多。

apksigner 工具默认同时使用 v1 和 v2 签名

在终端输入如下命令即可

java -jar apksigner.jar verify –print-certs –min-sdk-version=24 -v 11.apk

file

JAVA方式调用校验

jar包自己改过,之前只能man调用。修改后抽出了一个公共方法调用。

apksigner-1.1.jar包下载
链接: https://pan.baidu.com/s/1Z6QQA7870C-Y4MB_6K6zVg 提取码: ex92

测试代码:

package com.utils.sign;

import com.alibaba.fastjson.JSON;
import com.android.apksig.ApkVerifier;
import com.android.apksigner.ApkSignerTool;

public class ApkV2SignInfo {

    /**
     * 判断v1~v4签名是否通过
     */
    public static boolean getApkSingInfo(String apkPath) {
        String[] arg = {"--print-certs","--min-sdk-version=24","-v",apkPath};
        try {
             ApkVerifier.Result result = ApkSignerTool.verify2(arg);
             return (result !=null && result.isVerified())?true : false; 
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    //java -jar apksigner-1.0.jar verify --print-certs --min-sdk-version=24 -v 12.apk
    public static void main(String[] args) {
        String apkPath = "F:\\11.APK";
        String[] arg = {"--print-certs","--min-sdk-version=24","-v",apkPath};
        try {
//          ApkSignerTool.main(arg);
             ApkVerifier.Result result = ApkSignerTool.verify2(arg);
             System.out.println(result.isVerified());
             System.out.println(JSON.toJSONString(result));
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

运行得到结果
file

发布者:小站,转转请注明出处:http://blog.gzcity.top/4817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年12月6日 14:46
下一篇 2022年12月9日 17:51

相关推荐

  • Java中StringBuilder的常用方法

    在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空间。使用StringBuilder类就可以避免这种问题的发生,下面就Stringbuilder的使用做个简要的总结: 一、创建Stringbuilder对象St…

    Java 2022年7月5日
    1.5K610
  • Linux命令汇总 | vim | shell | 进阶【2022版】

    Linux大全 一、Linux上下五千年 1.1 历史长河 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。 它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程…

    2022年6月24日
    63920
  • 【Vue学习总结】2. Vue目录结构分析

    接上篇《1.Vue环境搭建、运行第一个项目》 上一篇我们主要讲解了Vue的环境的搭建,本篇我们主要来分析Vue项目的目录结构。 一、Vue项目文件目录详情介绍 下面就是上一篇我们搭建的一个样例工程的完整结构(install后): 其中包括了node_modules、build、config、src、static以及test文件夹,还有index.html的超…

    2022年7月6日
    85010
  • CISP模拟测试三【CISE方向】

    祝老铁们早日拿证~ 1. 最小特权是软件安全设计的基本原则,某应用程序在设计时,设计人员给出了以下四种策略,其中有一个违反了最小特权的原则,作为评审专家,请指出是哪一个?(单选) A、A.软件在Linux下安装后,设定运行时使用nobody用户运行实例 B、B.软件的日志备份模块由于需要备份所有数据库数据,在备份模块运行时,以数据库备份操作员账号连接数据库 …

    2022年5月17日
    11.1K23680
  • 识别并修复 Web 应用中的 XSS 漏洞

    什么是跨站点脚本? 跨站点脚本 (XSS) 是一个代码注入漏洞,当开发人员在将用户输入插入 HTML 模板之前未对用户输入进行足够好的审查时,就会在处理 HTML 的应用程序中发生该漏洞。它允许攻击者将任意 JavaScript 代码插入模板并在用户的上下文中执行它: 在上图中,开发人员未能清理“姓氏”div 的内容,这导致用户能够通过操纵其姓氏来包含恶意脚…

    2023年6月11日
    10.2K1280

回复 Iariorqpp

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

评论列表(1,199条)