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...
直接上代码, 能看懂就理解了
记录一下
#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; ...
0x01 调用门的基础知识
调用门执行流程
指令格式:CALL CS:EIP(EIP是废弃的)
执行步骤:
1) 根据CS的值 查GDT表,找到对应的段描述符 这个描述符是一个调用门.
2) 在调用门描述符中存储另一个代码段段的选择子.
3) 选择子指向的段 段.Base + 偏移地址 就是真正要执行的地址.
0x02门描述符
0x03 构造调用门
eq 8003f048 0040EC00`00081020
0x0...
目录:
(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...
本质就是修改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...
数据段的权限检查
参考如下代码:
比如当前程序处于0环,也就是说CPL=0
Mov ax,000B //1011 RPL = 3
Mov ds,ax //ax指向的段描述符的DPL = 0
数据段的权限检查:
CPL <= DPL 并且 RPL <= DPL (数值上的比较)
注意:
代码段和系统段描述符中的检查方式并不一样,具体参加后面课程.
总结:
CPL CPU当前的权限级别
DPL 如果你想访问我,你应该...
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...
根据段描述符进行的拆分
S位
S = 1 代码段或者数据段描述符
S = 0 系统段描述符
S=1的TYPE域作用
A 访问位,表示该位最后一次被操作系统清零后,该段是否被访问过.每当处理器将该段选择符置入某个段寄存器时,就将该位置1.
W 是否可写
E 扩展方向
A 访问位
R 可读位
C 一致位
C = 1 一致代码段
C = 0 非一致代码段
S=0 的时候 系统段的分类
直接...
0x001 搭建过程
vmware上安装干净版本的xp3, [记住一定要干净版本的, 我昨天用了我以前的一个xp !process命令一直不能使用]
把VirtualKD 的target目录 复制到 虚拟机中
运行
直接确定即可
本机打开:
配置调试器(找到windbg的位置,点击确定即可):
0x002 配置 符号表
重启虚拟机,运行, 会自动打开windbg
运行 g 命令
接着下载符号: S...
每个程序都有自己的LDT,但是同一台计算机上的所有程序共享一个GDT。LDT描述局部于每个程序的段,包括其代码、数据、堆栈等。GDT描述系统段,包括操作系统本身。
①全局描述符表GDT(Global Descriptor Table)在整个系统中,全局描述符表GDT只有一张(一个处理器对应一个GDT),GDT可以被放在内存的任何位置,但CPU必须知道GDT的入口,也就是基地址放在哪里,Intel的设计者门提供了一个寄存器GDTR用来存放GDT的入口地址,程序员将GDT设定在内存中某个位置之后,可以通过LGDT指令将GDT的入口地址装入此积存器,从此以后,CPU就根据此寄存器中的内容作为G...
先记住几个结构
1、段寄存器的结构(96位)
Selector : 显示 16位 选择子
Attribute: 隐藏 属性16位
Base: 32位
Limit: 32位
2 段描述符 (GDT表)
r gdtr
r gdtl
一共64位,记住每个结构
3 段选择子
16位
购买请联系QQ: 770612230 项目的目录,收集的 中级班(上)注:必须掌握基础课程全部内容才可以入学,可申请免费重修一次!1、开班时间:拍下付款后请及时联系客服QQ2、课程内容:保护模式、系统调用、进程与线程、驱动开发、句柄表、APC机制3、课程时间:3个月4、讲师:海东老师5、费用:698元高级会员费+4499元线上辅导班费用(线上教学,不可退款)6、上课时间:周一至周五21:00-22:307、上课方式:好视通网络教室(支持PC端,安卓手机端,苹果手机端,平板和智能电视)8、教学形式:上课前先看在线视频,提前做练习。上课,老师讲解知识点,答疑解惑。学生轮流课堂做实验。9...
0x01 背景
项目开发:微信小程序
环境部署: 需要将app的后台代码移植到腾讯云的服务上,数据库还是在阿里云那边。 config.php 文件的'DB_HOST' 修改属性
0x02 允许mysql远程连接
1、改表法
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -p
mysql&g...
十几天没怎么摸电脑了, 回家过了个年,两个电脑虽然扛回去了, 但是一直没怎么用, 过年回家事情挺多的,
刚刚到出租屋, 工作的事情解决掉以后, 就想起了自己的博客, 这几天还不用上班, 准备把 第二期的教程, 完整的看完, 后天还要去练车,
以前在百度博客写自己的心情, 下笔很快, 也很有调理, 后来就不怎么写了, 嫌麻烦吧..
今年的事情很多
1\ 换工作
2\ 驾照
3\ 结婚
4\ 房子装修
5\ 泰国旅游
6\ 买车
........