IDT详解

IDT,Interrupt Descriptor Table,中断描述符表是CPU用来处理中断和程序异常的。 一、有关IDT的基本知识 1、中断时一种机制,用来处理硬件需要向CPU输入信息的情况。 比如鼠标,键盘等。 2、中断和异常的产生是随机的,在CPU正常运行过程中随时可能产生。CPU的中断处理机制 3、中断可以由硬件产生(称为外部中断),也可以由软件产生(称为内部中断),在程序中写入int n指令可以产生n号中断和异常(n从0-ffh)。 4、同时CPU的中断异常机制还是重要特性的支...

阅读全文>>

ė300次浏览 60条评论 0

调试门测试(四) 简单总结

1) 当通过门,权限不变的时候,只会PUSH两个值:CS  返回地址 新的CS的值由调用门决定 2) 当通过门,权限改变的时候,会PUSH四个值:SS ESP CS  返回地址   新的CS的值由调用门决定  新的SS和ESP由TSS提供 3) 通过门调用时,要执行哪行代码有调用门决定,但使用RETF返回时,由堆栈中压人的值决定,这就是说,进门时只能按指定路线走,出门时可以翻墙(只要改变堆栈里面的值就可以想去哪去哪) 4) 可不可以再建个门出去呢?也就是用Call  当然可以了 前门进 后门出

阅读全文>>

ė323次浏览 60条评论 0

调用门测试(三) 参数传递

0x001 设置环境 eq 8003f048 0040EC03`00081030 0x002 测试代码 #include <windows.h> #include <stdio.h> DWORD x; DWORD y; DWORD z; void __declspec(naked) GateProc() { __asm{ pushad pushfd mov eax,[esp+0x24+0x8+0x8] mov DWORD ptr ds:[x],eax mov eax...

阅读全文>>

ė299次浏览 60条评论 0

调用门提权测试(二)

直接上代码, 能看懂就理解了 记录一下 #include <windows.h> #include <stdio.h> BYTE GDT[6]={0}; DWORD dwH2GValue; void __declspec(naked) GetRegister() { __asm{ pushad pushfd mov eax,0x8003f00c //读取高2G内存 mov ebx,[eax] mov dwH2GValue,ebx sgdt GDT; ...

阅读全文>>

ė370次浏览 60条评论 0

调用门测试(一)

0x01 调用门的基础知识 调用门执行流程 指令格式:CALL  CS:EIP(EIP是废弃的) 执行步骤: 1) 根据CS的值 查GDT表,找到对应的段描述符  这个描述符是一个调用门. 2) 在调用门描述符中存储另一个代码段段的选择子. 3) 选择子指向的段  段.Base + 偏移地址 就是真正要执行的地址. 0x02门描述符 0x03 构造调用门 eq 8003f048 0040EC00`00081020 0x0...

阅读全文>>

ė332次浏览 60条评论 0

windbg 常用命令

目录: (1) u命令(反汇编) (2) dt命令(查看数据结构) (3) ln命令(查找就近的符号) (4) x命令(显示模块的符号) (5) k命令(显示调用栈) (6) d命令(以数据方式显示) (7) b命令(断点) (8) lm lmvm (显示模块信息) (9) .reload (重加载模块) (10) !process !thread .process .thread (查看进程线程信息) (11) !object (查看对象信息) (1...

阅读全文>>

ė327次浏览 60条评论 0

代码跨段 详细步骤

本质就是修改CS段寄存器 JMP 0x20:0x004183D7 CPU如何执行这行代码? (1) 段选择子拆分 0x20 对应二进制形式 0000 0000 0010 0000 RPL = 00    TI = 0 Index = 4 (2) 查表得到段描述符 TI = 0 所以查GDT表 Index = 4 找到对应的段描述符 四种情况可以跳转:代码段、调用门、TSS任务段、任务门 (3) 权限检查 如果是非一致代码段,要求:CPL == DPL 并且 RPL <= DPL 如果是一致代码段,要求:CP...

阅读全文>>

ė310次浏览 60条评论 0

CPL DPL RPL

数据段的权限检查 参考如下代码: 比如当前程序处于0环,也就是说CPL=0 Mov ax,000B //1011   RPL = 3 Mov ds,ax //ax指向的段描述符的DPL = 0 数据段的权限检查: CPL <= DPL  并且 RPL <= DPL (数值上的比较) 注意: 代码段和系统段描述符中的检查方式并不一样,具体参加后面课程. 总结: CPL  CPU当前的权限级别 DPL  如果你想访问我,你应该...

阅读全文>>

ė270次浏览 60条评论 0

D/B位

ė262次浏览 60条评论 0

分析GDT表

0x001 读取GDT表 (删除部分 00000000 ) 0: kd> dq 8003f000 l 3ff 8003f000  00000000`00000000 00cf9b00`0000ffff 8003f010  00cf9300`0000ffff 00cffb00`0000ffff 8003f020  00cff300`0000ffff 80008b04`200020ab 8003f030  ffc093df`f0000001 0040f300`00000fff 8003f040  0000f200`040...

阅读全文>>

ė422次浏览 60条评论 0

保护模式(二) 段描述符属性:S位 TYPE域

根据段描述符进行的拆分 S位 S = 1 代码段或者数据段描述符 S = 0 系统段描述符 S=1的TYPE域作用 A 访问位,表示该位最后一次被操作系统清零后,该段是否被访问过.每当处理器将该段选择符置入某个段寄存器时,就将该位置1. W 是否可写 E 扩展方向 A 访问位 R 可读位 C 一致位 C = 1 一致代码段 C = 0 非一致代码段 S=0 的时候 系统段的分类 直接...

阅读全文>>

ė358次浏览 60条评论 0

windbg + VirtualKD + vmware

0x001 搭建过程 vmware上安装干净版本的xp3, [记住一定要干净版本的, 我昨天用了我以前的一个xp !process命令一直不能使用] 把VirtualKD 的target目录 复制到 虚拟机中 运行 直接确定即可 本机打开: 配置调试器(找到windbg的位置,点击确定即可): 0x002 配置 符号表 重启虚拟机,运行, 会自动打开windbg 运行 g 命令 接着下载符号: S...

阅读全文>>

ė305次浏览 60条评论 0

[转]GDT(全局描述符表)和LDT(局部描述符表)

每个程序都有自己的LDT,但是同一台计算机上的所有程序共享一个GDT。LDT描述局部于每个程序的段,包括其代码、数据、堆栈等。GDT描述系统段,包括操作系统本身。 ①全局描述符表GDT(Global Descriptor Table)在整个系统中,全局描述符表GDT只有一张(一个处理器对应一个GDT),GDT可以被放在内存的任何位置,但CPU必须知道GDT的入口,也就是基地址放在哪里,Intel的设计者门提供了一个寄存器GDTR用来存放GDT的入口地址,程序员将GDT设定在内存中某个位置之后,可以通过LGDT指令将GDT的入口地址装入此积存器,从此以后,CPU就根据此寄存器中的内容作为G...

阅读全文>>

ė274次浏览 60条评论 0

保护模式学习(一)

先记住几个结构 1、段寄存器的结构(96位) Selector : 显示  16位  选择子 Attribute: 隐藏  属性16位 Base: 32位 Limit: 32位 2 段描述符 (GDT表) r gdtr r gdtl 一共64位,记住每个结构 3 段选择子 16位

阅读全文>>

ė339次浏览 60条评论 0

滴水中级课程目录

流沙 | 读书 | 2018-03-12
网上不开课了, 海东老师的QQ号也弄丢了 郁闷。 项目的目录,收集的 中级班(上) 注:必须掌握基础课程全部内容才可以入学,可申请免费重修一次! 1、开班时间:拍下付款后请及时联系客服QQ 2、课程内容:保护模式、系统调用、进程与线程、驱动开发、句柄表、APC机制 3、课程时间:3个月 4、讲师:海东老师 5、费用:698元高级会员费+4499元线上辅导班费用(线上教学,不可退款) 6、上课时间:周一至周五21:00-22:30 7、上课方式:好视通网络教室(支持PC端,安卓手机端,苹果手机端,平板和智能电视) ...

阅读全文>>

ė457次浏览 62条评论 0

记录一次后台移植(thinkphp)

流沙 | 运维 | 2018-02-28
0x01 背景 项目开发:微信小程序 环境部署: 需要将app的后台代码移植到腾讯云的服务上,数据库还是在阿里云那边。 config.php 文件的'DB_HOST'   修改属性 0x02 允许mysql远程连接 1、改表法 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" mysql -u root -p  mysql&g...

阅读全文>>

ė337次浏览 60条评论 0

已回上海

流沙 | 随笔 | 2018-02-22
十几天没怎么摸电脑了, 回家过了个年,两个电脑虽然扛回去了, 但是一直没怎么用, 过年回家事情挺多的, 刚刚到出租屋, 工作的事情解决掉以后, 就想起了自己的博客, 这几天还不用上班, 准备把 第二期的教程, 完整的看完, 后天还要去练车,  以前在百度博客写自己的心情, 下笔很快, 也很有调理, 后来就不怎么写了, 嫌麻烦吧.. 今年的事情很多 1\ 换工作 2\ 驾照 3\ 结婚 4\ 房子装修 5\ 泰国旅游 6\ 买车 ........

阅读全文>>

ė403次浏览 60条评论 0

硬编码总结

流沙 | 网络安全 | 2018-02-11
理解定长 理解可变长 MOdR/M SIB 全文下载 直接分享给大家,DT的课件 硬编码.xls Intel白皮书.zip

阅读全文>>

ė375次浏览 60条评论 0

硬编码——经典定长指令

流沙 | C/C++ | 2018-02-08
经典定长指令上(修改寄存器) 1、PUSH/POP 特点: 0x50 PUSH EAX 1、记住32位、16、8位的通用寄存器,按照顺序记住. 0x51 PUSH ECX 0x52 PUSH EDX 2、将操作数编码到指令当中 0x53 PUSH EBX 0x54 PUSH ESP 0x55 PUSH EBP 0x56 PUSH ESI 0x57 PUSH EDI 0x58 POP EAX 0x59 POP ECX 0x5A POP EDX 0x5B POP EBX 0x5C POP...

阅读全文>>

ė737次浏览 60条评论 0

申请

流沙 | | 2018-02-08
源代码下载地址 PeTool2018 - 加壳段.rar shell.rar

阅读全文>>

ė314次浏览 60条评论 0

Ɣ回顶部