自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

转载 [保护模式]测试一致代码段

1.首先在被调试机器里定义一下代码// r3.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdio.h>#include <stdlib.h>int gupdate_value = 0;int main(int argc,char * argv[])...

2019-07-28 17:16:00 125

转载 [保护模式]联系1 三环访问高2G

// 三环读高两G.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>int _tmain(int argc, _TCHAR* argv[]){ int* gdtAddress = NULL; //定义个变量 getchar(); gdtA...

2019-07-22 14:50:00 179

转载 15.[保护模式]TSS任务门

1.任务门描述符(跨表)本身在IDT 跨表查GDT 的TSS任务门的 S=0, TYPE=0101。2.任务门的执行过程3.为什么有了任务段还要有任务门呢?CPU提供任务门,是为了方便访问任务段。在CPU发生二重错误的时候,会直接跳到 8 号中断,而 8 号中断就是任务门(这是Windows xp 系统设计的任务门),这意味着什么?一旦进入 8 号中...

2019-07-18 16:12:00 204

转载 14.[保护模式]TSS任务段

1.TSS的结构:  TSS不是寄存器,它是一个内存;(包含所有寄存器的值)2.TSS的作用:如果切换一个线程那么一定需要切换寄存器;3.CPU怎么找到TSS内存块呢? 通过TaskRegister段寄存器  TaskRegister段寄存器 的值是CPU启动的时候通过GDT表中 TSS Descrptor (段描...

2019-07-18 13:37:00 433

转载 13.[保护模式]陷阱门

1.陷阱门描述符 0D111 F唯一的区别:可屏蔽中断受IF影响转载于:https://www.cnblogs.com/hanhandaren/p/11205734.html

2019-07-18 10:45:00 96

转载 12.[保护模式]中断门

Windows没有使用调用门,但是使用了中断门:<1>系统调用<2> 调试1.IDT 中断描述符表    2.IDT表的构成  3.中断门的描述符 0D110 E除了不能传参数和8-12位,其他与中断门基本无异    转载于:https://www.cnblogs.co...

2019-07-18 10:36:00 81

转载 11.[保护模式]调用门

1.调用门执行流程  指令格式:CALL CS:EIP(EIP是废弃的)执行步骤:  根据CS的值查GDT表,找到对应段描述符,这个描述符是一个调用门在调用门描述符中存储另一个代码段段的选择子选择子指向的段 ,段.BASE +偏移地址 就是真正执行的地址2.门描述符S位一定是0; 只有为0 才是系统段描述符TYPE位为1100的...

2019-07-17 22:21:00 170

转载 10.[保护模式]长调用与短调用

CALL FAR长调用最终需要执行的代码由CS段选择子找到的调用门决定的提权的时候堆栈发生了切换,保留原CS,ESP,SS返回也是RETF总结:    1.跨段调用时,一旦有权限切换,就会切换堆栈;  2.CS的权限如果没有变更,那么只换CS;’CS的权限一旦发生改变,SS的权限也要随之改变,CS与SS的等级必须一样;  3....

2019-07-17 16:33:00 178

转载 9.[保护模式]代码的跨段跳转流程

  IRETD图上错了段描述符如果是数据段是不允许跳转的!4.权限检查:    如果非一致代码段,要求CPL == DPL 并且 RPL<=DPL (应用层不能直接访问的)    如果是一致代码段,要求 :CPL >=DPL;(电脑内核提供可以直接有3环访问的(共享段))5.加载段描述符    通过上面的检查...

2019-07-17 15:18:00 110

转载 8.[保护模式]段权限检查

1.CPU的分级 2.如何查看程序处于几环?  CPL:当前特权级  CS和SS中存储的段选择子后两位3.DPL:描述符的特权级别:  举例说明:MOV DS,AX  第一步:先判断CS代码段是否有权限执行代码  第二步:如果有权限执行,那么把AX的值复制给DS (ds=ax),如果ds原本就等于ax,那么啥也不做  GDT RPL>...

2019-07-17 14:43:00 165

转载 7.[保护模式]段描述符DB位

B = 0 64K 65535字节B = 1 4G(指定的虚拟4GB空间)如果需要去16位的加个前缀67:1.DB位位于第22位对以下三种情况都有影响:只要是代码段都为B, 只要是数据段都为D情况一: 对CS段的影响    D =1 采用32位寻址方式    D =0 采用16位寻址方式    前缀67 改变寻址方式情况二:对SS段的影...

2019-07-17 11:52:00 146

转载 6.[保护模式]段描述符属性_S位_TYPE域

1.S位S = 1 代码段或者数据段描述符S = 0 系统段描述符注意:DPL在WINDOWS内只会出现两种情况,全是0或者1代码段那么P为已经确定为1S也为1那么DPL 为0 则是9为1 则是F2.TYPE域TYPE域小于8则为数据段大于8则是代码段数据段说明:8A 代表是否被加载如果访问过则为1 反之则为0...

2019-07-14 15:25:00 171

转载 5.[保护模式]段描述符属性_P位_G位

1.P位P = 1 段描述符有效P = 0 段描述符无效2.段描述符与段寄存器的对应关系Struct SegMent{ WORD Selector; //16位段选择子 WORD Attributes; //16位属性 对应的高4字节,从8位开始到23位结束 刚好16字节 DWORD Base; ...

2019-07-12 21:07:00 235

转载 4.Windows 用户态调试模型

转载于:https://www.cnblogs.com/hanhandaren/p/11173014.html

2019-07-11 21:53:00 137

转载 3.硬件断点、陷阱和JTAG

R/W 0 和LEN 0对应断点0线性地址;DR则是调试寄存器硬件断点:基于CPU的调试寄存器可以对代码、数据访问和IO访问设置断点断点被触发时,CPU产生的是1号异常受调试寄存器的数量限制WinDbg 的ba命令设置的便是硬件断点在多处理器系统中,硬件断点是与CPU相关的,也就是说针对一个CPU设置的硬件断点并适用于其他CPU...

2019-07-11 21:46:00 284

转载 2.[保护模式]段寄存器

1.段寄存器结构段寄存器一共96位,但是可见部分只有16位Struct SegMent{ WORD Selector; //16位段选择子 WORD Attributes; //16位属性 DWORD Base; //32位基址 DWORD Limit; //32位段限长}其中红色...

2019-07-10 14:17:00 394

转载 1.[保护模式]

1.什么是保护模式?  x86 cpu 的3个模式:实模式、保护模式、和虚拟8086模式。实模式基本运行在16位保护模式基本运行在32位和64位下虚拟8086基本上是为了兼容两者的一种机制电脑开机实际上是先进入实模式而后再进入保护模式的,并非一开机则进入保护模式!2.保护模式有什么特点?  段的机制   页的机制转载于:http...

2019-07-10 11:57:00 71

转载 经典变长指令_SIB

如果查表得出这样的格式[--][--]+disp8,那么说明光靠Table 2-2确定不了,还要往后跟一个字节,SIB转载于:https://www.cnblogs.com/hanhandaren/p/11162519.html

2019-07-10 11:00:00 276

转载 经典变长指令_RegOpcode

如果3-5字段不是描述Reg 而是描述Opcode举例说明:80 65 08 FF猹表步骤:1.第一个字节为80 查  Table-2表,得到对应结构:Eb,ib2.第二个字节为ModR/M字段,拆分为65为:01 100 101Mod 与R/M字段 查Table2-2 得到对应结构:[EBP+DIS8]3.100字段 查表TableA -6得...

2019-07-10 10:24:00 408

转载 经典变长指令_ModR/M

Mod (6.7)位和R/M(0.1.2)位组合查询看下表2-2经典变长指令_ModR/M0x88 MOV Eb,Gb G:通用寄存器0x89 MOV Ev,Gv E:寄存器/内存0x8A MOV Gb,Eb B:字节0x8B MOV Gv,Ev v:Word,doubleword or quadword...

2019-07-09 22:37:00 538

转载 经典定长指令_修改EIP

1. 0x70-0x7FJccf64, Jb - Short-displacement jump on conditionJccf64, Jb -短位移跳跃条件指令后跟着一个字节: 如 70 8B //小于80向下跳,大于80向上跳;8B表示要跳转的地方距离当前位置有多远!如果跳转的地址大于限制位,那么则会自动改成一下编码:E2跳不跳转,取决...

2019-07-09 18:25:00 138

转载 经典定长指令_修改ERX

1.PUSH / POP0x50 push eax0x51 push ecx0x52 push edx0x53 push ebx0x54 push esp0x55 push ebp0x56 push esi0x57 push edi- - - - - - -...

2019-07-09 16:55:00 165

转载 定长指令与变长指令

Opcode 最多3字节,最少1字节,最重要的组成部分1.如歌区分指令定长还是变长? 1.最关键的表格 ---------Intel白皮书(“英特尔® 64 和 IA-32 架构开发人员手册”) A.2.4.1   2.Zz表示法其中 Eb ,lb或者Eb,Gb 相搭的则为变长指令,反之则为定长指令!E A ModR/M byte fo...

2019-07-09 16:16:00 2717

转载 前缀指令

冒号前则为前缀指令2.前缀指令是分组的:1.LOCK 和REPEAT前缀指令:    LOCK   F0 //多核同步 [锁地址总线]   REPNE/REPNZ F2 //重复执行后面的指令    REP/REPZ ...

2019-07-09 13:42:00 469

转载 远程注入代码

1.复制代码的编写原则:  不能有全局变量  不能使用常量字符串  不能使用系统调用  不能嵌套调用其他函数 1 // 远程代码注入.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <windows.h> 6 //自己定义个结构体,...

2019-07-09 11:15:00 433

转载 模块隐藏

1.模块隐藏之断链  TEB它记录的相关线程的信息,每一个线程都有自己的TEB,FS:[0]即是当前线程的TEB.            MOV eax,fs:[0]   2.  PEB存放进程信息,每个进程都有自己的PEB信息,TEB偏移0x30即当前进程的PEB;            MOV eax,fs:[0x30]            mov ...

2019-07-07 22:10:00 328

转载 远程线程注入

1.远程注入流程:  在进程A中创建远程线程,将线程函数指向为LoadLibrary();具体实现步骤:在进程A中分配空间,存储“A.DLL”获取LoadLibrary函数的地址创建远程线程,执行LoadLibrary(); 1 // 远程线程注入.cpp : 定义控制台应用程序的入口点。 2 // 3 4 5 #incl...

2019-07-07 19:59:00 115

转载 远程线程

CreateRemoteThread是一个Windows API函数,它能够创建一个在其它进程地址空间中运行的线程(也称:创建远程线程).。HANDLE WINAPI CreateRemoteThread(__in HANDLE hProcess,__in LPSECURITY_ATTRIBUTES lpThreadAttributes,__in SIZE_T dwSta...

2019-07-07 17:56:00 102

转载 内存映射文件

1 // 文件映射.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include "windows.h" 6 7 #define MAPPINGNAME "共享文件" 8 9 /*10 通过文件映射 读写文件11 *参数:lpcFile 文件路径12 *返回值:1 成功...

2019-07-07 17:00:00 59

转载 文件系统

2.卷相关API获取卷 GetLogicalDrives()获取一个所卷的盘符的字符串GetLogicalDrives()获取卷的类型 GetLogicalDrives()获取卷的详细类型 GetVolumeinformation()转载于:https://www.cnblogs.com/hanhandaren/p/11146346.ht...

2019-07-07 15:07:00 64

转载 私有内存的申请与释放

1.私有内存指的是物理页自己用,无法共享2.同样一块内存被多个进程共享时,则为共享内存Map  一、申请内存的两种方式:通过VirtualAlloc/VirtualAllocEx申请的:Private Memory //底层的实现完全一样通过CreateFileMapping映射的:Mapped Memory二、内存的申请与释放:LPVOI...

2019-07-07 12:49:00 222

转载 虚拟内存与物理内存

线性地址都有4G,但未必都能访问所有需要记录,哪些地方转载于:https://www.cnblogs.com/hanhandaren/p/11143967.html

2019-07-06 20:04:00 77

转载 子窗口控件

子窗口控件:  Windows提供了几个预定义的窗口类以方便我们的使用,我们一般叫做子窗口控件,简称控件。.控件会自己处理消息,并在自己状态发生改变时通知父窗口预定义的控件有:按钮、复选框、编辑框、静态字符串标签和滚动条等按钮通过一个宏 LOWORD获取按钮wParam低16位如case VM_COMMAND:{ switch(LOWORD(...

2019-07-06 17:57:00 94

转载 第一个Win32程序

// 第一个Win32窗口.cpp : 定义应用程序的入口点。//#include "stdafx.h"#include "第一个Win32窗口.h"#include <Windows.h>#include "stdio.h"HWND hwnd;PCHAR szOutBuff;LRESULT CALLBACK WndProc(H...

2019-07-06 15:31:00 80

转载 消息队列

1.什么是消息?  当我们点击鼠标的时候,或者当我们按下键盘的时候,操作系统都要把这些动作记录下来,存储到一个结构体中,这个结构体就是消息;   消息队列就是一个大型的“链表”消息的产生:  鼠标点击产生一个消息 --》系统捕获消息--》在内核遍历所有的句柄看是谁产生的--》找到后将捕获的消息结构体给遍历到的进程里面的线程;  由于每个线程都有自己的一个消息队...

2019-07-06 14:51:00 66

转载 窗口的本质

1.窗口的本质 :GUI GDI  ntoskrnl.exe 和Win32K.sys 两个文件最重要,Kernel32.dll只是提供一个接口;真正的实现都在内核HANDLE 是私有句柄表的一个索引;HWND 窗口句柄 是全局句柄表的一个索引;所有进程共用;2.GDI 图形设备接口  1.设备对象(HWND)  2.DC(设备上下文,Devi...

2019-07-05 23:58:00 117

转载 事件

1.通知类型 HANDLECreateEvent(LPSECURITY_ATTRIBUTESlpEventAttributes,// 安全属性BOOLbManualReset,// 复位方式BOOLbInitialState,// 初始状态LPCTSTRlpName // 对象名称); 该函数创建一个Event同步对象,如果CreateEvent调用...

2019-07-05 22:34:00 95

转载 互斥体

  1.互斥体不同进程间的“临界区”,跨进程#include "stdafx.h"#include <windows.h>int main(int argc, char* argv[]){ //创建一个互斥体 HANDLE g_hMutex = CreateMutex(NULL, FALSE, (LPCWSTR)"XYZ")...

2019-07-05 17:58:00 177

转载 临界区

1.线程安全问题:  每个线程都有自己的栈,而局部变量是存储在栈中的,,这就意味着每个线程都有自己的一份“局部变量”,如果线程仅仅使用“局部变量”那么就不存在线程安全问题、  那如果多个线程共用一个全局变量呢?2.临界区实现之线程锁:创建全局变量:CRITICAL_SECTION cs;初始化全局变量:InitializeCriticalSection (&a...

2019-07-05 17:05:00 116

转载 线程的控制

1.如何让线程停下来?相应函数:让自己停下来:  Sleep()函数让别人停下来(挂起):  SuspendThread()函数线程恢复:  ResumeThread()函数一个线程挂起几次,就需要恢复几次;2.等待线程结束WaitForSingleObject(); ...

2019-07-05 16:21:00 66

空空如也

空空如也

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

TA关注的人

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