关于把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只是个符号,不少人不了解也没有必要了解,正如我不了解这里其余人同样。

相关文章
相关标签/搜索