android apk 自我保護技術-加密apk

來源:互聯網
上載者:User

標籤:

經過了忙碌的一周終於有時間靜下來寫點東西了,我們繼續介紹android apk防止反編譯技術的另一種方法。前兩篇我們講了加殼技術(http://my.oschina.net/u/2323218/blog/393372)和運行時修改位元組碼(http://my.oschina.net/u/2323218/blog/396203),如果有不明白的可以查看我的部落格的前兩篇中關於這兩種技術的介紹。接下來我們將介紹另一種簡單適用的防止apk反編譯的技術-偽加密。

 

一、偽加密技術原理

     我們知道android apk本質上是zip格式的壓縮包,我們將android應用程式的尾碼.apk改為.zip就可以用解壓軟體輕鬆的將android應用程式解壓縮。在日常生活或者工作中,我們通常為了保護我們自己的檔案在進行壓縮式都會進行加密處理。這樣的方法對於android apk同樣適用。原理很簡單,在zip的檔案格式中有一個位用來標示該zip壓縮檔中的檔案是否被加密,我們只要找到該標誌位將其置1就可以實現我們的目的。而android的包安裝服務(PackageManagerService)在進行apk安裝時並不關心這個加密位(暫時我們就這麼叫它吧)可以進行正常的安裝並且也不會影響apk的運行。

 

二、zip檔案格式

      zip的檔案格式通常有三個部分組成:壓縮檔來源資料、壓縮目錄來源資料、目錄結束標識。這三個部分中和我們說的加密位有關的是壓縮目錄來源資料部分,我們接下來詳細介紹這一部分。

壓縮目錄來源資料部分記錄著所有的壓縮目錄來源資料。其結構如下:

Central directory file header

 

Offset

Bytes

Description[18]

?0

4

Central directory file header signature =0x02014b50

核心目錄檔案header標識=(0x02014b50)

?4

2

Version made by

壓縮所用的pkware版本

?6

2

Version needed to extract (minimum)

解壓所需pkware的最低版本

?8

2

General purpose bit flag

通用位標記

10

2

Compression method

壓縮方法

12

2

File last modification time

檔案最後修改時間

14

2

File last modification date

檔案最後修改日期

16

4

CRC-32

CRC-32演算法

20

4

Compressed size

壓縮後大小

24

4

Uncompressed size

未壓縮的大小

28

2

File name length (n)

檔案名稱長度

30

2

Extra field length (m)

擴充域長度

32

2

File comment length (k)

檔案注釋長度

34

2

Disk number where file starts

檔案開始位置的磁碟編號

36

2

Internal file attributes

內部檔案屬性

38

4

External file attributes

外部檔案屬性

42

4

Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the ZIP file.

本地檔案header的相對位移。

46

n

File name

目錄檔案名稱

46+n

m

Extra field

擴充域

46+n+m

k

File comment

檔案注釋內容

 

該結構中的General purpose bit flag部分的第0位如果置1,標識該壓縮包被加密;置為0標識該壓縮包沒有被加密。

 

三、具體實施

我們可以利用ZipCenOp.jar這個jar包對apk進行加密和解密操作(也有用python實現這個操作的這裡我們不做介紹)。

(1)對apk進行加密

加密後,我們用解壓縮軟體進行解密會看如下的提示資訊:

 

用apktool進行反編譯會提示如下的錯誤資訊:

  

加密後apk是可以正常的安裝和啟動並執行。

 

(2)對apk進行解密

 

解密對我們來說沒有多大的用途,只是瞭解一下。

 

      根據上面的講述相信大家對apk的偽加密技術有了一定的瞭解,不過這種方法對於android 4.2.x版本及以後系統已經不適用了它會拒絕這種加密apk的安裝。下一篇我們將講解另一種android apk防止反編譯技術,期待大家的捧場。

感謝您的閱讀,期待下次與您見面:

如果對這篇講的技術有任何疑問及想要獲得這篇文章講的技術的工具,第一時間獲得文章更新,每天發布一篇技術大牛的原創文章,更多技術資訊分享

歡迎關注個人公眾平台:程式員互動聯盟,掃一掃下方二維碼或搜尋號coder_online即可關注,線上幫您解決技術痛點,給大牛直接出難題。

 

android apk 自我保護技術-加密apk

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.