首页
社区
课程
招聘
那位老大,能不能给我们讲讲一个软件是怎么运行的呀!从读取硬盘数据开始。
发表于: 2004-12-4 10:33 5359

那位老大,能不能给我们讲讲一个软件是怎么运行的呀!从读取硬盘数据开始。

2004-12-4 10:33
5359
最好是详细一点,不然那就讲了等于没讲了。谢谢了喔!:)
从这里开始----->  一个软件,我们双击它-->从硬盘读取数据,

到定位dll 。确立程序入口
一直运行到这个软件的入口,这一段过程!

这一段过程我一直是不明白。
那位高手能不能给我们些初学者讲讲呀!不胜感激。:)

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 1
支持
分享
最新回复 (13)
雪    币: 213
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
1 shell调用CreateProcess 激活可执行文件.exe文件
2 WONDOWS操作系统产生一个对象(进程对象) .
3.系统为此进程建立4GB的地址空间.
4.系统加载器把必要的代码,数据.DLL都被加载,具体内容参看看学的3本书,基本都有介绍,加载依据是文件的PE文件结构.
5 系统调用C runtime函数库的Startup code(指C写的程序,其实如果是汇编程序,是在PE文件头直接对应的入口点.
6 Startup code 调用 main()函数.汇编写的程序没这个步骤.
7 程序开始运行

无法在详细了.在详细就的给你挖代码给你看分析加证明了,其实资料很多的,书其实不贵,要是和我一样不吸烟,不喝酒,没女朋友,应该你买的起任何书.(*_*)

我不是高手,知道的越多觉得自己越无知,要是新学电脑会打字就认为自己真正精通了电脑呢.
其实要是有DOS程序编写经验的应该知道PSP(程序段前缀)的概念,也有助与理解一些概念
无法在详细了
2004-12-4 11:04
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
3
GOOD,支持
2004-12-4 12:58
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2004-12-4 22:46
0
雪    币: 1593
活跃值: (766)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
5
最初由 云重 发布
5 系统调用C runtime函数库的Startup code(指C写的程序,其实如果是汇编程序,是在PE文件头直接对应的入口点.
6 Startup code 调用 main()函数.汇编写的程序没这个步骤.


这是由linker生成的,而且并不是所有的C/C++编译器都会生成startup code。如果装了VC的CRT source的话,可以看看crt0.c这个文件,里面有startup code的源代码,主要是会给main()函数传递env、argc和argv三个参数,以及在最后自动调用exit()。
2004-12-4 22:53
0
雪    币: 154
活跃值: (216)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
我记得网上有一篇文章详细地讲述了WIN2000平台下是怎样生成一个进程的。你用WIN2000 LOADER做关键词到搜索引擎中搜索一下应该就有了,当然你还可以参考WIN2000的不完全源代码来进行更进一步的了解。
2004-12-4 22:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
FlyToTheSpace 老大给个罗云彬的汇编语言的下载地点
2004-12-5 01:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
FlyToTheSpace 老大给个罗云彬的汇编语言的下载地点
我的邮箱:mncoco@eyou.com
2004-12-5 01:45
0
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
9
最初由 云重 发布
1 shell调用CreateProcess 激活可执行文件.exe文件
2 WONDOWS操作系统产生一个对象(进程对象) .
3.系统为此进程建立4GB的地址空间.


2, 3 应该在 1 (CreateProcess) 里完成了吧.
2004-12-5 05:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好好学习好好学习好好学习好好学习
2004-12-5 13:22
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
11
不妨自己写个加载程序的SHELL试试:)
2004-12-5 13:37
0
雪    币: 213
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
呵呵,我抛块砖头就把罗聪兄这个大玉个引出来了.对罗聪兄给予的回复表示衷心感谢,
simonzh2000兄  说的是没错,2,3确实在CreateProcess 函数中实现,之后CreateProcess会返回 true,之后即使DLL都被加载失败也和CreateProcess没关系了.这个部分我没强调,这里也对simonzh2000兄表示感谢
2004-12-5 19:26
0
雪    币: 213
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
随便找个监视软件看
读什么写哪个位置,
调API,都可以看到

就是太多无关的,呵呵
2004-12-5 19:38
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
使用OpenFile打开exe文件,
分配内存
复制文件到内存中
根据输入表打开dll,填写函数地址,如果自己已经打开的dll,直接把入口送给新程序。
初始化寄存器及堆栈(这部分我不会)
跳转到程序入口点
2004-12-5 21:11
0
游客
登录 | 注册 方可回帖
返回
//