資源簡(jiǎn)介
本資源為linux-0.11的源碼文件。對(duì)全部的代碼文件進(jìn)行了詳細(xì)的注釋和說(shuō)明。可以配合我的資源中《linux內(nèi)核完全注釋(趙炯著)》一書進(jìn)行詳細(xì)的閱讀,對(duì)于想快速理解linux內(nèi)核的同學(xué)十分有用。
注意:資源為中文注釋的源碼文件,注釋十分詳細(xì)。配合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? {
*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)
{
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????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個(gè)文件信息
- 上一篇:小波變換聚類
- 下一篇:谷歌瀏覽器翻譯插件.zip
評(píng)論
共有 條評(píng)論