资源简介
这个是0.11版Linux内核源码,其中每一行都含有中文注释,能够帮且初学者快速入门Linux内核

代码片段和文件信息
#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个文件信息
相关资源
- 易语言:一键cf基址源码
- The Secret Path 3D 3D魔方迷宫[源码][scra
- scratch垃圾分类源码(最终版本).sb
- uboot到linux logo显示不间断 补丁
- 安卓QQ6.71协议源码易语言,qq协议源码
- 编译原理实验工具及参考源码(lex&
- E盾偷后台工具源码
- UNIX/LINUX编程实践教程的源码
- 十以内加减法练习 powerbuilder源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- 农场开发项目
- OCR源码
- PLC上位机编程软件
- 用foobar2000听google音乐[更新一下]
- 学生信息管理系统源码
- 用VC 编写的仿QQ聊天室程序源代码
- 毕业论文之温度传感器DS18B20(源码
- 可自定义导航网站源码
- 栅栏填充算法源码(VC)
- msp430F149操作红外接收模块源码
- [免费]图像识别c 源码
- 周易排盘源码
- RSA算法源码
- ubuntu9.10 可加载内核模块和字符设备驱
- 一个人脸识别程序源码
- 编译原理课程设计:词法语法编译器
- 透明加密源码及说明
- 电视直播源码
- MP3文件ID3v2ID3v2APEv2标签读取
评论
共有 条评论