Android APK加殼技術方案

2021-06-28 04:51:06 字數 1767 閱讀 1443



[email protected]

一、什麼是加殼?

加殼是在二進位制的程式中植入一段**,在執行的時候優先取得程式的控制權,做一些額外的工作。大多數病毒就是基於此原理。pc exe檔案加殼的過程如下:

二、加殼作用

加殼的程式可以有效阻止對程式的反彙編分析,以達到它不可告人的目的。這種技術也常用來保護軟體版權,防止被軟體破解。

三、android dex檔案加殼原理

pc平台現在已存在大量的標準的加殼和解殼工具,但是android作為新興平台還未出現apk加殼工具。android dex檔案大量使用引用給加殼帶來了一定的難度,但是從理論上講,android apk加殼也是可行的。

在這個過程中,牽扯到三個角色:

1、加殼程式:加密源程式為解殼資料、組裝解殼程式和解殼資料

2、解殼程式:解密解殼資料,並執行時通過dexclassloader動態載入

3、源程式:需要加殼處理的被保護**

根據解殼資料在解殼程式dex檔案中的不同分布,本文將提出兩種android dex加殼的實現方案。

(一)解殼資料位於解殼程式檔案尾部

該種方式簡單實用,合併後的dex檔案結構如下。

加殼程式工作流程:

1、加密源程式apk檔案為解殼資料

2、把解殼資料寫入解殼程式dex檔案末尾,並在檔案尾部新增解殼資料的大小。

3、修改解殼程式dex頭中

checksum、signature 和file_size頭資訊。

4、修改源程式androidmainfest.xml檔案並覆蓋解殼程式androidmainfest.xml檔案。

解殼dex程式工作流程:

1、讀取dex檔案末尾資料獲取借殼資料長度。

2、從dex檔案讀取解殼資料,解密解殼資料。以檔案形式儲存解密資料到a.apk檔案

3、通過dexclassloader動態載入a.apk。

(二)解殼資料位於解殼程式檔案頭

該種方式相對比較複雜, 合併後dex檔案結構如下:

加殼程式工作流程:

1、加密源程式apk檔案為解殼資料

2、計算解殼資料長度,並新增該長度到解殼dex檔案頭末尾,並繼續解殼資料到檔案頭末尾。

(插入資料的位置為0x70處)

3、修改解殼程式dex頭中

checksum、signature、file_size、header_size、

string_ids_off、type_ids_off、proto_ids_off、field_ids_off、

method_ids_off、class_defs_off和data_off

相關項。  分析map_off 資料,修改相關的資料偏移量。  

4、修改源程式androidmainfest.xml檔案並覆蓋解殼程式androidmainfest.xml檔案。

解殼dex程式工作流程:

1、從0x70處讀取解殼資料長度。

2、從dex檔案讀取解殼資料,解密解殼資料。以檔案形式儲存解密資料到a.apk

3、通過dexclassloader動態載入a.apk。

四、加殼及脫殼**實現

Android APK加殼技術方案 1

309zhijun 163.com 一 什麼是加殼?加殼是在二進位制的程式中植入一段 在執行的時候優先取得程式的控制權,做一些額外的工作。大多數病毒就是基於此原理。pc exe檔案加殼的過程如下 二 加殼作用 加殼的程式可以有效阻止對程式的反彙編分析,以達到它不可告人的目的。這種技術也常用來保護軟體...

病毒加殼技術與脫殼技術

由於大量的防毒軟體的出現,以及防毒軟體病毒庫的不斷壯大,病毒被查殺的機率也越來越大。所以有些病毒就開始通過加殼的方法來偽裝自己,企圖騙過防毒軟體,蒙混過關。為了做好病毒防禦,我們就該了解什麼是加殼?加殼的對立面是不是脫殼?如何脫殼等?一 什麼是殼 計算機軟體裡有一段專門負責保護軟體不被非法修改或反編...

upx加殼原理

upx的功能有兩種描述。一種叫做給程式加殼,另一種叫壓縮程式。其實這兩種表述都是正確的,只是從不同的 角度 對upx的描述。upx的工作原理其實是這樣的 首先將程式壓縮。所謂的壓縮包括兩方面,一方面在程式的開頭或者其他合適的 地方 插入一段 另一方面是將程式的其他地方做壓縮。壓縮也可以叫做加密,因為...