资源简介
这个是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个文件信息
相关资源
- Unity 自带shader 源码
- fpga游戏源码
- 算法竞赛入门经典(第二版)pdf+源码
- linux进程监控和守护进程的程序
- 五子棋源码+算法详解
- 最小bootloader的实现完整源代码
- rocky凝思操作系统ISO镜像刻录到U盘里
- 中小公司工资管理系统
- RMI 服务器与客户端源码,很简单,自
- 074撒旦源码.rar
- .net EXCEL高效率导出数据源码项目
- linux按键测试,获取按键状态
- Linux基本命令操作实验报告
- Qt QSerialPort 通信 源码
- 取QQkey登录空间和邮箱.e
- 写字机舵机控制抬笔GBRL源码
- 腾讯X5内核浏览器类库.elp
- 内核变速源码.rar
- 基于Verilog二分频的testbench源码
- 微信小程序仿ofo共享单车demo完整源码
- 网狐6603最新源码.txt
- 学习用4.0版Linux下Zynq的axitimer中断驱动
- ros的urdf机器人模型功能包
- ROS创建工作空间代码我写的博客配套
- 2020大数据面试题总汇
- 仿拼多多源码
- Linux实验1_常用命令应用.doc
- 最新微信视频打赏源码与视频教程.
- flask框架源码
- 基于flask与数据库的图书管理系统源码
评论
共有 条评论