自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

linux-0.11调试教程

linux-0.11调试教程

  • 博客(36)
  • 资源 (50)
  • 收藏
  • 关注

原创 linux-0.11调试教程,源起,从linux内核完全注释的几处错误说起

本系列文章调试linux-0.11,大部分都是一些新内容,小部分是对代码的一些印证。        另写了一些调试工具,比如readizone,readblock,readinode这些工具对学习linux-0.11操作系统很有帮助。当然还需要stat和hexdump工具的配合。       fdisk for linux-0.11         开始到-13/3/15的文章

2013-01-15 11:32:14 4774

原创 linux-0.11调试教程,mkfs.c源代码分析(3)

如果mkfs命令加-c选项会执行check_blocks()函数当然会很费时。大约2分钟。check_blocks()函数通过逐个读取块的内容,如果不能读取,算出哪个块不能读取,既是坏块,计算出坏块的块号既current_block,然后把对应的逻辑块位图中的位置位,表示已经损坏,在make_bad_inode()函数运行的时候会根据逻辑块位图中的位是否被置1换算成坏块的块号放到坏块文件中

2013-01-29 18:18:23 1683

原创 linux-0.11调试教程,mkfs.c源代码分析(2)

第二个任务是建立根目录。由make_root_inode()函数完成。在make_root_inode()函数运行之前如果命令中加入了-c选项,则会运行check_blocks()函数检查坏块,并把坏块对应的逻辑块位图块中对应的位置1。因为我们的系统是在bochs中运行,硬盘对应的是一个img文件,不是实体硬盘,所以不会有坏块。也没有必要加-c选项。根目录对应的数据是:#defin

2013-01-29 13:44:13 2296

原创 linux-0.11调试教程,mkfs.c源代码分析(1)

下面是mkfs命令的一个例子mkfs /dev/hd6 60000结果:20000个inodes,60000个blocks,第一个数据块块号为638指导思想:不看源代码的话,格式化一个文件系统,应该改变的是:(1),文件系统的超级块信息,需要用户输入的块的总数算出i节点的个数和i节点位图块的个数和逻辑块位图块的个数及第一个数据块的块号。setup_tab

2013-01-29 11:31:03 3731

原创 linux-0.11调试教程,img文件的分区和格式化,写了个fdisk1可以新建一个分区

fdisk1百度网盘下载:http://pan.baidu.com/share/link?shareid=220194&uk=453348606使用方法:fdisk1,可以放在rootimage-0.11根文件系统里,也可以放在hdc-0.11.img里面。使用命令后第二个硬盘既/dev/hd5的分区表第一个会被改写。作用:把由bochs的64M的img文件(未

2013-01-28 16:19:57 5019

原创 查看硬盘分区表信息工具:fdisk0 for linux-0.11 附下载地址

查看硬盘分区表信息工具:fdisk0 for linux-0.11下载地址1:fdisk0 for linux-0.11下载地址2:百度网盘下载地址:http://pan.baidu.com/share/link?shareid=218125&uk=453348606现在只能查看/dev/hd0的硬盘分区表信息,还不能删除分区,等。引用:UNIX所谓的“

2013-01-27 14:50:37 2421

原创 linux-0.11调试教程,df.c源代码分析,自己写了个super for linux-0.11

int nibblemap[] = { 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4 };1101,11003个1,2个1如tmp=1101,1100bnibblemap[tmp&0xf] + nibblemap[(tmp>>4)&0xf]=5上面的可以算出1个字节有多少个1!//count()算的是i节点位图或逻辑块位图中有多少个位为

2013-01-26 21:24:14 2914

原创 linux-0.11调试教程,Bochs-2.1.1配置文件,精简版可拷贝,及img文件制作过程

说明1:BIOS-bochs-latest文件和VGABIOS-elpin-2.40文件都在bochs安装目录下,既C:\Program Files\Bochs-2.1.1说明2:bootimage-0.11-hd和diskb.img和hdc-0.11.img都是用户自己制作或下载的别人制作好的文件。下面是bochsrc-hd.bxrc文件的内容:romimage: file=

2013-01-26 11:18:03 4567

原创 linux-0.11,任务1的用户态堆栈,copy-on-write之后的堆栈!

下面是copy-on-write之后和之前的内存页,copy-on-write之前0x401ee50位于user_stack[]数组内。user_stack地址:0x1de6c。0x1ee5c处的地址0x5412既head.s中L6的地址:$L6。copy-on-write之后位于0xffd000-0xffe000对应的内存页中。下面是copy-on-write之前和之后页

2013-01-25 07:34:05 2873 2

原创 linux-0.11调试教程,head.s页表项

0xffe000-0xffefff是进程1的页表0x1000是进程0的页表。

2013-01-23 19:47:04 2328 2

原创 linux-0.11调试教程,task2参数所在内存页的页目录项和页表项

此文内容在do_execve()函数的change_ldt()函数之后create_table()函数运行之前的情形。change_ldt()函数会调用put_page()函数把参数内存页放置到当前任务的线性地址的末端。第一步:在页目录表里找到任务2的参数内存页所在的页目录项,算出页表所在的地址0xffd000,因为每个进程64M对应16个字的空间任务2的在第32-47个字处。

2013-01-23 14:32:46 1762

原创 linux-0.11调试教程,task2的参数,copy_strings()函数和create_tables()函数的关系

下面是create_tables运行之前的用户栈的情况下面是create_tables运行之后的用户栈的情况init/main.c文件部分内容:static char * argv_rc[] = { "/bin/sh", NULL };static char * envp_rc[] = { "HOME=/", NULL };0x002f3

2013-01-22 22:20:24 2283

原创 linux-0.11调试教程,setup.s中的硬盘参数表

setup.s获取显卡信息和硬盘信息,因为硬盘信息的地址在中断向量int0x41处既0x0000:0104处,所以bootsect.s中把Image中的system部分移到了0x10000开始的地方,(而不是直接移到0x0000处,防止覆盖掉硬盘参数表的地址和硬盘参数表,因为硬盘参数表的地址在0x9fc0:0x003d处!),setup.s里面的代码取得硬盘参数表后再把0x10000处的syste

2013-01-21 13:07:25 3368

原创 linux-0.11调试教程,bootsect.s文件调试,Loading system ...

Image中的bootsect部分被BIOS加载到0000:7c00--0000:7e00,正好一个扇区,也只有这一个扇区。你应该能看到0X301既根设备号,还能看到aa55了。然后会把自己加载到0x90000-0x90200下面把setup部分加载到0x90200-0x90a00,共4个扇区。到这里你应该看到

2013-01-18 19:00:28 2154

原创 linux-0.11调试教程,con_init函数和右上角的EGAc

最后4个字母是EGAc对应8个字节0x07470745      0x07630741。因为是EGAc,所以0xb8000是显存的起始地址,而这时origin 也设置为video_mem_start既0xb8000。所以可以在0xb8030既第24个字母处(每个字母用2个字节表示),设置badc。#defi

2013-01-17 13:45:11 1681

原创 linux-0.11调试教程,timer_interrupt,内核态发生的时钟中断(02)

下面是在sys_setup处下断点后的情形。

2013-01-16 21:47:41 2302

原创 linux-0.11调试教程,minix文件系统1.0上篇(01),硬盘基本参数hd_info

下面是在mount_root下断点。地址0x191e4是hd_info[0]的结构地址,而0x90080是setup.s中设置的。相关代码是:for (drive=0 ; drive        hd_info[drive].cyl = *(unsigned short *) BIOS;        hd_info[drive].head = *(unsigne

2013-01-16 19:22:11 1559

原创 linux-0.11调试教程,minix文件系统1.0,上篇(02)sys_setup

下面在mount_root下断点的情形。下图可以看出为0x1fa58的buffer_head结构中设备号为0x300,块号为0。既硬盘的第一个块。上面有分区信息。高速缓存区块的地址为0x3ffc00。上图可以看出硬盘的第一个块的分区信息,从第二行的最后两个字可以看出nr_sects为0x1d87f。struct partition {

2013-01-16 18:03:10 2020

原创 linux-0.11调试教程,timer_interrupt,内核态发生的时钟中断(01)

下面的是进程1,mount_root()时发生时钟中断的情形。第一行和第二行和第三行的前两个字是时钟中断压入堆栈的第四行最后一个字,0x000120f9 是sys_setup()函数中mount_root()调用后的返回地址。第四行的前3个字和第三行的后2个字,共5个字是mount_root函数中压入堆栈的,分别是ebp,未知,edi

2013-01-15 19:06:51 1969

原创 linux-0.11调试教程,task3(04),sa_restore函数

返回用户态之后,先运行的是用户定义的信号处理程序,既sa_handler,然后sa_handler函数最后是ret!!!ret之后运行sa_restore函数,sa_restore函数最后也是ret!!!再返回到int 0x80下面的语句,既old_eip位置处继续运行。所以第一需要改变的是信号处理所在的用户程序的内核态堆栈中的eip,第二是用户态堆栈,用户态堆栈需要放置两个地址,

2013-01-14 07:42:24 2166

原创 linux0.11调试教程,task3概述

通过/etc/rc和/etc/update文件的运行过程,可以很好的理解sys_pause的作用和机理。以及可以理解信号的通信机制和sys_alarm系统调用是如何起作用的。update 会设置update所在任务的信号值SIGHUP和SIGTERM的处理句柄为SIG_IGN(忽略)。linux-0.11调试教程,task3(01),/etc/rc文件linux-0

2013-01-12 18:12:54 1367

原创 linux-0.11调试教程,task3(01),/etc/rc文件

init/main.c中相关代码:   if (!(pid=fork())) {        close(0);        if (open("/etc/rc",O_RDONLY,0))            _exit(1);        execve("/bin/sh",argv_rc,envp_rc);        _exit(2);    }

2013-01-12 16:54:02 2719 8

原创 linux-0.11调试教程,task3(03),do_signale之后的用户栈

下面是do_signal之前和之后iret之前的内核态堆栈的变化情况,主要是原esp和原eip的变化情况。相关代码:void do_signal(long signr,long eax, long ebx, long ecx, long edx,    long fs, long es, long ds,    long eip, long cs, lo

2013-01-11 21:11:51 1925

原创 linux-0.11调试教程,task3(02)系统调用sys_alarm和sigaction结构

系统调用sys_alarm相关代码:int sys_alarm(long seconds){    int old = current->alarm;    if (old)        old = (old - jiffies) / HZ;    current->alarm = (seconds>0)?(jiffies+HZ*seconds):0;    re

2013-01-11 13:31:18 2152

原创 进程1中copy_page_tables中页表项为何设置为只读?

this_page &= ~2;当处理器运行在超级用户特权级(级别0、1或2)时,则R/W位不起作用。

2013-01-10 21:38:29 1281

原创 linux-0.11调试教程,task4

相关代码:       if (!pid) {            close(0);close(1);close(2);            setsid();            (void) open("/dev/tty0",O_RDWR,0);            (void) dup(0);            (void) dup(0);

2013-01-09 20:54:12 1045

原创 linux-0.11调试教程,task2

相关代码:if (!(pid=fork())) {        close(0);        if (open("/etc/rc",O_RDONLY,0))            _exit(1);        execve("/bin/sh",argv_rc,envp_rc);        _exit(2);    }图1进程2的

2013-01-09 20:26:14 1187

原创 linux-0.11调试教程 tty_table

图一0x19170是tty_table的地址,图二是“Free mem: 12582912 bytes”对应的写队列缓冲区的一部分内容46:F,72:r,65:e,65:e,20:空格,6d:m...   ...                             图二图三图三是是tty队列结构,0x00000103表示队列里面的head位置。看

2013-01-08 18:34:21 1128

原创 linux-0.11调试教程 minix 文件系统1.0 下篇(3)文件表 file_table

(void) open("/dev/tty0",O_RDWR,0);    (void) dup(0);    (void) dup(0);下面的图是复制文件句柄0之后得到文件句柄1和文件句柄2,之后的情形。                             图一图一表示进程1的task_struct,突出显示的task_struct->file[NR_O

2013-01-08 17:32:56 1336

原创 linux-0.11调试教程 minix文件系统1.0 下篇(2)inode_table内存i节点表和目录 /etc/tty0

setup((void *) &drive_info);    (void) open("/dev/tty0",O_RDWR,0);    (void) dup(0);    (void) dup(0);    printf("%d buffers = %d bytes buffer space\n\r",NR_BUFFERS,        NR_BUFFERS*BLOCK_

2013-01-07 19:13:36 2448

原创 linux0.11 minix1.0文件系统 下篇 根节点的 buffer_head结构,根节点内容

第一个i节点块的第一个i节点对应的是根节点,因为这个节点的izone[0]为0x027e!!!41ed是文件类型0x19294是根节点对应的内存i节点地址,izone[0]是0x02740x1fc50是根目录的buffer_head指针,既缓冲头指针,根目录的块号为0x027e,数据所在的高速缓冲区地址是0x003f400。

2013-01-06 19:55:12 1878

原创 linux 0.11 minix 1.0 文件系统 中篇 hash_table

上篇地址链接struct buffer_head * s_imap[8];        0x0001faa0  0x0001fac4  0x0001fae8    struct buffer_head * s_zmap[8];        0x0001fb0c      0x0001fb30      0x0001fb54

2013-01-06 18:40:28 1816

原创 linux 0.11 调试教程,minix 1.0 文件系统,上篇(03),super_block,137f和301看见了么?

相关代码:sys_setup()函数调用mount_root()函数,mount_root()函数又调用read_super()函数。struct super_block {    unsigned short s_ninodes;        4e20    unsigned short s_nzones;        ea60    unsigned s

2013-01-04 11:35:23 2148

原创 linux0.11,进程0,进程1,进程2运行的先后顺序

环境,ROOT_DEV=/dev/hd11,进程0,然后state等于12,进程1,然后state等于13,进程2。

2013-01-03 14:33:48 1970

转载 使用vi编辑文件,出现“*** is busy”,如何处理?

到tmp文件夹下,删光里面的所有文件,就可解决这个故障。不过,还是不明白为啥会这样。

2013-01-03 10:41:20 5736 1

原创 user_stack对应堆栈内容

2013-01-03 10:34:50 1385

TUTORIAL FOR INSTALLING MINIX-386

TUTORIAL FOR INSTALLING MINIX-386 MINIX 升级到 MINIX-386的经典 John Nall写的关于如何使用Bruce Evans的补丁程序将MINIX 1.5.10版升级到MINIX-386的说明。

2013-12-14

netcat.dll(UDP版) by chenghao0511

netcat.dll(UDP版) by chenghao0511 2013-05-20 by chenghao0511@gmail.com dll.dll(netcat.dll:nc -uLp 66) Load.exe injector in explorer.exe 备份在csdn资源库

2013-05-20

netcat 1.15-3 by chenghao0511

nc -u -lp port -e cmd.exe [remote] nc -u ip port [locate] (after ctrl+c,exit(0))

2013-05-16

netcat 1.15-2 by chenghao0511

in netcat.c in readwrite() rr = send (fd, zp, rr, 0); /* one line, or the whole buffer */ + if (strnicmp(zp, "exit\n", 5) == 0) /* UDP after input "exit",break! by chenghao0511 2013-05-14*/ + if(o_udpmode) + break; 修正了UDP连接中,输入exit后,远程端退出但本地不退出情况。

2013-05-14

nt4-ddk,压缩包,2k环境下安装的编译nt4的

nt4-ddk,压缩包,2k环境下安装的编译nt4的

2013-05-12

cmd.exe的源代码,nt4的

位置在\nt4\private\windows\cmd,zk代码中没发现cmd目录。

2013-05-12

nc115.rar by chenghao0511#gmail.com

nc -u -lp port -e cmd.exe

2013-05-11

Windows环境下32位汇编语言程序设计中13章的远程注入dll的例子

Windows环境下32位汇编语言程序设计中13章的远程注入dll的例子

2013-05-09

远程dll示例,学习远程线程的例子

远程dll示例,学习远程线程的例子. 先运行计算器,然后loader.exe,然后用netcat既军刀nc连接本地的66端口

2013-05-09

netcat 1.142 by chenghao0511

netcat nc chenghao0511 1.142 update you can use: nc -lp 66 < doexec.c nc -C 127.0.0.1 66 >test.c or: nc -lp 66 > test1.c nc -C 127.0.0.1 66 < doexec.c

2013-05-05

netcat 1.14 by chenghao0511

after: remote:nc -lp 55 < doexec.c local:nc ip 55 > test.c remote:nc -lp 55 < doexec.c _ [can not type in] local:nc ip 55 > test.c _ [can type in,remote out]

2013-05-03

netcat 1.13 by chenghao0511

netcat -C ip port -e cmd.exe

2013-05-01

nc112.rar

nc112.rar

2013-04-20

masm32 v11 免费下载

masm32 v11 免费下载

2013-04-18

samba rpm包 for centos-5.5

2010-04-27 04:00 4,402,581 samba3x-3.3.8-0.51.el5.i386.rpm 2010-04-27 04:00 12,760,275 samba3x-common-3.3.8-0.51.el5.i386.rpm 2010-04-27 04:00 3,232,573 samba3x-winbind-3.3.8-0.51.el5.i386.rpm 4 个文件 20,395,429 字节 2 个目录 87,655,424,000 可用字节

2013-03-25

bash 1.05 by gcc-1.40 in minix-386 第二版

bash 1.05 by gcc-1.40 in minix-386 第二版by chenghao0511#gmail.com 2013/2/23

2013-02-23

findipn for linux-0.11 by chenghao0511

findipn根据i节点号返回路径和文件名

2013-02-19

fdisk-by-chenghao0511 for linux-0.11

fdisk-by-chenghao0511 for linux-0.11 2013/2/16 by chenghao0511 # gmail.com patch to: /fs/ioctl.c /include/linux/hdreg.h /kernel/blk_drv/hd.c

2013-02-16

readinode for linux-0.11 by chenghao0511

2013/2/15 by chenghao0511 # gmail.com stat /bin/sh readinode /dev/hd1 2353 hexdump inode2353 0000000 81c9 0000 d400 0003 dc92 403f 0100 bbc7 0000010 bbc8 bbc9 bbca bbcb bbcc bbcd bbce 0000 0000020

2013-02-15

readblock for linux-0.11 by chenghao0511

readblock for linux-0.11 by chenghao0511 2013/2/15 by chenghao0511 # gmail.com stat hello.c fileino /dev/hd3 293 readblock 2560 ls -l 2560

2013-02-15

windows server 2003 checked版3790

windows server 2003 checked版3790

2024-09-14

vc2008工具软件包括dumpbin.exe

vc2008工具软件包括dumpbin.exe

2024-08-15

Windows Resource Kits 2003

Windows Resource Kits 2003

2024-08-07

成绩查询php源码.pdf

成绩查询php源码.pdf

2021-09-01

txtSQL1.0.zip

https://sourceforge.net/projects/txtsql/主页地址。2004年版本。就单个文件的类库。

2020-11-21

vi.rarLinux上的文本编辑器

vi编辑器,1992年古董级别的编辑器,linux上差不多是最早的编辑器。可执行文件。源代码大家自己找吧。

2020-11-16

isbn十位转13位.xlsx

isbn十位转13位.xlsx,10位转13位用的mid函数和mod函数,算法很简单。 13位转10位,用的choose函数和match函数,或者用if函数。

2020-05-09

usb3.0最新20170511驱动forwin7-

usb3.0最新20170511驱动forwin7-可以注入win7原版系统。用工具dism-GUI

2018-11-04

cute http file server 开发API

cute http file server 开发文档https://github.com/docblue/chfsgui图形界面Git地址

2018-11-01

Prime numbers and the Riemann zeta function.by Jørgen Veisdal

Prime numbers and the Riemann zeta function.by Jørgen Veisdal

2018-03-27

MT7601U驱动修改版16.04

MT7601U驱动修改版16.04MT7601U驱动修改版16.04MT7601U驱动修改版16.04

2017-12-17

initramfs-tools_0.103

initramfs-tools_0.103 https://launchpad.net/ubuntu/+source/initramfs-tools/0.103ubuntu9 有源代码下载

2015-01-29

run-init源代码

来源与klibc-2.0.4,klibc-2.0.4/usr/kinit目录

2015-01-29

awb-gcc-minix.rar

minix升级到minix-386所需的gcc-1.37.1

2014-05-01

linux-0.11硬盘集成盘14年1月9日by chenghao0511

linux-0.11硬盘集成盘14年1月9日by chenghao0511 2014年1月9日 by chenghao0511@gmail.com 制作方法:把bootsect 替换 原来的 make dd bs=8192 if=Image of=/dev/hd5 c h s 60 16 63 之后需要更改img的分区表,需要你先备份然后再拷贝回去 0x1BE到0x1CF是这个分区1的数据 001231048165041E2C010000317500000000

2014-01-09

调试shoelace的winiboot所需的img文件

调试shoelace的winiboot所需的img文件 60 16 63 c h s 让这个img为主盘启动,什么也不要操作。

2014-01-08

linux-0.11内核bochs实验编译环境

linux-0.11内核bochs实验编译环境

2014-01-04

readline used in linux-0.11 made in minix

readline used in linux-0.11 made in minix 14年1月4日 readline回车 quit离开

2014-01-04

linux-0.11内核文件备份

linux-0.11内核文件备份 用winimage加入diskb.img 然后进入系统后mcopy b:backup.Z backup.Z 然后解压tar xZvf backup.Z

2014-01-03

netpipe聊天室服务端

netpipe聊天室服务端 netpipe回车,本地开启5150端口。 netpipe 66回车,本地开启66端口。

2013-12-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除