史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   Hacker/Cracker 及加解密技術文件 (http://forum.slime.com.tw/f132.html)
-   -   實現使用加殼的外殼中的子程序的一點見解。。 (http://forum.slime.com.tw/thread86375.html)

psac 2003-12-12 01:33 PM

實現使用加殼的外殼中的子程序的一點見解。。
 
加殼往往是實現對原PE的節資料加密、壓縮,若能加殼的同時,讓加殼後的程序使用殼中的某些子程序,那加殼強度大大增加。這樣處理後,即使脫掉了殼,程序執行也肯定不正常,因為脫殼的同時也將這些子程序脫掉了!
怎樣實現呢?作為探討性的介紹,還是搞一個最基本的來說(假設現在您已經會寫PE-exe、PE-dll等PE加殼程序):
我的實現是這樣的:作為一個PE文件,多多少少程序中會有mov eax,1或mov eax,0的語句,就是從這裡開刀,因為mov eax,xxxxxxxx這樣的指令長度正好與Call xxxxxxxx指令的長度一樣,處理起來相對簡單。在加殼程序加殼時,搜尋這些語句統統換成:
call shellSub
//
shellSub實現如下:
shellSub()
{
mov eax,1 或 mov eax,0
}
當然,這裡有個問題是怎樣計算這個Call xxxxxxxx的xxxxxxxx,其實想一想也很簡單,加殼時候我們已經計算出了外殼程序的入口RVA,只要以這個RVA為基準,就可以得到:(shellSub的RVA)-(mov eax,1的RVA)的差值,這個差值再減去5(Call的指令長度)就是xxxxxxxx。
這裡僅僅拋磚引玉的介紹了最基本的方法,其實通過變化,可以對原程序的很多特定語句實現改成使用外殼中不同的sub,大大增加了外殼的保密強度。
這樣處理後,可想而知,脫殼後的執行情況:Windows錯誤,某個位址不能為讀或寫。。呵呵,要的就是這個效果!!!
錯誤之處,懇請各位高手指正!
Spring.W


所有時間均為台北時間。現在的時間是 07:44 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1