日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

脱壳实践之手动构造输入表

發布時間:2025/7/14 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 脱壳实践之手动构造输入表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0x00 前言

??對于脫殼后的程序往往不能直接運行,這是因為它們很多都沒有重建輸入表。當然用的od脫殼可能可以。重建輸入表一般都是用專業軟件比如ImportREC。但是對于逆向研究者來說會自己重講輸入表是必須的技能。這就需要讀者對前面幾篇所講的PE文件格式非常熟悉。

0x01 尋找OEP脫殼脫殼

??前面已經提到對于區段信息全都已經改的面目全非的加殼程序,用兩次內存斷點法是無法找到OEP地址的,比如今天我們用的這個程序,下圖為它的區段信息:

?上圖可知我們根本無法知曉哪個區段存放數據,哪個區段存放代碼。這種情況下用兩次斷點法難免會失效。因此我們應該采用堆棧平衡法來尋找OEP地址。這里步驟就省去了,畢竟今天的主題是構造輸入表,有興趣了解堆棧平衡法的可以去我的博客按標題查看。下圖為找的OEP地址:

既然找到了OEP地址,就直接使用OD來脫殼了。點擊插件的ollydump,把重建輸入表去掉,畢竟這個是我們接下來的工作。如下圖:

? 0x02 手動重建輸入表

??思路:找到被調用的api函數——》將DLL函數和api函數寫入脫殼后的文件的空白區域——》空白區域重寫IMAGE_THUNK_DATA數組——》空白區域重寫IID數組——》將IID數組地址寫入數據目錄表第二項。

?重建之前我們先來看看脫殼后的程序的輸入表,如下圖:

?

?明顯看出這個輸入表已經紊亂了。接下來我們一步步重建它。

1)我們先用沒有加殼的原程序來看看他調用了哪些函數(一定要用沒有加殼的,加了殼的調用的函數會很不同)。見下圖:

上圖可知共調用了四個個函數KERNEL32.DLL調用了ExitProcessCreateFileAUSER32.DLL調用了MessageBoxA

2)將輸入DLL以及被調用的函數寫入脫殼后程序的空白區域

此表是DLL已經函數寫入的地址(這里的地址都是高低位互換的便易在hexworkshop中讀寫)

DLL名及DLL地址

函數名及函數地址

KERNEL32.DLL

0016 0000

ExitProcess

1a16 0000

CreateFileA

2816 0000

USER32.DLL

0d16 0000

MessageBoxA

3616 0000

?

?

?

PSDLL之間應該有一個字符空隙,DLLAPI函數,API函數與API函數之間應該有三個字符間隙,因為前面API函數前面個兩個字節是預留給IMAGE_IMPORT_BY_NAMEHint字段多余的一個作為間隙)

3)在空白區域構造IMAGE_THUNK_DATA數組。

??構造IMAGE_THUNK_DATA數組起始位置16b0

第一個IID數組的IMAGE_THUNK_DATA數組

1a16 0000-2=1816(16b0)

28160000-2=2616 (16b4)

第二個IID數組的IAMGE_THUNK_DATA數組

3616 0000-2=3416(16BC)

?

構造完成之后如下圖:

IID數組之間預留四個字節的間隙

4)構造IID數組

另找一塊空白區域,我們這里選用1760處。

構造IID數組位置:1760

DLL名稱

OriginalFristThunk

TimaStamp

ForwordChian

Name

FristThunk

KERNEL32.DLL

B016 0000

0000 0000

0000 0000

0016 0000

B016 0000

USER32.DLL

Bc16 0000

0000 0000

0000 0000

0d16 0000

Bc16 0000

結束標志

0000 0000

0000 0000

0000 0000

0000 0000

0000 0000

?

構造后如下圖:

?

5)將數據目錄表的第二項改成IID的地址1760,后面四個字節寫入IID數組大小28,如下圖:

?至此手動構造完畢,保存文件。

0x03 檢驗構造的輸入表是否起作用。

我們用LordPE打開保存后的文件,點擊目錄信息,再點擊輸入表即可查看信息,如下圖:

?

?很明顯,我們手動構造的輸入表已經起作用了。

?0x04 總結

雖然手動構造輸入表成功了,但是我發現脫殼后的程序并不能正常運行,這兩天一直在思考其中的緣由,如果有幸哪位大佬看到這篇文章請留言指導一二。

轉載于:https://www.cnblogs.com/2f28/p/9870848.html

總結

以上是生活随笔為你收集整理的脱壳实践之手动构造输入表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。