色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

有什么方法可以檢測(cè)APK應(yīng)用程序是否簽名異常呢

工程師鄧生 ? 來(lái)源:橙留香Park ? 作者:橙留香Park ? 2022-08-31 10:37 ? 次閱讀

0x01 APK應(yīng)用程序是否簽名異常的檢測(cè)方法

要在Android上安裝APK必須要進(jìn)行數(shù)字簽名,數(shù)字簽名用于驗(yàn)證應(yīng)用程序更新的所有者身份,驗(yàn)證的目的是為了防止APK應(yīng)用程序被篡改或修改APK來(lái)包含惡意代碼

對(duì) APK 進(jìn)行簽名時(shí),會(huì)附加一個(gè)公鑰證書,這個(gè)證書是將 APK 應(yīng)用程序與開發(fā)者和開發(fā)者的私鑰進(jìn)行關(guān)聯(lián)

:在調(diào)試模式下構(gòu)建應(yīng)用時(shí),Android SDK 會(huì)使用專門為調(diào)試目的創(chuàng)建的調(diào)試密鑰對(duì)我們要打包的APK應(yīng)用程序進(jìn)行簽名,需要注意使用調(diào)試密鑰簽名的應(yīng)用并不會(huì)在大多數(shù)APK應(yīng)用商店中被接受和允許上架

應(yīng)用程序的最終發(fā)布版本(上線生產(chǎn)版本)必須使用有效的發(fā)布版本的密鑰進(jìn)行簽名。在 Android Studio 中,APK可手動(dòng)或通過(guò)創(chuàng)建分配給發(fā)布構(gòu)建類型的簽名配置來(lái)對(duì)應(yīng)用進(jìn)行APK的簽名

Android 9(API 級(jí)別 28)之前的 Android 上,所有的應(yīng)用程序更新都需要使用相同的證書進(jìn)行簽名,所以開發(fā)者可以考慮使用 25 年或更長(zhǎng)的有效期

:需要注意,如果在 Google Play 上發(fā)布的應(yīng)用必須使用有效期在 2033 年 10 月 22 日之后結(jié)束的密鑰進(jìn)行簽名

三種 APK 簽名方案:

v1 方案:JAR 簽名

v2 方案:APK 簽名方案 v2

v3 方案:APK 簽名方案 v3

與 v1 方案相比,Android 7.0(API 級(jí)別 24)及更高版本支持的 v2 簽名,且提供了更高的安全性和性能。Android 9(API 級(jí)別 28)及以上版本支持的 V3 簽名,使應(yīng)用程序能夠更改其簽名密鑰,作為APK 更新的一部分,此功能通過(guò)允許同時(shí)使用新/舊密鑰,保證了兼容性和應(yīng)用程序的持續(xù)可用性。需要注意對(duì)于每個(gè)簽名方案,發(fā)布APK版本也應(yīng)該始終通過(guò)之前內(nèi)部評(píng)估好的方案進(jìn)行簽名

在做靜態(tài)分析(當(dāng)然動(dòng)態(tài)分析時(shí)跟這個(gè)一樣,將APK導(dǎo)出來(lái)用jarsigner或apksigner工具來(lái)驗(yàn)證APK的簽名是否異常)APK時(shí),我們要確認(rèn)幾個(gè)重要的信息,比如APK的發(fā)布版本是 Android 7.0(API 級(jí)別 24)及更高版本的 v1 和 v2 方案以及 Android 9(API 級(jí)別 28)及更高版本的所有三個(gè)方案進(jìn)行簽名,且 APK 應(yīng)用程序中的簽名證書是屬于開發(fā)者的

我們可以使用 Android SDK 構(gòu)建工具的修訂版 24.0.3 及更高版本中提供的 apksigner 工具為 APK 簽名,并確保 APK 的簽名能夠在 APK 支持的所有版本的 Android 平臺(tái)上成功通過(guò)驗(yàn)證,此處我們是主要是利用apksigner 工具來(lái)驗(yàn)證APK的簽名是否是屬于正確的開發(fā)者的,apksigner 工具它的位置在[SDK-Path] /build-tools/[版本]。

2cdd8db6-2872-11ed-ba43-dac502259ad0.png

我們可以使用apksigner工具來(lái)驗(yàn)證 APK的 簽名,apksigner 默認(rèn)安裝位置位于:C:UsersxxxAppDataLocalAndroidSdkuild-tools33.0.0lib下,隨后執(zhí)行如下命令:

$ java -jar C:UsersxxxAppDataLocalAndroidSdkuild-tools33.0.0libapksigner.jar verify --verbose vuls.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): false
Verified using v3.1 scheme (APK Signature Scheme v3.1): false
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false
Number of signers: 1

2d071ed8-2872-11ed-ba43-dac502259ad0.png

當(dāng)然,我們也可以使用 jarsigner 工具來(lái)檢查APK的簽名證書的內(nèi)容,但需要注意在調(diào)試證書時(shí),Common Name (CN)屬性要設(shè)置為 "Android Debug"

使用調(diào)試證書簽名的 APK 的輸出,這里我們使用JAVA自帶的jarsigner工具來(lái)做簽名,如何簽名的命令如下:

$ jarsigner -verify -verbose -certs vuls.apk

sm      14112 Fri Nov 30 00:00:00 CST 1979 AndroidManifest.xml      >>> 簽名者
      X.509, C=US, O=Android, CN=Android Debug      [證書的有效期為18-6-6 下午12:41至48-5-29 下午12:41]
      [無(wú)效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]sm          6 Fri Nov 30 00:00:00 CST 1979 META-INF/android.arch.core_runtime.version      >>> 簽名者
      X.509, C=US, O=Android, CN=Android Debug      [證書的有效期為18-6-6 下午12:41至48-5-29 下午12:41]
      [無(wú)效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]sm          6 Fri Nov 30 00:00:00 CST 1979 META-INF/android.arch.lifecycle_livedata-core.version

(... ...此處省略一堆內(nèi)容)     >>> 簽名者
      X.509, C=US, O=Android, CN=Android Debug      [證書的有效期為18-6-6 下午12:41至48-5-29 下午12:41]
      [無(wú)效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]


  s = 已驗(yàn)證簽名 
  m = 在清單中列出條目
  k = 在密鑰庫(kù)中至少找到了一個(gè)證書
  i = 在身份作用域內(nèi)至少找到了一個(gè)證書- 由 "C=US, O=Android, CN=Android Debug" 簽名
    摘要算法: SHA1 (弱)
    簽名算法: SHA1withRSA (弱), 1024 位密鑰 (弱)jar 已驗(yàn)證。

警告: 此 jar 包含其證書鏈無(wú)效的條目。原因: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
此 jar 包含其簽名者證書為自簽名證書的條目。
SHA1 摘要算法被視為存在安全風(fēng)險(xiǎn)。此算法將在未來(lái)的更新中被禁用。
SHA1withRSA 簽名算法被視為存在安全風(fēng)險(xiǎn)。此算法將在未來(lái)的更新中被禁用。
RSA 簽名密鑰的密鑰大小 1024 被視為存在安全風(fēng)險(xiǎn)。此密鑰大小將在未來(lái)的更新中被禁用。
此 jar 包含的簽名沒有時(shí)間戳。如果沒有時(shí)間戳, 則在其中任一簽名者證書到期 (最早為 2048-05-29) 之后, 用戶可能無(wú)法驗(yàn)證此 jar。

簽名者證書將于 2048-05-29 到期。

上面可以看到出現(xiàn)了許多"CertPath not validated"錯(cuò)誤,這個(gè)錯(cuò)誤在 Java SDK 7 及以上版本才有,如果想忽略這個(gè)錯(cuò)誤,我們可以使用 Android SDK 構(gòu)建工具的修訂版 24.0.3 及更高版本中提供的 apksigner 工具為 APK 簽名來(lái)代替JAVA JDK自帶的 jarsigner 工具來(lái)驗(yàn)證APK的證書鏈,如下:

檢查 APK 的簽名是否可在 APK 支持的所有 Android 平臺(tái)上被確認(rèn)為有效:

$ apksigner verify vuls.apk

檢查 APK 的簽名是否可在 Android 4.0.3(API 級(jí)別 15)及更高版本上被確認(rèn)為有效:

$ apksigner verify --min-sdk-version 15 vuls.apk

2d2bbfa4-2872-11ed-ba43-dac502259ad0.png

另外簽名配置可以通過(guò)Android Studio或build.gradle中的 signingConfig 塊進(jìn)行管理。要同時(shí)激活 v1和 v2 以及 v3 方案,必須設(shè)置以下值:

v1SigningEnabled true
v2SigningEnabled true
v3SigningEnabled true

在官方的 Android 開發(fā)者文檔中,提供了幾種配置應(yīng)用發(fā)布的最佳實(shí)踐

Android Studio Signature Version V1/ V2:

V1 (jar Signature)

V1: Jar Signature 來(lái)自 JDK,可對(duì)簽名后的文件,作適當(dāng)修改,并重新壓縮

V1 簽名不保護(hù) APK 的某些部分,例如 ZIP 元數(shù)據(jù)。APK 驗(yàn)證程序需要處理大量不可信(尚未經(jīng)過(guò)驗(yàn)證)的數(shù)據(jù)結(jié)構(gòu),然后會(huì)舍棄不受簽名保護(hù)的數(shù)據(jù)。這會(huì)導(dǎo)致相當(dāng)大的受攻擊面。此外,APK 驗(yàn)證程序必須解壓所有已壓縮的條目,而這需要花費(fèi)更多時(shí)間和內(nèi)存。為了解決這些問(wèn)題,Android 7.0 中引入了 APK 簽名方案 v2

V2 (Full APK Signature)

V2: Android 7.0 (Nougat) 引入的一項(xiàng)新的簽名方案,不能對(duì)簽名后的 APK作任何修改,包括重新解壓。因?yàn)樗轻槍?duì)字節(jié)進(jìn)行的簽名,所以任何改動(dòng)都會(huì)影響最終結(jié)果

V3

V3:在 Android 9 中,v2 方案已更新為 v3 方案(也稱為v2+),以便在簽名分塊中包含其他信息,但在其他方面保持相同的工作方式,該方案會(huì)對(duì) APK 的內(nèi)容進(jìn)行哈希處理和簽名,然后將生成的“APK 簽名分塊”插入到 APK 中

APK 簽名方案詳情,請(qǐng)移步Android 官網(wǎng)的介紹

2d4d2ff4-2872-11ed-ba43-dac502259ad0.png

只勾選v1簽名所有機(jī)型都能用,如果只勾選V2簽名7.0以下機(jī)型會(huì)在直接安裝完后顯示未安裝,7.0及以上機(jī)型使用V2的方式驗(yàn)證成功安裝,同時(shí)勾選V1和V2對(duì)所有機(jī)型成功安裝,或者在Gradle 文件中修改,如下:

signingConfigs {  
    debug {  
        v1SigningEnabled true  
        v2SigningEnabled true
        v3SigningEnabled true    }  
    release {  
        v1SigningEnabled true  
        v2SigningEnabled true  
        v3SigningEnabled true    }  } 

來(lái)說(shuō)說(shuō)為什么我們要推薦使用v1和v2共同使用呢?因?yàn)樵?020年的時(shí)候Google公布的“Janus”漏洞,可使攻擊者將Dex附加到原有的apk之上,繞過(guò)簽名認(rèn)證,在執(zhí)行時(shí)優(yōu)先執(zhí)行附加的dex文件,這個(gè)漏洞直接影響Android 5.0~8.0上所有基于signature scheme V1簽名的APK。這里說(shuō)哈,對(duì)應(yīng)APK應(yīng)用程序來(lái)說(shuō)簽名確是唯一的,是用來(lái)證明是誰(shuí)開發(fā)的是否是盜版或惡意APK,那么假如正版應(yīng)用被惡意修改,其簽名也會(huì)隨之被破壞,需要重新簽名才能安裝到Android上,而且市面上各種APK應(yīng)用商店和手機(jī)應(yīng)用助手類的工具,往往通過(guò)包名和簽名來(lái)判斷一個(gè)APK應(yīng)用程序是否是盜版或惡意APK應(yīng)用程序

:在官方的 Android 開發(fā)者文檔中,官方提供了幾種配置應(yīng)用發(fā)布的方式,

2d78e284-2872-11ed-ba43-dac502259ad0.png

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    13734
  • API接口
    +關(guān)注

    關(guān)注

    1

    文章

    85

    瀏覽量

    10801
  • apk
    apk
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    5214

原文標(biāo)題:APK應(yīng)用程序是否簽名異常的檢測(cè)方法

文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    變頻器是否故障的方法判斷

    變頻器是否故障用這幾種方法可以輕松判斷,維修使用建議熟記?
    發(fā)表于 03-06 17:19 ?1次下載

    是否可以使用OpenVINO?部署管理器在部署機(jī)器上運(yùn)行Python應(yīng)用程序

    使用 OpenVINO?部署管理器創(chuàng)建運(yùn)行時(shí)軟件包。 將運(yùn)行時(shí)包轉(zhuǎn)移到部署機(jī)器中。 無(wú)法確定是否可以在部署機(jī)器上運(yùn)行 Python 應(yīng)用程序,而無(wú)需安裝OpenVINO? Toolkit 和 Python。
    發(fā)表于 03-05 08:16

    請(qǐng)問(wèn)FPGA在啟動(dòng)的時(shí)候是否對(duì)于Flash的任何故障檢測(cè)機(jī)制

    請(qǐng)問(wèn)FPGA在啟動(dòng)的時(shí)候是否對(duì)于Flash的任何故障檢測(cè)機(jī)制? 以及在載入資料時(shí),如何確保數(shù)據(jù)的一致性,相關(guān)
    發(fā)表于 02-20 06:14

    ANACONDA——關(guān)于發(fā)布數(shù)據(jù)應(yīng)用程序的新簡(jiǎn)單方法

    與 Anaconda 的云筆記本服務(wù)無(wú)縫集成,為用戶提供了一種輕松共享筆記本結(jié)果的方式,并讓其他人也可以隨意的訪問(wèn)它們。 下面我們來(lái)了解關(guān)于這項(xiàng)新功能的實(shí)際應(yīng)用: 這項(xiàng)功能與 Panel 的多功能性相結(jié)合,將徹底改變您發(fā)布數(shù)據(jù)應(yīng)用程序的方式。使用這個(gè)強(qiáng)大的工具,為共享和協(xié)
    的頭像 發(fā)表于 01-17 11:39 ?377次閱讀
    ANACONDA——關(guān)于發(fā)布數(shù)據(jù)<b class='flag-5'>應(yīng)用程序</b>的新簡(jiǎn)單<b class='flag-5'>方法</b>

    斷路器的檢測(cè)方法

    斷路器的檢測(cè)方法多種多樣,以下是一些常見的檢測(cè)方法: 一、直觀檢查 直觀檢查是斷路器檢測(cè)的基礎(chǔ)步驟,主要通過(guò)觀察斷路器的外觀來(lái)判斷其
    發(fā)表于 12-27 10:29

    串口通訊異常處理方法 串口設(shè)備連接方式

    串口通信異常處理方法 1. 異常檢測(cè) 在串口通信中,首先需要能夠檢測(cè)異常情況。
    的頭像 發(fā)表于 12-27 09:53 ?3699次閱讀

    瑞芯微開發(fā)板/主板Android系統(tǒng)APK簽名文件使用方法,實(shí)用干貨

    瑞芯微主板/開發(fā)板Android系統(tǒng),APK系統(tǒng)簽名文件使用方法
    的頭像 發(fā)表于 12-26 09:43 ?830次閱讀
    瑞芯微開發(fā)板/主板Android系統(tǒng)<b class='flag-5'>APK</b><b class='flag-5'>簽名</b>文件使用<b class='flag-5'>方法</b>,實(shí)用干貨

    RK3588主板/開發(fā)板Android12系統(tǒng)APK簽名文件生成的方法,干貨滿滿

    本文介紹瑞芯微RK3588主板/開發(fā)板Android12系統(tǒng)下,APK簽名文件生成方法。觸覺智能RK3588開發(fā)板演示,音視頻接口、通信接口等一應(yīng)俱全,幫助企業(yè)提高產(chǎn)品開發(fā)效率,縮短上市時(shí)間,降低成本和設(shè)計(jì)風(fēng)險(xiǎn)。
    的頭像 發(fā)表于 12-12 10:38 ?738次閱讀
    RK3588主板/開發(fā)板Android12系統(tǒng)<b class='flag-5'>APK</b><b class='flag-5'>簽名</b>文件生成的<b class='flag-5'>方法</b>,干貨滿滿

    android手機(jī)上emulate應(yīng)用程序方法

    在Android手機(jī)上模擬(emulate)應(yīng)用程序方法通常涉及到使用Android模擬器(Emulator)或類似的工具來(lái)模擬Android環(huán)境,以便在沒有實(shí)際物理設(shè)備的情況下運(yùn)行和測(cè)試應(yīng)用程序
    的頭像 發(fā)表于 12-05 15:33 ?1083次閱讀

    如何檢測(cè)HDMI接口是否正常工作

    檢測(cè)HDMI接口是否正常工作,可以通過(guò)以下幾種方法: 一、觀察外觀 首先,檢查HDMI接口的物理狀態(tài)。如果接口明顯的物理?yè)p傷,如裂痕、變形
    的頭像 發(fā)表于 11-27 15:18 ?8774次閱讀

    AWTK-WEB 快速入門(1) - C 語(yǔ)言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用C語(yǔ)言開發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新建一個(gè)應(yīng)用
    的頭像 發(fā)表于 11-27 11:46 ?622次閱讀
    AWTK-WEB 快速入門(1) - C 語(yǔ)言<b class='flag-5'>應(yīng)用程序</b>

    CYC8PROTO-063-BLE是否可以通過(guò)智能手機(jī)上的標(biāo)準(zhǔn)設(shè)置應(yīng)用程序建立連接?

    你好,我是使用 BLE 的新手,正在使用 CYC8PROTO-063-BLE 板,我想知道是否可以通過(guò)智能手機(jī)(iOS 或 Android)上的標(biāo)準(zhǔn)設(shè)置應(yīng)用程序建立連接。 到目前為止,我只能通過(guò) AIROC
    發(fā)表于 07-23 08:20

    esp32c3安全啟動(dòng)文檔里的簽名,使用與計(jì)算的簽名和使用idf.py簽名什么不同?

    esp32c3安全啟動(dòng)文檔里的簽名,使用與計(jì)算的簽名和使用idf.py簽名什么不同?預(yù)簽名用的是--pub-key,普通的
    發(fā)表于 07-23 08:15

    電路檢測(cè)器檢查電池是否電怎么判斷

    了解如何使用電路檢測(cè)器檢查電池是否電是一項(xiàng)重要的技能,尤其是在需要確保設(shè)備正常運(yùn)行的情況下。本文將介紹電路檢測(cè)器的使用方法、電池的工作原理
    的頭像 發(fā)表于 07-19 17:14 ?2302次閱讀

    多個(gè)esp32開發(fā)板如何組成ble mesh網(wǎng)絡(luò),是否可以自動(dòng)組網(wǎng)

    關(guān)于example下的ble_mesh樣例ble_mesh_node 1.多個(gè)esp32開發(fā)板如何組成mesh網(wǎng)絡(luò),是否可以自動(dòng)組網(wǎng)? 2、在組成mesh的情況下,各個(gè)esp32如何和應(yīng)用程序進(jìn)行接口,如api和回調(diào)? 3、節(jié)點(diǎn)
    發(fā)表于 06-24 07:53
    主站蜘蛛池模板: 嗯 用力啊 嗯 c我 啊哈老师 | 男人J放进女人P全黄网站 | 日日干夜夜爽 | 日韩一区二区三区免费体验 | 扒开黑女人p大荫蒂老女人 扒开粉嫩的小缝末成年小美女 | 国产-第1页-浮力影院 | 一区三区在线专区在线 | 亚洲高清中文字幕 | 在线亚洲免费 | 国产精自产拍久久久久久蜜 | 一品道门在线观看免费视频 | 亚洲精品自在在线观看 | 国语大学生自产拍在线观看 | 中文字幕在线观看亚洲日韩 | 国产精品亚洲污污网站入口 | 男女午夜性爽快免费视频不卡 | 国产欧美日韩综合精品一区二区 | 极品内射少妇精品无码视频 | 亚在线观看免费视频入口 | 免费国产黄线在线播放 | 久色乳综合思思在线视频 | 岛国大片在线观看免费版 | 大学生高潮无套内谢视频 | 色偷偷男人天堂 | 18禁裸乳无遮挡免费网站 | 看全色黄大色大片免费久黄久 | 空姐被黑人 苏晓曼 | 夜里18款禁用的免费B站动漫 | 在线播放免费人成毛片视频 | 男女边吃奶边做边爱视频 | 秋霞电影网午夜免费鲁丝片 | 女性爽爽影院免费观看 | 同桌上课把奶露出来给我玩 | 肉动漫h黄动漫日本免费观看 | 国产学生无码中文视频一区 | 国产主播AV福利精品一区 | 成人性生交大片免费看中文 | 在线免费公开视频 | 日韩国产精品欧美一区二区 | 中字幕久久久人妻熟女天美传媒 | 高清不卡伦理电影在线观看 |

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品