Linux源码研究-内核开发-魔数

使用魔数来保护内核数据结构是一个非常好的主意,这就允许你在运行期检查一个结构是否已经被攻击,或者你已经给一个例行程序通过了一个错误的结构。

使用魔数值的方法是在结构的开始处声明的,如下:

struct tty_ldisc { 
int	magic;
	... 
};

 

Magic NameNumberStructureFile
PG_MAGIC‘P’pg_{read,write}_hdrinclude/linux/pg.h
CMAGIC0x0111userinclude/linux/a.out.h
MKISS_DRIVER_MAGIC0x04bfmkiss_channeldrivers/net/mkiss.h
HDLC_MAGIC0x239en_hdlcdrivers/char/n_hdlc.c
APM_BIOS_MAGIC0x4101apm_userarch/x86/kernel/apm_32.c
CYCLADES_MAGIC0x4359cyclades_portinclude/linux/cyclades.h
DB_MAGIC0x4442fc_infodrivers/net/iph5526_novram.c
DL_MAGIC0x444dfc_infodrivers/net/iph5526_novram.c
FASYNC_MAGIC0x4601fasync_structinclude/linux/fs.h
FF_MAGIC0x4646fc_infodrivers/net/iph5526_novram.c
ISICOM_MAGIC0x4d54isi_portinclude/linux/isicom.h
PTY_MAGIC0x5001 drivers/char/pty.c
PPP_MAGIC0x5002pppinclude/linux/if_pppvar.h
SERIAL_MAGIC0x5301async_structinclude/linux/serial.h
SSTATE_MAGIC0x5302serial_stateinclude/linux/serial.h
SLIP_MAGIC0x5302slipdrivers/net/slip.h
STRIP_MAGIC0x5303stripdrivers/net/strip.c
X25_ASY_MAGIC0x5303x25_asydrivers/net/x25_asy.h
SIXPACK_MAGIC0x5304sixpackdrivers/net/hamradio/6pack.h
AX25_MAGIC0x5316ax_dispdrivers/net/mkiss.h
TTY_MAGIC0x5401tty_structinclude/linux/tty.h
MGSL_MAGIC0x5401mgsl_infodrivers/char/synclink.c
TTY_DRIVER_MAGIC0x5402tty_driverinclude/linux/tty_driver.h
MGSLPC_MAGIC0x5402mgslpc_infodrivers/char/pcmcia/synclink_cs.c
TTY_LDISC_MAGIC0x5403tty_ldiscinclude/linux/tty_ldisc.h
USB_SERIAL_MAGIC0x6702usb_serialdrivers/usb/serial/usb-serial.h
FULL_DUPLEX_MAGIC0x6969 drivers/net/ethernet/dec/tulip/de2104x.c
USB_BLUETOOTH_MAGIC0x6d02usb_bluetoothdrivers/usb/class/bluetty.c
RFCOMM_TTY_MAGIC0x6d02 net/bluetooth/rfcomm/tty.c
USB_SERIAL_PORT_MAGIC0x7301usb_serial_portdrivers/usb/serial/usb-serial.h
CG_MAGIC0x00090255ufs_cylinder_groupinclude/linux/ufs_fs.h
RPORT_MAGIC0x00525001r_portdrivers/char/rocket_int.h
LSEMAGIC0x05091998lsedrivers/fc4/fc.c
GDTIOCTL_MAGIC0x06030f07gdth_iowr_strdrivers/scsi/gdth_ioctl.h
RIEBL_MAGIC0x09051990 drivers/net/atarilance.c
NBD_REQUEST_MAGIC0x12560953nbd_requestinclude/linux/nbd.h
RED_MAGIC20x170fc2a5(any)mm/slab.c
BAYCOM_MAGIC0x19730510baycom_statedrivers/net/baycom_epp.c
ISDN_X25IFACE_MAGIC0x1e75a2b9isdn_x25iface_proto_datadrivers/isdn/isdn_x25iface.h
ECP_MAGIC0x21504345cdkecpsiginclude/linux/cdk.h
LSOMAGIC0x27091997lsodrivers/fc4/fc.c
LSMAGIC0x2a3b4d2alsdrivers/fc4/fc.c
WANPIPE_MAGIC0x414C4453sdla_{dump,exec}include/linux/wanpipe.h
CS_CARD_MAGIC0x43525553cs_cardsound/oss/cs46xx.c
LABELCL_MAGIC0x4857434clabelcl_info_sinclude/asm/ia64/sn/labelcl.h
ISDN_ASYNC_MAGIC0x49344C01modem_infoinclude/linux/isdn.h
CTC_ASYNC_MAGIC0x49344C01ctc_tty_infodrivers/s390/net/ctctty.c
ISDN_NET_MAGIC0x49344C02isdn_net_local_sdrivers/isdn/i4l/isdn_net_lib.h
SAVEKMSG_MAGIC20x4B4D5347savekmsgarch/*/amiga/config.c
CS_STATE_MAGIC0x4c4f4749cs_statesound/oss/cs46xx.c
SLAB_C_MAGIC0x4f17a36dkmem_cachemm/slab.c
COW_MAGIC0x4f4f4f4dcow_header_v1arch/um/drivers/ubd_user.c
I810_CARD_MAGIC0x5072696Ei810_cardsound/oss/i810_audio.c
TRIDENT_CARD_MAGIC0x5072696Etrident_cardsound/oss/trident.c
ROUTER_MAGIC0x524d4157wan_device[in wanrouter.h pre 3.9]
SAVEKMSG_MAGIC10x53415645savekmsgarch/*/amiga/config.c
GDA_MAGIC0x58464552gdaarch/mips/include/asm/sn/gda.h
RED_MAGIC10x5a2cf071(any)mm/slab.c
EEPROM_MAGIC_VALUE0x5ab478d2lanai_devdrivers/atm/lanai.c
HDLCDRV_MAGIC0x5ac6e778hdlcdrv_stateinclude/linux/hdlcdrv.h
PCXX_MAGIC0x5c6df104channeldrivers/char/pcxx.h
KV_MAGIC0x5f4b565fkernel_vars_sarch/mips/include/asm/sn/klkernvars.h
I810_STATE_MAGIC0x63657373i810_statesound/oss/i810_audio.c
TRIDENT_STATE_MAGIC0x63657373trient_statesound/oss/trident.c
M3_CARD_MAGIC0x646e6f50m3_cardsound/oss/maestro3.c
FW_HEADER_MAGIC0x65726F66fw_headerdrivers/atm/fore200e.h
SLOT_MAGIC0x67267321slotdrivers/hotplug/cpqphp.h
SLOT_MAGIC0x67267322slotdrivers/hotplug/acpiphp.h
LO_MAGIC0x68797548nbd_deviceinclude/linux/nbd.h
OPROFILE_MAGIC0x6f70726fsuper_blockdrivers/oprofile/oprofilefs.h
M3_STATE_MAGIC0x734d724dm3_statesound/oss/maestro3.c
VMALLOC_MAGIC0x87654320snd_alloc_tracksound/core/memory.c
KMALLOC_MAGIC0x87654321snd_alloc_tracksound/core/memory.c
PWC_MAGIC0x89DC10ABpwc_devicedrivers/usb/media/pwc.h
NBD_REPLY_MAGIC0x96744668nbd_replyinclude/linux/nbd.h
ENI155_MAGIC0xa54b872dmidway_epromdrivers/atm/eni.h
CODA_MAGIC0xC0DAC0DAcoda_file_infofs/coda/coda_fs_i.h
DPMEM_MAGIC0xc0ffee11gdt_pci_sramdrivers/scsi/gdth.h
YAM_MAGIC0xF10A7654yam_portdrivers/net/hamradio/yam.c
CCB_MAGIC0xf2691ad2ccbdrivers/scsi/ncr53c8xx.c
QUEUE_MAGIC_FREE0xf7e1c9a3queue_entrydrivers/scsi/arm/queue.c
QUEUE_MAGIC_USED0xf7e1cc33queue_entrydrivers/scsi/arm/queue.c
HTB_CMAGIC0xFEFAFEF1htb_classnet/sched/sch_htb.c
NMI_MAGIC0x48414d4d455201nmi_sarch/mips/include/asm/sn/nmi.h

请注意,在声音记忆管理中仍然有一些特殊的为每个驱动定义的魔术值。查看include/sound/sndmagic.h来获取他们完整的列表信息。很多OSS声音驱动拥有自己从声卡PCI ID构建的魔术值-他们也没有被列在这里。
IrDA子系统也使用了大量的自己的魔术值,查看include/net/irda/irda.h来获取他们完整的信息。
HFS是另外一个比较大的使用魔术值的文件系统-你可以在fs/hfs/hfs.h中找到他们。 

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值