资源简介
本资源为linux-0.11的源码文件。对全部的代码文件进行了详细的注释和说明。可以配合我的资源中《linux内核完全注释(赵炯著)》一书进行详细的阅读,对于想快速理解linux内核的同学十分有用。
注意:资源为中文注释的源码文件,注释十分详细。配合source insight阅读更佳。

代码片段和文件信息
#include
#include
#include
DWORD g_dwFileHeader[1024] = {0}; //The PE file‘s header will be read into this buffer.
typedef struct __tagFILE_HEADER{
unsigned char ucNop[4];
DWORD dwJmpAddr;
}__FILL_HEADER;
__FILL_HEADER g_FillHeader = {0x900x900x900xe90x00000000}; //This structure will be
//written to target file.
char* g_lpszTargetPath = “E:\\book\\Temp\\linux011VC\\VC\\Release\\system“; //Target file’s path and name.
void main(int argcchar argv[])
{
IMAGE_DOS_HEADER* ImageDosHeader = NULL;
IMAGE_NT_HEADERS* ImageNtHeader = NULL;
IMAGE_OPTIONAL_HEADER* ImageOptionalHeader = NULL;
HANDLE hFile = INVALID_HANDLE_VALUE;
DWORD dwReadBytes = 0L;
BOOL bResult = FALSE;
DWORD dwActualBytes = 0L;
DWORD dwOffset = 0L;
UCHAR* lpucSource = NULL;
UCHAR* lpucDes = NULL;
DWORD dwLoop = 0;
hFile = CreateFile( //Open the target file.
g_lpszTargetPath
GENERIC_READ | GENERIC_WRITE
0L
NULL
OPEN_ALWAYS
0L
NULL);
if(INVALID_HANDLE_VALUE == hFile)
{
printf(“Can not open the target file to read.“);
goto __TERMINAL;
}
dwReadBytes = 4096; //Read 4k bytes from target file.
bResult = ReadFile(hFileg_dwFileHeaderdwReadBytes&dwActualBytesNULL);
if(!bResult)
goto __TERMINAL;
CloseHandle(hFile);
hFile = INVALID_HANDLE_VALUE;
//
//The following code locates the entry point of the PE fileand modifies it.
//
ImageDosHeader = (IMAGE_DOS_HEADER*)&g_dwFileHeader[0];
dwOffset = ImageDosHeader->e_lfanew;
ImageNtHeader = (IMAGE_NT_HEADERS*)((UCHAR*)&g_dwFileHeader[0] + dwOffset);
ImageOptionalHeader = &(ImageNtHeader->OptionalHeader);
g_FillHeader.dwJmpAddr = ImageOptionalHeader->AddressOfEntryPoint;
printf(“ Entry Point : %d\r\n“ImageOptionalHeader->AddressOfEntryPoint);
g_FillHeader.dwJmpAddr -= sizeof(__FILL_HEADER); //Calculate the target address will
//jump to.
//Because we have added some nop instruc-
//tions in front of the target fileso
//we must adjust it.
lpucSource = (UCHAR*)&g_FillHeader.ucNop[0];
lpucDes = (UCHAR*)&g_dwFileHeader[0];
for(dwLoop = 0;dwLoop < sizeof(__FILL_HEADER);dwLoop ++) //Modify the target file‘s header.
{
*lpucDes = *lpucSource;
lpucDes ++;
lpucSource ++;
}
hFile = CreateFile( //Open the target file to write.
g_lpszTargetPath
GENERIC_READ | GENERIC_WRITE
0L
NULL
OPEN_ALWAYS
0L
NULL);
if(INVALID_HANDLE_VALUE == hFile)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11305 2002-01-03 06:13 linux0.11\boot\bootsect.s
文件 11436 2002-01-03 00:16 linux0.11\boot\head.s
文件 11437 2002-01-03 04:19 linux0.11\boot\head.s.bak
文件 10385 2002-01-03 01:04 linux0.11\boot\setup.s
文件 3401 2002-01-03 11:47 linux0.11\build\build.cpp
文件 10740 2002-01-03 02:51 linux0.11\fs\bitmap.c
文件 10735 2002-01-03 00:13 linux0.11\fs\bitmap.c.bak
文件 4158 2002-01-03 03:18 linux0.11\fs\block_dev.c
文件 15156 2005-04-27 14:25 linux0.11\fs\buffer.c
文件 15064 2002-01-04 03:11 linux0.11\fs\buffer.c.bak
文件 3959 2002-01-03 03:18 linux0.11\fs\char_dev.c
文件 16869 2002-01-03 01:28 linux0.11\fs\exec.c
文件 3352 2005-04-25 15:24 linux0.11\fs\fcntl.c
文件 4696 2005-04-25 15:26 linux0.11\fs\file_dev.c
文件 247 2002-01-03 03:25 linux0.11\fs\file_table.c
文件 14706 2002-01-03 09:48 linux0.11\fs\inode.c
文件 1980 2005-04-25 15:27 linux0.11\fs\ioctl.c
文件 5053 1991-12-02 11:21 linux0.11\fs\Makefile
文件 35524 2002-01-03 09:46 linux0.11\fs\namei.c
文件 34622 2002-01-03 07:36 linux0.11\fs\namei.c.bak
文件 9556 2002-01-03 09:48 linux0.11\fs\open.c
文件 5220 2005-04-25 15:41 linux0.11\fs\pipe.c
文件 5908 2005-04-25 15:45 linux0.11\fs\read_write.c
文件 2754 2005-04-25 15:47 linux0.11\fs\stat.c
文件 13309 2002-01-03 03:00 linux0.11\fs\super.c
文件 2542 2002-01-03 04:35 linux0.11\fs\truncate.c
文件 8415 2004-09-02 13:14 linux0.11\include\a.out.h
文件 1950 2005-04-27 16:00 linux0.11\include\asm\io.h
文件 980 2002-01-03 00:56 linux0.11\include\asm\memory.h
文件 1253 2002-01-03 01:17 linux0.11\include\asm\memory.h.bak
............此处省略156个文件信息
- 上一篇:小波变换聚类
- 下一篇:谷歌浏览器翻译插件.zip
相关资源
- Hi3536 Linux开发环境用户指南
- 制作mipsel-linux交叉编译工具
- linux系统下的内存测试工具
- GNU/Linux系统开发者需要从桌面突破
- the_definitive_guide_to_linux_network_programm
- linux-shell脚本命令:grep命令简介
- Learning Linux Binary Analysis
- 蓝牙源代码应用于LINUX
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- ubuntu9.10 可加载内核模块和字符设备驱
- MP3文件ID3v2ID3v2APEv2标签读取
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- linux下用多进程同步方法解决生产者
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- linux 网络实验 ftp程序
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
- linux实验报告及心得体会
评论
共有 条评论