rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
阅读:2543回复:11

如何把一个Win32的exe文件读入内存中, 然后运行其中的代码?

楼主#
更多 发布于:2001-08-09 16:10
希望能够在Win2K上实现. 看起来像病毒....不过是客户要求的. 呵呵...

最新喜欢:

flyfoxflyfox IammeIamme
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-11 11:54
LOADLIBRARYEX将EXE以资源方式加载到内存.自己写LOADER解决外部引用DLL就可.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-11 21:22
[QUOTE]原本由 lu0 发表
[B]LOADLIBRARYEX将EXE以资源方式加载到内存.自己写LOADER解决外部引用DLL就可. [/B][/QUOTE]
多谢Lu0的回答.
前面一句话还可以理解,应该就是把exe用资源的方式读到内存,然后得到指向这段内存的指针.
但是,后半句话就比较费解. 为什么要"解决外部引用DLL"呢? 我的理解是用GetProcAddress得到exe的入口函数的指针,然后运行入口函数. 是不是这样呢?
还希望Lu0能够帮忙回答一下.
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-08-14 20:44
能否做一个钩子程序,在CreateProcess开始运行时将数据钩出,先处理。然后再还给系统运行呢?
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
guest
驱动牛犊
驱动牛犊
  • 注册日期2001-06-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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不能得到入口函数。那应该怎么办呢?
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-08-15 09:37
[QUOTE]原本由 LitteSW 发表
[B]能否做一个钩子程序,在CreateProcess开始运行时将数据钩出,先处理。然后再还给系统运行呢? [/B][/QUOTE]
也是一种方案....
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-08-15 12:52
EXE不是DLL, 入口调用的结果也不同,通常EXE入口调用一直不返回.一直到EXE结束.而DLL则立刻返回.
如果不解决外部引用, EXE需要的DLL就没有被加载到内存. 这样, EXE是没有办法使用的.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
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的例子,能让我参考一下?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
juwenbi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-15
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-08-16 18:30
请问"把一个Win32的exe文件读入内存中, 然后运行其中的代码"与"直接使用系统调用system()"之间有何区别?
谢谢!
bwj 2001
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-08-16 18:38
没有EXE LOADER例子. 但是我过段时间会写.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2001-08-20 10:45
[QUOTE]原本由 lu0 发表
[B]没有EXE LOADER例子. 但是我过段时间会写. [/B][/QUOTE]
希望将来能够参考一下。你做好了,一定要告诉我啊!
不过,公司现在决定不用这种方法了,我个人倒是挺感兴趣。等到空下来,继续研究。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2001-08-20 10:46
[QUOTE]原本由 juwenbi 发表
[B]请问"把一个Win32的exe文件读入内存中, 然后运行其中的代码"与"直接使用系统调用system()"之间有何区别?
谢谢! [/B][/QUOTE]
这样的exe还是在文件中,没有办法修改
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部