iopl和outb函数

iopl
是linux系统函数,调用的头文件为 #include <sys/io.h>
函数主要功能介绍:
int iopl(int level);
iopl()更改调用进程的I/O特权级别,由级别中两个最不重要的位指定。
为了允许兼容8514的X服务器在Linux下运行,这个调用是必要的。由于这些X服务器需要访问所有65536 I/O端口,因此ioperm(2)调用是不够的。

除了授予不受限制的I/O端口访问权之外,在更高的I/O特权级别上运行还允许进程禁用中断。这很可能会导致系统崩溃,并且无法修复。
权限由fork(2)和execve(2)继承
正常进程的I/O特权级别为0。

这个调用主要针对i386架构。在许多其他体系结构上,它不存在,或者总是返回一个错误。

值得注意的是**: i386是32位版,x86-64是64位版,PPC是苹果电脑版**

返回值类型说明:

成功时,返回零。错误时,返回-1。

EINVAL 水平大于3
ENOSYS 此调用未实现
EPERM 调用进程没有足够的权限调用iopl();需要CAP_SYS_RAWIO功能将I/O特权级别提升到当前值之上。

注意:
iopl()是特定于linux的,不能移植到其他程序中去使用。

Libc5将其视为一个系统调用,并在<unistd.h>中有一个原型。Glibc1没有原型。Glibc2在<sys/io中有一个原型。和<sys/perm.h>。只能在i386上使用。

outb函数介绍
outb
系统调用中罗列函数有一下信息。
outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O
调用的函数头文件和参数信息如下:

void outb(unsigned char value, unsigned short int port);

*void insb(unsigned short int port, void addr, unsigned long int count);
insb主要是对称查看一下。

主要说明这一函数。

描述信息:
在申请了I/O端口区域之后,就可以放心地访问,Linux使用inb(p)、inw§、insb(p,d,l)、insw(p,d,l)、outb(v,p)、outw(v,p)、outl(v,p)、outsb(p,d,l)、outsl(p,d,l)等宏来访问I/O端口,他们在include/asm/io.h中进行定义。

宏中in表示从端口输入,out表示从输出到端口。

b表示访问字节,w表示访问字,l表示访问长整数,s表示流数据,如outw表示输出一个字。

参数p表示要访问的I/O端口号,v表示要输出的数值,d表示内存缓存起始地址,l表示输出输入的量。

它们主要是为内核使用而设计的,但是可以从用户空间使用。

你必须使用-O或-O2或类似的语言进行编译。这些函数被定义为内联宏,在没有启用优化的情况下不会被替换,这会在链接时导致未解析的引用。

你可以使用ioperm(2)或iopl(2)告诉内核允许用户空间应用程序访问相关的I/O端口。如果不这样做,应用程序将收到一个 seg‐mentation 的错。

outb()和friends是特定于硬件的。首先传递value参数,然后传递port参数,这与大多数DOS实现的顺序相反。

示例:
intb(p)表示从端口p输入一个字节。
outsw(p,d,l)表示输出从内存地址d开始的l个字到端口p

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
D:. │ Read me.txt │ 目录里面的文件.txt │ └─Rootkit ├─1。 内核hook │ ├─1)object hook │ │ 1)object hook.doc │ │ │ ├─2)ssdt hook │ │ 2)ssdt hook.doc │ │ SSDT Hook的妙用-对抗ring0 inline hook .doc │ │ swk0207.rar │ │ │ ├─3)inline-hook │ │ 360SuperKill学习之--恢复FSD的IRP处理函数.doc │ │ 3)inline-hook.doc │ │ cnnic.rar │ │ ExpLookupHandleTableEntry.rar │ │ ExpLookupHandleTableEntry2.rar │ │ kill_SecuritySoftware.rar │ │ PsLookupProcessByProcessId执行流程学习笔记.doc │ │ 句柄啊,3层表啊,ExpLookupHandleTableEntry啊.doc │ │ 干掉KV 2008, Rising等大部分杀软.doc │ │ 搜索未导出的函数地址.doc │ │ │ ├─4)idt hook │ │ bhwin_keysniff.rar │ │ IDT Hook .doc │ │ │ ├─5)IRP hook │ │ 5)IRP hook.doc │ │ irphook1.rar │ │ irphook2.rar │ │ irphook3.rar │ │ │ ├─6)SYSENTER hook │ │ 6)SYSENTER hook.doc │ │ SysEnterHook.rar │ │ │ ├─7)IAT HOOK │ │ 7)IAT HOOK.doc │ │ HybridHook.rar │ │ testtest.rar │ │ │ └─8)EAT HOOK │ 8)EAT HOOK.doc │ 利用导出表来禁止一些驱动程序的加载.doc │ 导出表钩子.rar │ ├─2。保护模式篇章第一部分: ring3进ring0之门 │ ├─1)通过调用门访问内核 │ │ 1)通过调用门访问内核.doc │ │ myCallGate.rar │ │ test.rar │ │ │ ├─2)通过中断门访问内核 │ │ 2)通过中断门访问内核.doc │ │ myIntGate.rar │ │ │ ├─3)通过任务门访问内核 │ │ 3)通过任务门访问内核.doc │ │ MyTaskGate.rar │ │ │ └─4)通过陷阱门访问内核 │ 4)通过陷阱门访问内核.doc │ exe.rar │ src.rar │ ├─3。保护模式篇章第二部分:windows分页机制 │ 1)windows分页机制.doc │ ├─4。保护模式篇章第三部分:直接访问硬件 │ ├─1)修改iopl,ring3直接访问硬件 │ │ 1)修改iopl,ring3直接访问硬件.doc │ │ drv.rar │ │ exe.rar │ │ │ ├─2)追加tss默认IO许可位图区域 │ │ 2)追加tss默认IO许可位图区域.doc │ │ drv.rar │
看雪学院 Rootkit 专题 1. 内核hook 对于hook,从ring3有很多,ring3到ring0也有很多,根据api调用环节递进的顺序,在每一个环节都有hook的机会,可以有int 2e或者sysenter hook,ssdt hook,inline hook ,irp hook,object hook,idt hook等等。在这里,我们逐个介绍。 1)object hook 2)ssdt hook 3)inline-hook 4)idt hook 5)IRP hook 6)SYSENTER hook 7)IAT HOOK 8)EAT HOOK 2. 保护模式篇章第一部分: ring3进ring0之门 1)通过调用门访问内核 2)通过中断门访问内核 3)通过任务门访问内核 4)通过陷阱门访问内核 3。保护模式篇章第二部分:windows分页机制 1)windows分页机制 4。保护模式篇章第三部分:直接访问硬件 1)修改iopl,ring3直接访问硬件 2)追加tss默认I/O许可位图区域 3)更改tss I/O许可位图指向 5。detour 修改函数执行路径,可用于对函数的控制流程进行重定路径。 1)detour补丁 6. 隐身术 1)文件隐藏 2)进程隐藏 3)注册表键值隐藏 4)驱动隐藏 5)进程中dll模块隐藏 6)更绝的隐藏进程中的dll模块,绕过IceSword的检测 7)端口隐藏 7。ring0中调用ring3程序 1) apc方式 2) deviceiocontrol 方式 8。进程线程监控 1)监控进程创建 2)杀线程 3)保护进程和屏蔽文件执行 9。其他 1)获取ntoskrnl.exe模块地址的几种办法 2)驱动感染技术扫盲 3)shadow ssdt学习笔记 4)高手进阶windows内核定时器之一 5)高手进阶windows内核定时器之二 6)运行期修改可执行文件的路径和Command Line 7)查找隐藏驱动 8)装载驱动的几种办法 9)内核中注入dll的一种流氓方法 10)另一种读写进程内存空间的方法 11)完整驱动感染代码 12)Hook Shadow SSDT 13)ring0检测隐藏进程
对于ROOTKIT专题的研究,主要涉及的技术有如下部分: . 内核hook 对于hook,从ring3有很多,ring3到ring0也有很多,根据api调用环节递进的顺序,在每一个环节都有hook的机会,可以有int 2e或者sysenter hook,ssdt hook,inline hook ,irp hook,object hook,idt hook等等。在这里,我们逐个介绍。 1)object hook 2)ssdt hook 3)inline-hook 4)idt hook 5)IRP hook 6)SYSENTER hook 7)IAT HOOK 8)EAT HOOK 2. 保护模式篇章第一部分: ring3进ring0之门 1)通过调用门访问内核 2)通过中断门访问内核 3)通过任务门访问内核 4)通过陷阱门访问内核 3。保护模式篇章第二部分:windows分页机制 1)windows分页机制 4。保护模式篇章第三部分:直接访问硬件 1)修改iopl,ring3直接访问硬件 2)追加tss默认I/O许可位图区域 3)更改tss I/O许可位图指向 5。detour 修改函数执行路径,可用于对函数的控制流程进行重定路径。 1)detour补丁 6. 隐身术 1)文件隐藏 2)进程隐藏 3)注册表键值隐藏 4)驱动隐藏 5)进程中dll模块隐藏 6)更绝的隐藏进程中的dll模块,绕过IceSword的检测 7)端口隐藏 7。ring0中调用ring3程序 1) apc方式 2) deviceiocontrol 方式 8。进程线程监控 1)监控进程创建 2)杀线程 3)保护进程和屏蔽文件执行 9。其他 1)获取ntoskrnl.exe模块地址的几种办法 2)驱动感染技术扫盲 3)shadow ssdt学习笔记 4)高手进阶windows内核定时器之一 5)高手进阶windows内核定时器之二 6)运行期修改可执行文件的路径和Command Line 7)查找隐藏驱动 8)装载驱动的几种办法 9)内核中注入dll的一种流氓方法 10)另一种读写进程内存空间的方法 11)完整驱动感染代码 12)Hook Shadow SSDT 13)ring0检测隐藏进程

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值