一、什麼是加殼?
加殼是在二進位制的程式中植入一段**,在執行的時候優先取得程式的控制權,做一些額外的工作。大多數病毒就是基於此原理。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的工作原理其實是這樣的 首先將程式壓縮。所謂的壓縮包括兩方面,一方面在程式的開頭或者其他合適的 地方 插入一段 另一方面是將程式的其他地方做壓縮。壓縮也可以叫做加密,因為...