史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > Hacker/Cracker 及加解密技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-12-12, 01:33 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 實現使用加殼的外殼中的子程序的一點見解。。

加殼往往是實現對原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
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 04:17 PM


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


SEO by vBSEO 3.6.1