Android APK發布前驗證項

2021-07-09 06:20:12 字數 3317 閱讀 1413

考慮到應用的安全性,建議版本發布前測試人員需要做如下幾項驗證:

1、簽名驗證:

使用開發工具對apk進行debug時就回自動生成apk(比如eclipse會在/bin目錄自動生成),但是這個包的簽名是debug簽名的。但是對於正式發布的版本需要使用正式簽名。所以發布之前我們可以按照如下方法對apk進行簽名驗證。

將待驗證的apk重新命名為rar格式,然後開啟壓縮包,取出其中的meta-inf資料夾,即簽名檔案,在裡面我們能找到cert.rsa檔案,使用如下命令即可檢視簽名資訊

keytool -printcert -file cert.rsa
正式簽名的apk和debug簽名的apk查詢資訊分別如下:

正式簽名:

所有者: cn=smm, ou=baidu

發布者: cn=smm, ou=baidu

序列號: 53160062

有效期開始日期: mon nov 02 23:02:49 cst 2015, 截止日期: wed oct 09 23:02:49 cst 2115

證書指紋:

md5: dd:c0:89:24:a9:f5:5f:d7:09:00:87:f0:c1:14:e7:fb

sha1: 15:6e:fc:d5:f4:03:5a:44:e1:8e:50:82:fe:20:4d:a2:eb:c5:7d:35

sha256: e1:ec:06:d3:89:68:6e:ce:ba:3f:5a:71:f3:8c:16:38:a4:c8:5a:72:8a:f0:98:3e:4d:cf:97:9b:d2:d3:5e:f3

簽名演算法名稱: sha256withrsa

版本: 3

擴充套件:#1: objectid: 2.5.29.14 criticality=false

subjectkeyidentifier [

keyidentifier [

0000: ad fa 6c 1a 5c d1 d2 0b 47 cf 2a e7 f6 ec c4 65 ..l.\...g.*....e

0010: f4 cd 95 af ....

]]

debug簽名:

所有者: cn=android debug, o=android, c=us

發布者: cn=android debug, o=android, c=us

序列號: f3ad4ea

有效期開始日期: mon dec 07 08:39:39 cst 2015, 截止日期: wed nov 29 08:39:39 cst 2045

證書指紋:

md5: ef:64:e5:46:4d:c5:b4:cf:47:6e:72:f6:09:14:41:08

sha1: 8f:a9:7d:9e:8f:75:33:00:43:1f:20:45:31:27:08:0d:22:a2:87:3a

sha256: 41:3a:18:34:73:a1:07:4c:b9:d3:9b:5e:ef:b0:4a:0d:8c:83:df:11:08:25:35:2a:ba:54:63:1f:77:44:fd:39

簽名演算法名稱: sha256withrsa

版本: 3

擴充套件:#1: objectid: 2.5.29.14 criticality=false

subjectkeyidentifier [

keyidentifier [

0000: f6 63 05 a9 2d 68 80 6a 08 01 35 a2 0f 2d 72 c7 .c..-h.j..5..-r.

0010: 49 ed 6c 42 i.lb

]]

對比發現debug簽名的所有者和發布者為「android debug」。

由此我們可以判斷需要發布的apk簽名是否為正式簽名。

2、驗證apk的debug選項是否關閉

在開發android應用程式時,我們可以在

androidmanifest.xml

中設定其

debug

屬性,如下:

android:icon

="@drawable/ic_launcher"

android:label=

android:theme=

android:debuggable

="true"

>

在除錯及測試階段我們需要開啟debug選項,但是對於發布的版本我們需要關閉debug選項。

因此我們在版本發布前需要驗證apk的debug選項是否關閉。

既然debug屬性寫在xml檔案中,那麼我們檢查androidmanifest.xml檔案即可。但是對於測試人員來說都是從研發那裡得到的apk,此時解壓apk得到的xml是經過編譯,無法直接閱讀的。

aapt list -v -a ***.apk

這個命令將會列印和apk相關的所有詳細資訊,包括androidmanifest.xml詳情。所以我們可以把該命令的輸出重定向到本地文字中,然後從該文字中即可查到debug資訊是否關閉。

3、驗證**是否混淆

由於現階段android apk非常容易反編譯,所以考慮到**安全,對於需要release的apk在編譯前一定要對器**進行混淆。

要對**混淆進行驗證,我們先來看下怎麼對apk反編譯。

上面說過,apk其實都是壓縮包,我們把apk重新命名為rar格式後開啟,然後解壓獲取其中的classes.dex檔案,所有的源**都在其中了。

我們借助工具dex2jar即可將其轉換為jar包:

dex2jar工具:

將獲取到的classes.dex放到dex2jar資料夾中,然後開啟cmd視窗進入到dex2jar資料夾,執行如下命令即可獲得轉換後的jar包:

$dex2jar.bat classes.dex

this cmd is deprecated, use the d2j-dex2jar if possible

dex2jar version: translator-0.0.9.15

dex2jar classes.dex -> classes_dex2jar.jar

done.

然後使用jd-gui工具開啟我們獲取到的jar包,即可檢視到該apk的所有**。

所以我們檢查**是否混淆的方法也就是按照上面的方法獲得jar包,然後看jar包中的**是否具有可讀性。

暫時整理這三點,後面想到的會加進來。

from onsubmit 表單提交前驗證

form應該也有提交前的事件,就是onsubmit。此事件的功能就是在表單提交前自動執行指定的東西。js方法 1 function check 7return true 8 910 需要注意的是,nsubmit return check 中的return是一定要加上的,不然check的返回值哪怕是f...

moquitto部署驗證發布訂閱模式

1.基礎準備 安裝基礎軟體 yum install gcc c yum install cmake yum install openssl devel mosquitto預設支援openssl wget tar xzvf mosquitto 1.4.4.tar.gz cd mosquitto 1.4...

WebGIS發布前GIS工程規劃設計

flyingis 對於乙個 gis 系統來說,不論是桌面 gis 還是webgis 最重要的和最有價值的是資料,沒有設計良好的空間資料的支撐,該 gis 系統就失去了其存在的意義。目前,主流的比較成熟的 webgis 發布平台是 esri 的arcims 和mapinfo 的mapxtreme 基於...