史萊姆論壇

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

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

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

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

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-12-12, 02:57 AM   #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 金幣
預設 被加殼vb5/6程序的OEP定位經驗

被加殼vb5/6程序的OEP定位經驗

近日看了woodmann論壇上+splaj關於利用特徵字串尋找被加殼程序的oep方法,頗有興趣!結合我瞭解的vb5/6可執行文件的結構,說說如何定位其OEP。

任何反編譯過vb程序的人,總會見到其OEP是如下結構:
//******************** Program Entry Point ********
:00401060 68B4114000 push 004011B4
:00401065 E8F0FFFFFF Call <MSVBVM60.ThunRTMain>

對於以位址004011B4開始的一段程式碼,在vb程序結構中將之稱為ExeInitStructure,儲存著程序執行啟始化所必須的資料;而其也必定是以特徵字串「VB5!」開始。所以對於被加殼的vb5/6程序,可以執行後用winhex搜尋記憶體,查到「VB5!」位址,在此為004011B4,再搜尋hex值「B4114000」,即搜尋到位址00401061,將此位址-1就是OEP:00401060


此外,利用vb函數addressof我們可以作一些研究工作。
建立一個vb標準exe工程,去除form,加入一個.bas文件,於中寫入
Attribute VB_Name = "Module1"
Private Sub Main()
Dim a As Long, c As Long
c = getaddress(a, AddressOf Main)
MsgBox ("Start address of Main() is " + Hex(a - 16))
End Sub

Public Function getaddress(a As Long, X As Long)
a = X + 16
End Function

編譯後執行,可以顯示sub Main()程式碼的起始位址。有興趣的不妨研究研究,看看如何突破addressof的局限,或找到替代函數
psac 目前離線  
送花文章: 3, 收花文章: 1630 篇, 收花: 3204 次
 


主題工具
顯示模式

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

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


所有時間均為台北時間。現在的時間是 03:25 AM


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


SEO by vBSEO 3.6.1