• 大小: 891KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-02-10
  • 语言: 其他
  • 标签: linux  v0.11  内核源码  

资源简介

本资源为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个文件信息

评论

共有 条评论