關於把EXE文件做DLL加載!

gkend測試

2006-10-23, 21:16:45.net

把ollydbg.exe做爲DLL加載並不奇怪,ollydbg.exe原本就能夠做DLL,全部的ollydbg插件都是把它做DLL加載的。有些人把olldbg.exe改成其它文件名,可是仍然必須保留ollydbg.exe自己,不然大部分插件就不能正常工做。因此利用枚舉進程模塊,無論你怎麼修改ollydbg.exe文件名,仍然能在模塊中找到ollydbg.exe.
若是能把任意EXE文件做DLL加載,那才值得稱道!插件

Isaiah線程

2006-10-23, 21:18:17進程

須要重定位內存

雞蛋殼資源

2006-10-23, 21:42:53get

最初由 gkend 發佈
把ollydbg.exe做爲DLL加載並不奇怪,ollydbg.exe原本就能夠做DLL,全部的ollydbg插件都是把它做DLL加載的。有些人把olldbg.exe改成其它文件名,可是仍然必須保留ollydbg.exe自己,不然大部分插件就不能正常工做。因此利用枚舉進程模塊,無論你怎麼修改ollydbg.exe文件名,仍然能在模塊中找到ollydbg.exe.
若是能把任意EXE文件做DLL加載,那才值得稱道! 

仍是有點東西的,本身研究就知道了,作成通用的有見過的,不過那個等於沒有什麼意義了,是替換原有進程景象,至關於原來的進程內容被抹掉,意義就不大了。it

foxabuio

2006-10-23, 21:45:08

exe 是能夠有重定位表的

Isaiah

2006-10-23, 22:26:18

gkend不是雞蛋的馬甲?

gkend

2006-10-24, 00:17:24

EXE做爲DLL加載大體流程:
push xxxxx //指向EXE文件名
call LoadLibraryA
mov esi,eax
or eax,eax
jnz @f
jmp ExitThread
@@:
mov ebx,[esi+03ch]
add ebx,eax
mov ecx,[ebx+28h] //EP
add eax,ecx //EP+基址
mov edx,[ebx+34h] //imagebase
mov edi,[ebx+0a0h] //relocation table address
add edi,esi
mov ecx,[ebx+0a4h] //size
處理重定位:
pushad
@@:
mov ebx,[edi]
mov eax,[edi+4]
add ebx,esi
add eax,edi
add edi,8
rep1:
xor ecx,ecx
mov cx,[edi]
mov bp,cx
add edi,2
and cx,0fffh
and bp,0f000h
cmp bp,03000h
jnz rep2
add ecx,ebx
mov ebp,[ecx]
sub ebp,edx
add ebp,esi
mov [ecx],ebp
rep2:
cmp edi,eax
jb rep1
cmp dword ptr [edi],0
jnz @b

popad
//此處能夠加入你要patch的地址和代碼,如ExitProcess,GetModuleHandle修補代碼
...
jmp eax //到EP執行,eax等於EP

heXer

2006-10-24, 09:07:08

沒測試過的代碼吧

snowshow

2006-10-24, 09:28:17

哎,不就是想PK飛狐嗎

雞蛋殼

2006-10-24, 09:31:35

最初由 gkend 發佈
EXE做爲DLL加載大體流程:
push xxxxx //指向EXE文件名
call LoadLibraryA
mov esi,eax
or eax,eax
........ 

最好是作個成品,我開始思路跟這個差很少。

gkend

2006-10-24, 12:40:45

前面一位說須要處理重定位,我只發了重定位處理代碼。注意:重定位處理前,還要修改全部區段屬性爲可寫不然寫入時會異常。
固然還要處理Import Table,最後才能jmp EP.

liuyilin

2006-10-24, 12:56:53

強烈要求大蝦gkend弄個成品使用

ljtt

2006-10-24, 21:03:26

若是僅僅是想實現把一個EXE當DLL來加載,你所要作的工做僅僅是判斷這是不是一個「合乎標準」的EXE文件就行。
至於加載Reloc/Import/..等等這些工做自己就是系統的任務,你不必代勞。並且系統會本身作得很好。這和「殼」
不太同樣。

若是你想實現模擬這個加載過程,也就是說,想把EXE當數據放入內存並模擬其加載過程,並讓他可以象獨立運行時
同樣的結果,則要麻煩的多。並且若是想作得比較完善,那麼要考慮的問題還很多。

除了要模擬系統所作的加載Reloc/Import/Tls/DelayImport等等工做以外,可能你還須要Hook一些API,達到模擬出
一個與EXE真正運行時如出一轍的「進程環境」。

好比Hook象OpenProcess/WriteProcessMemory/ReadProcessMemory這些API,一旦進程想打開自身,想修改自身某處
代碼時,你必須讓他去修改EXE數據空間的內容,而不是去修改模擬環境的某段代碼。由於你如今模擬加載時,EXE
是沒有獨立的進程空間的,它只是佔有一段數據空間,其進程空間是與模擬環境自身共用一個進程環境的。

還有更麻煩的問題,好比好比GetModuleHandle(NULL)時,正常狀況下應該返回一個「句柄」,但同時這個「句柄」
也能夠做爲進程首地址使用,這種雙重做爲致使即便Hook了這個API,處理起來也麻煩,並且可能還須要再HOOK
一堆與此問題相關的API。

gkend

2006-10-24, 21:24:05

最初由 ljtt 發佈
若是僅僅是想實現把一個EXE當DLL來加載,你所要作的工做僅僅是判斷這是不是一個「合乎標準」的EXE文件就行。
至於加載Reloc/Import/..等等這些工做自己就是系統的任務,你不必代勞。並且系統會本身作得很好。這和「殼」
不太同樣。

若是你想實現模擬這個加載過程,也就是說,想把EXE當數據放入內存並模擬其加載過程,並讓他可以象獨立運行時
........ 
我不知道你用的是什麼系統?win2k.sp4用LoadLibraryA加載後,根本就不處理重定位和引入表,必須本身處理重定位和引入表。
因此shoooo提供的方法有侷限性(他本人殊不知道有的win系統不能用,難怪代碼那麼簡單),他提供的源代碼根本就沒有處理重定位和引入表,因此你沒有看見不少人非法操做?

ljtt

2006-10-24, 22:02:26

我用的是XP,你說的狀況不知道LoadLibraryA返回的結果如何?若是結果失敗沒有處理重定位表和引入表很正常,若是結果成功,也沒有處理這些則不太正常,即便EXE當DLL加載,也有處理這些的可能。要不你發個這樣的程序給我看看,我看看是否個人系統上也是這種狀況。

mailto: ljtt@yeah.net

heXer

2006-10-24, 23:15:45

shoooo的ollydbg.exe是修改過的了,已是dll屬性了,天然能夠直接LoadLibraryA成功,並由系統自動處理重定位表和引入表
一個普通exe未經任何處理直接LoadLibraryA,固然須要一些額外工做了

girl

2006-10-25, 00:00:40

沒看到exe當dll加載有什麼價值:confused:

gkend

2006-10-25, 08:12:31

最初由 heXer 發佈
shoooo的ollydbg.exe是修改過的了,已是dll屬性了,天然能夠直接LoadLibraryA成功,並由系統自動處理重定位表和引入表
一個普通exe未經任何處理直接LoadLibraryA,固然須要一些額外工做了 
看shoooo那個貼並無發現它的ollydbg.exe修改過?他只提供了一個加載器yezhu.exe及其源代碼,只說把yezhu.exe放到ollydbg.exe同一目錄,並且加載後簡單地add eax,1000而後jmp eax,其餘什麼都沒作。
XP系統把EXE用LoadLibraryA加載後,系統的確能自動處理重定位表和引入表。LJTT所言。可是win2k用LoadLibraryA加載後還需本身寫代碼處理重定位表和引入表。我已經用ASM實現了EXE做DLL加載並正常運行。前面已貼了部分代碼再加入引入表處理基本能夠運行。要運行得好還必須hook部分API,如:GetCommandLine,GetModuleHandle,ExitProcess等

q3 watcher

2006-10-25, 08:21:43

最初由 gkend 發佈
看shoooo那個貼並無發現它的ollydbg.exe修改過?他只提供了一個加載器yezhu.exe及其源代碼,只說把yezhu.exe放到ollydbg.exe同一目錄,並且加載後簡單地add eax,1000而後jmp eax,其餘什麼都沒作。
XP系統把EXE用LoadLibraryA加載後,系統的確能自動處理重定位表和引入表。LJTT所言。可是win2k用LoadLibraryA加載後還需本身寫代碼處理重定位表和引入表。我已經用ASM實現了EXE做DLL加載並正常運行。前面已貼了部分代碼再加入引入表處理基本能夠運行。要運行得好還必須hook部分API,如:GetCommandLine,GetModuleHandle,ExitProcess等 
把哪一個ollydbg.exe雙擊一下就知道改沒改了。

gkend

2006-10-25, 08:29:21

最初由 q3 watcher 發佈
把哪一個ollydbg.exe雙擊一下就知道改沒改了。 
他提供了嗎?怎麼沒看到說明?

^花澤類^

2006-10-25, 08:51:29

因此說gkend是個斷章取義,自覺得是,無理取鬧的小人
由於他不把別人的貼子看清楚,看完整就開始發表歪理邪說

heXer

2006-10-25, 08:52:21

一樓下載yezhu
二樓下載liliang

nbw

2006-10-25, 09:25:10

稍微?一下大呢,根本不用考?重定位http://bbs.pediy.com/upload/2006/4/image/testtest.gif

heXer

2006-10-25, 09:54:40

最初由 nbw 發佈
稍微?一下大呢,根本不用考?重定位http://bbs.pediy.com/upload/2006/4/image/testtest.gif 

這個貌似有點深,找不到大腦了怎麼辦

readyu

2006-10-25, 10:24:10

不明白,請牛詳細說明一下。

最初由 nbw 發佈
稍微?一下大呢,根本不用考?重定位http://bbs.pediy.com/upload/2006/4/image/testtest.gif

q3 watcher

2006-10-25, 11:30:22

最初由 heXer 發佈
這個貌似有點深,找不到大腦了怎麼辦 
能夠注入一個.:cool: :cool: :cool:

shinesi

2006-10-25, 12:28:47

這裏好熱鬧!!!

gkend

2006-10-25, 13:33:47

若是先把一個EXE文件修改爲DLL而後再LoadLibraryA,那就更不值得奇怪了,原本就是DLL了,僅僅是擴展名爲EXE而已。那爲什麼不直接取名ollydbg.dll?看來我仍是高估了Shoooo,比我想象的低不少。
若是把EXE修改爲DLL,那加載器代碼應該還能夠簡單,本身添加一段DLL入口代碼並創建線程執行EXE的入口代碼,把全部的pacth代碼也能夠事先在修改EXE成DLL時候寫入。
問題關鍵是:他並無直接把EXE做爲DLL加載。而是加載一個真正的DLL文件。
我這裏討論的是:把EXE做爲DLL加載,EXE沒作任何修改。

^花澤類^

2006-10-25, 13:40:14

最初由 gkend 發佈
若是先把一個EXE文件修改爲DLL而後再LoadLibraryA,那就更不值得奇怪了,原本就是DLL了,僅僅是擴展名爲EXE而已。那爲什麼不直接取名ollydbg.dll?看來我仍是高估了Shoooo,比我想象的低不少。
若是把EXE修改爲DLL,那加載器代碼應該還能夠簡單,本身添加一段DLL入口代碼並創建線程執行EXE的入口代碼,把全部的pacth代碼也能夠事先在修改EXE成DLL時候寫入。
問題關鍵是:他並無直接把EXE做爲DLL加載。而是加載一個真正的DLL文件。
我這裏討論的是:把EXE做爲DLL加載,EXE沒作任何修改。 

shoooo放出來的只是個簡單的版本
gkend又是教條主義了
別人放了個A版本,就認爲別人的能力只達到A版本
gkend殊不知道它所說的這個別人早已完成
而且一樓中所說的
"全部的ollydbg插件都是把它做DLL加載的。有些人把olldbg.exe改成其它文件名,可是仍然必須保留ollydbg.exe自己" 
這個問題也早已搞定.
只是你不知道罷了

^花澤類^

2006-10-25, 13:41:25

建議gkend聽聽nbw的
稍微?一下大呢

好了,今天限制只能發三個貼子

gkend

2006-10-25, 13:59:35

shoooo的心思 ^花澤類^ 知道,^花澤類^ 是shoooo肚子裏的蛔蟲。
不打自招!

^花澤類^

2006-10-25, 14:06:06

最初由 gkend 發佈
shoooo的心思 ^花澤類^ 知道,^花澤類^ 是shoooo肚子裏的蛔蟲。
不打自招! 


原來如今新人能夠發5貼,HOHO
我要珍惜發貼機會

這年頭,用攻擊馬甲來轉移話題已經很老土了
而且花某是否是別人馬甲,看雪老大自會查清楚,不用你費心
回到正題, 再次建議gkend聽聽nbw的,用用大腦
不要把本身搞不定的事情,看成是別人也搞不定:D: :D:

Aming

2006-10-25, 18:12:24

老流氓樓上的帖子寫得很明白了。
成功地加載的必要但不充分條件是EXE有重定位表,VB5的EXE就能夠。另外對於有其餘資源文件的EXE,若有DLG,BMP等,還必須資源的移位方能保留原來EXE完整的功能。

有須要的話我能夠發個例子。

heXer

2006-10-25, 19:00:15

想勾引Aming出來真不容易
有啥好東西快發給我,萬一你硬盤再出毛病...

gkend

2006-10-25, 19:40:07

最初由 ^花澤類^ 發佈
不要把本身搞不定的事情,看成是別人也搞不定

^花澤類^你從哪一個貼子證實我不能搞定?你引用過來證實?個人心思你不可能知道,你不是我肚子裏的蛔蟲。
我看是你搞不定吧?想用急將法逼我提供?

^花澤類^

2006-10-25, 20:02:47

最初由 gkend 發佈
^花澤類^你從哪一個貼子證實我不能搞定?你引用過來證實?個人心思你不可能知道,你不是我肚子裏的蛔蟲。
我看是你搞不定吧?想用急將法逼我提供? 


你這個言論充分說明你是個表裏不一的人
表裏不一體如今何處?
體如今以下:
shoooo發了個注入的版本,gkend從shoooo發表的版本中認爲"高估了Shoooo,比gkend想象的低不少"
gkend爲何如此認爲,shoooo僅僅發表了一個版本,事實上shoooo早已搞定gkend說所說那些,只是沒有發表出來,因爲gkend沒有看到,因而認爲shoooo搞不定

一樣道理花某沒有看到gkend發表任何有價值的東西,因而認爲gkend搞不定,這時gkend急了,反問花澤類「從哪一個貼子證實gkend搞不定」

很顯然,gkend沒法證實shoooo搞不定,花某也沒法證實gkend搞不定
可是gkend卻毫無理由的認定shoooo搞不定,而且無聊的反駁別人說本身沒有搞不定,表裏不一

另外,花某是新人,搞不定是天然的,gkend你搞得定搞不定管我P事

gkend

2006-10-25, 20:47:09

把一個EXE修改爲DLL,而後再寫代碼加載,這樣的低水平重複,我是不會出搞,更不會發表出來。把一個DLL注入到別的進程,已經不是什麼新課題。我不須要拿什麼來證實我怎麼的,我是初級會員,我只想作一個初級會員。可是,shoooo是Pediy的害羣之馬,你們有目共睹,他不知道同多少人吵架?並且他的不文明之語隨處可見。

gkend

2006-10-26, 13:36:40

論壇又不是你shoooo的,你有什麼資格說別人適不適當?。除非kanxue封ID,我仍是會想來就來看看。原本就是一場不公平的PK,你們看註冊時間,看會員級別就知道多麼不公平。俗話說,好事不出名,壞事傳千里。shoooo的名確定比gkend傳得更遠些。gkend只是個符號,不少人不瞭解也沒有必要了解,正如我不瞭解這裏其餘人同樣。

相關文章
相關標籤/搜索