阅读:2543回复:11
如何把一个Win32的exe文件读入内存中, 然后运行其中的代码?
希望能够在Win2K上实现. 看起来像病毒....不过是客户要求的. 呵呵...
|
|
|
沙发#
发布于:2001-08-11 11:54
LOADLIBRARYEX将EXE以资源方式加载到内存.自己写LOADER解决外部引用DLL就可.
|
|
|
板凳#
发布于:2001-08-11 21:22
[QUOTE]原本由 lu0 发表
[B]LOADLIBRARYEX将EXE以资源方式加载到内存.自己写LOADER解决外部引用DLL就可. [/B][/QUOTE] 多谢Lu0的回答. 前面一句话还可以理解,应该就是把exe用资源的方式读到内存,然后得到指向这段内存的指针. 但是,后半句话就比较费解. 为什么要"解决外部引用DLL"呢? 我的理解是用GetProcAddress得到exe的入口函数的指针,然后运行入口函数. 是不是这样呢? 还希望Lu0能够帮忙回答一下. |
|
|
地板#
发布于:2001-08-14 20:44
能否做一个钩子程序,在CreateProcess开始运行时将数据钩出,先处理。然后再还给系统运行呢?
|
|
|
地下室#
发布于:2001-08-15 09:31
[QUOTE]原本由 rayyang2000 发表
[B][QUOTE]原本由 lu0 发表 [B]LOADLIBRARYEX将EXE以资源方式加载到内存.自己写LOADER解决外部引用DLL就可. [/B][/QUOTE] 多谢Lu0的回答. 前面一句话还可以理解,应该就是把exe用资源的方式读到内存,然后得到指向这段内存的指针. 但是,后半句话就比较费解. 为什么要"解决外部引用DLL"呢? 我的理解是用GetProcAddress得到exe的入口函数的指针,然后运行入口函数. 是不是这样呢? 还希望Lu0能够帮忙回答一下. [/B][/QUOTE] 已经试过了,用GetProcAddress不能得到入口函数。那应该怎么办呢? |
|
5楼#
发布于:2001-08-15 09:37
[QUOTE]原本由 LitteSW 发表
[B]能否做一个钩子程序,在CreateProcess开始运行时将数据钩出,先处理。然后再还给系统运行呢? [/B][/QUOTE] 也是一种方案.... |
|
|
6楼#
发布于:2001-08-15 12:52
EXE不是DLL, 入口调用的结果也不同,通常EXE入口调用一直不返回.一直到EXE结束.而DLL则立刻返回.
如果不解决外部引用, EXE需要的DLL就没有被加载到内存. 这样, EXE是没有办法使用的. |
|
|
7楼#
发布于:2001-08-16 09:59
[QUOTE]原本由 lu0 发表
[B]EXE不是DLL, 入口调用的结果也不同,通常EXE入口调用一直不返回.一直到EXE结束.而DLL则立刻返回. 如果不解决外部引用, EXE需要的DLL就没有被加载到内存. 这样, EXE是没有办法使用的. [/B][/QUOTE] 明白了你的意思。 那怎样得到exe的入口函数的地址呢?是不是要分析一下PE?我简单看了一下你的关于PE的文章,看到里面有个结构的成员是入口地址。 Lu0,你有没有关于exe loader的例子,能让我参考一下? |
|
|
8楼#
发布于:2001-08-16 18:30
请问"把一个Win32的exe文件读入内存中, 然后运行其中的代码"与"直接使用系统调用system()"之间有何区别?
谢谢! |
|
|
9楼#
发布于:2001-08-16 18:38
没有EXE LOADER例子. 但是我过段时间会写.
|
|
|
10楼#
发布于:2001-08-20 10:45
[QUOTE]原本由 lu0 发表
[B]没有EXE LOADER例子. 但是我过段时间会写. [/B][/QUOTE] 希望将来能够参考一下。你做好了,一定要告诉我啊! 不过,公司现在决定不用这种方法了,我个人倒是挺感兴趣。等到空下来,继续研究。 |
|
|
11楼#
发布于:2001-08-20 10:46
[QUOTE]原本由 juwenbi 发表
[B]请问"把一个Win32的exe文件读入内存中, 然后运行其中的代码"与"直接使用系统调用system()"之间有何区别? 谢谢! [/B][/QUOTE] 这样的exe还是在文件中,没有办法修改 |
|
|