顯示廣告
隱藏 ✕
※ 本文為 dinos 轉寄自 ptt.cc 更新時間: 2017-01-25 15:03:06
看板 NetSecurity
作者 CMJ0121 (請多指教!!)
標題 [閒聊] 2017.w04 加殼程式 (Executable Compression)
時間 Tue Jan 24 21:27:19 2017


2017.w04 - 加殼程式 (Executable Compression)
> 時代的眼淚

## 前言 ##
又是因為工作的需要 ...

## 內容 ##
加殼壓縮[0] 是為了 1) 數據壓縮 以及 2)資料保護 兩個目的而產生的一種技術。

為了減少資料傳輸的大小 (節省頻寬) 而將一個檔案 (通常是可執行檔) 進行壓縮


解壓縮這個步驟則是執行檔案的時候  動態的解壓縮內容並且執行 (runtime packer)


在 Linx 的環境中  最常使用 UPX[1] 來當作一個加殼 (壓縮殼)

UPX 支援在記憶體中解壓縮內容:

    - 重新指向 Entry Point 到解壓縮的邏輯
    - 將壓縮後的內容放到 memory
    - 執行解壓縮演算法  還原成原本的機械碼
    - 回到原本程式的 Entry Point




加殼程式也可以被應用在非執行檔:

    在 script language 中可以混淆原本的程式碼  轉換成不易閱讀的程式碼

例如 JS 的 Uglify 技術:移除非必要空白、簡化變數名稱、JSFuck[3]


目的是為了讓 JavaScript 可以被執行  但是很難被肉眼瞭解程式碼運作的邏輯


[0]: https://zh.wikipedia.org/wiki/加殼壓縮 
加殼壓縮 - 维基百科,自由的百科全书
加殼壓縮是一種對EXE檔案的数据压缩及加密保護,可以將EXE檔案壓縮成自我解壓檔案,並能隱藏解壓進程。 ...
 
[1]: https://zh.wikipedia.org/wiki/UPX
UPX - 维基百科,自由的百科全书
UPX(the Ultimate Packer for eXecutables)是一个免费且开源的软件,支持很多种不同操作系统上的文件格式。 ...
 
[2]: https://en.wikipedia.org/wiki/Entry_point
Entry point - Wikipedia
In computer programming, an entry point is where control is transferred from the operating system to a computer program, at which place the processor enters a program or a code fragment and execution begins. In some operating systems or programming languages, the initial entry is not part of the pro ...
 
[3]: https://en.wikipedia.org/wiki/JSFuck

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.122.171
※ 文章代碼(AID): #1OXrOxP- (NetSecurity)
※ 文章網址: https://www.ptt.cc/bbs/NetSecurity/M.1485264443.A.67E.html
a2735000: 推1F 01/25 02:30
liangh: 推 用心的版主2F 01/25 02:52
Peruheru: 推,這些分享讓資安板越來越充實3F 01/25 08:54
Peruheru: 沒推到
zha0: JavaScript Obfuscator5F 01/25 10:46
birk0066: 推用心版主6F 01/25 12:46

--
※ 看板: dinos 文章推薦值: 0 目前人氣: 0 累積人氣: 275 
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇