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只是個符號,不少人不瞭解也沒有必要了解,正如我不瞭解這裏其餘人同樣。