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...

阅读全文>>

ė183次浏览 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...

阅读全文>>

ė189次浏览 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  如果你想访问我,你应该...

阅读全文>>

ė158次浏览 60条评论 0

D/B位

ė159次浏览 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...

阅读全文>>

ė257次浏览 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 的时候 系统段的分类 直接...

阅读全文>>

ė215次浏览 60条评论 0

windbg + VirtualKD + vmware

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

阅读全文>>

ė191次浏览 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...

阅读全文>>

ė176次浏览 60条评论 0

保护模式学习(一)

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

阅读全文>>

ė199次浏览 60条评论 0

滴水中级课程目录

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

阅读全文>>

ė223次浏览 60条评论 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...

阅读全文>>

ė198次浏览 60条评论 0

已回上海

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

阅读全文>>

ė234次浏览 60条评论 0

硬编码总结

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

阅读全文>>

ė264次浏览 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...

阅读全文>>

ė401次浏览 60条评论 0

申请

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

阅读全文>>

ė204次浏览 60条评论 0

进程通信 - 匿名管道

流沙 | C/C++ | 2018-02-06
0x01 核心代码 父进程: HANDLE hRead; HANDLE hWrite; SECURITY_ATTRIBUTES sa; sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; sa.nLength = sizeof(SECURITY_ATTRIBUTES); if(!CreatePi...

阅读全文>>

ė202次浏览 60条评论 0

进程通信 - 共享内存

流沙 | C/C++ | 2018-02-06
0x01 核心代码 发送端代码: HANDLE hMapObject; HANDLE hMapView; //创建FileMapping对象 hMapObject = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x1000,TEXT("shared")); if(!hMapObject) { MessageBox(NULL,TEXT("共享内存失败"),TEXT("Error"),MB_OK); ...

阅读全文>>

ė237次浏览 60条评论 0

进程通信 - SendMessage

流沙 | C/C++ | 2018-02-06
核心代码: 发送端代码: HWND hwnd = ::FindWindow(NULL,TEXT("接收端窗口名")); if(hwnd == NULL) { MessageBox(0,TEXT("没找到窗口"),TEXT("ERROR"),MB_OK); } else { // 发送消息 //SendMessage(hwnd,WM_USER+0x1,NULL, (LPARAM)100...

阅读全文>>

ė216次浏览 60条评论 0

测试InlineHook

流沙 | C/C++ | 2018-02-04
0x01主要是针对内部函数的hook 这里有需要注意的地方 内部含糊的地址 HOOK的位置 保存现场: pushfd  pushad 原本硬编码的恢复 extern "C" _declspec(naked)void HookProc() { //保存现场 _asm { pushad pushfd } //获取寄存器 _asm { mov reg.Eax,eax mov reg.Ecx,ecx mov reg.Ebx,ebx mov ...

阅读全文>>

ė249次浏览 60条评论 0

IATHOOK详细讲解

流沙 | C/C++ | 2018-02-02
0x01 HOOK函数的编写 有一定的格式要求 直接直接hook MessageBoxA 函数格式 int WINAPI NewMessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box sty...

阅读全文>>

ė202次浏览 60条评论 0

Ɣ回顶部