Android-對抗反編譯工具的一種方式

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   color   ar   使用   sp   

轉載請標明出處:http://blog.csdn.net/goldenfish1919/article/details/41010261

首先我們來看下dex檔案的格式:


class_defs的結構:


(1) class_idx 描述具體的 class 類型 ,值是 type_ids 的一個 index 。值必須是一個 class 類型 ,不能是數群組類型或者基本類型 。


(2) access_flags  描述 class 的訪問類型 ,諸如 public , final , static 等 。在 dex-format.html 裡 “access_flags Definitions” 有具體的描述  。


(3) superclass_idx , 描述 supperclass 的類型 ,值的形式跟 class_idx 一樣 。


(4) interfaces_off , 值為位移地址 ,指向 class 的 interfaces , 被指向的資料結構為 type_list 。class 若沒有 interfaces ,值為 0。


(5) source_file_idx , 表示原始碼檔案的資訊 ,值是 string_ids 的一個 index 。若此項資訊缺失 ,此項值賦值為 NO_INDEX=0xffff ffff 。


(6) annotions_off , 值是一個位移地址 ,指向的內容是該 class 的注釋 ,位置在 data 區,格式為 annotations_direcotry_item 。若沒有此項內容 ,值為 0 。


(7) class_data_off , 值是一個位移地址 ,指向的內容是該 class 的使用到的資料 ,位置在 data 區,格式為 class_data_item 。若沒有此項內容 ,值為 0 。該結構裡有很多內容 ,詳細描述該 class 的 field , method , method 裡的執行代碼等資訊 ,後面有一個比較大的篇幅來講述 class_data_item 。


(8) static_value_off ,  值是一個位移地址 ,指向 data 區裡的一個列表 ( list ) ,格式為 encoded_array_item 。若沒有此項內容 ,值為 0 。


重點關注下(5),這一項代表的是源檔案的名字。因此,一種可行的方案是往dex中添加一個項目中根本就用不到的類,然後修改source_file_idx,因為用不到,所以運行時不會報錯的,但是但編譯工具在做靜態解析的時候,就會解析不出來而報錯!


然後看下頭部的具體組成部分:



(1)magic value
這 8 個 位元組一般是常量 ,為了使 .dex  檔案能夠被識別出來 ,它必須出現在 .dex 檔案的最開頭的位置 。

(2)checksum 和 signature 
4位元組的檔案校正碼 ,使用alder32 演算法校正檔案除去 maigc ,checksum 外餘下的所有檔案地區 ,用於檢查檔案錯誤 。
20個位元組的signature , 使用 SHA-1 演算法 hash 除去 magic ,checksum 和 signature 外餘下的所有檔案地區 ,用於唯一識別本檔案 。

從上面的結構可以看出來,如果是修改了source_file_idx,那麼要同時修改signature 和checksum 。

總結步驟如下:

(1)項目源碼打包成jar包(混淆)以後,添加進入一個無用的類x.x.x.x.x.x。

(2)把新的jar包轉換成dex

(3)修改dex中x.x.x.x.x.x類的 source_file_idx。

(4)重新計算signature 。

(5)重新計算checksum 。

(6)更新dex。

(7)正常打包簽名安裝。


Android-對抗反編譯工具的一種方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.