摘要: C语言第四讲,typedef 关键字,以及作用域 一丶typedef关键字 在C语言中,有typedef 关键字,这个关键字的作用就是允许你为类型定义一个新的名字,也就是 起个别的名字 例如: 那么以后,我们定义unsigned int 类型的变量的时候,这不用敲写 unsigned int 了.直 阅读全文
posted @ 2018-02-18 17:44 iBinary 阅读(1960) 评论(0) 推荐(0) 编辑
摘要: C语言第三讲,基本数据类型 一丶基本数据类型讲解 在C语言当中,有四种基本数据类型 分别是: 整形 浮点型 指针 聚合类型(数组和结构) 整型家族包括: 字符 短整型 整形 长整型 ** 都分为有符号和无符号的区别 ** ** PS: 听上去长整形比短整型表示的值一样大,但是不一定.** 规则: 长 阅读全文
posted @ 2018-02-18 17:28 iBinary 阅读(936) 评论(0) 推荐(0) 编辑
摘要: 64位内核第二讲,进程保护. 一丶什么是保护. 什么是保护. 比如我们安装了xxx杀毒软件.那么此时你用任务管理器关闭.是关闭不了的.原因是内核已经做了保护. 那么去掉保护的前提就是你要给自己的软件做保护. 比如我们给计算器做保护. 例如下图. 做保护.以前的病毒作者.都是想要退出xxx杀毒软件.  阅读全文
posted @ 2018-02-01 22:04 iBinary 阅读(5848) 评论(0) 推荐(3) 编辑
摘要: x64内核HOOK技术之拦截进程.拦截线程.拦截模块 一丶为什么讲解HOOK技术. 在32系统下, 例如我们要HOOK SSDT表,那么直接讲CR0的内存保护属性去掉. 直接讲表的地址修改即可. 但是在64位系统下,不可以这样操作了. 第一是因为 SSDT表加密了. 第二是 SSDT表你就算解密了. 阅读全文
posted @ 2018-02-01 15:38 iBinary 阅读(10105) 评论(6) 推荐(1) 编辑
摘要: 64位内核第一讲,和32位内核的区别 双击调试配置请查看 连接: https://www.cnblogs.com/aliflycoris/p/5877323.html 一丶编译的区别. 首先,还是使用WDK7.1.7600编写. 但是编译的时候,要使用x64来编译. 其代码框架不变. 1.驱动加载 阅读全文
posted @ 2018-02-01 00:47 iBinary 阅读(3162) 评论(0) 推荐(0) 编辑
摘要: 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数地址则是操作系统给的. 因为中断是CPU和操作系统通信的一种方式. 查看IDTR (IDT表)第三项 阅读全文
posted @ 2018-01-25 01:16 iBinary 阅读(1350) 评论(0) 推荐(1) 编辑
摘要: 内核知识第十一讲,门,以及中断和中断异常. 一丶TSS和TR寄存器. 首先,CUP在执行代码的时候.是按照任务执行的 每个任务有一个任务状态段TSS 用于保护任务的有关信息.在任务内变换特权级和任务切换的时候.要用到这些信息. 这个就是TSS任务状态段. 而在windows 80386中.有两种系统 阅读全文
posted @ 2018-01-23 23:56 iBinary 阅读(1247) 评论(0) 推荐(2) 编辑
摘要: 内核知识第十讲,内核结构体简介.以及自己实现内存读写功能. 前言: 不知道大家学习逆向技术的时候.有没有听说过什么驱动过保护. 什么驱动读写xxx的.而今天就讲解一下其原理. PS: 讲解原理还有简单的Demo. 请大家学习逆向技术.并做好信息安全. 而不是要求大家去做黑产. PS: 只讲今天表中有 阅读全文
posted @ 2018-01-20 19:47 iBinary 阅读(4239) 评论(1) 推荐(2) 编辑
摘要: 内核知识第九讲,32位下的分页管理,36位下的分页管理.以及64位下的分页管理 一丶熟悉WinDbg的常见命令. dd 虚拟地址 显示内存. !dd 加上!, ! dd 物理地址 专门用于显示物理地址的. !PTE 虚拟地址: 微软给你计算出PDE,和PTE的虚拟地址的位置.(自动查表并且进行操作) 阅读全文
posted @ 2018-01-19 03:29 iBinary 阅读(2792) 评论(2) 推荐(3) 编辑
摘要: 内核知识第八讲,PDE,PTE,页目录表,页表的内存管理 一丶查看GDT表. 我们通过WinDbg + 虚拟机可以进行双机调试.调试一下看下GDT表 我们知道,GDT表中.存储的是存储段信息. 保存了一系列的段和内存的属性. 但是微软并没有使用. 我们可以通过ring3的段寄存器. 当作GDT表的下 阅读全文
posted @ 2018-01-18 02:18 iBinary 阅读(16408) 评论(2) 推荐(3) 编辑
摘要: 内核知识第七讲,内核中设备常用的三种通信方式,以及控制回调的编写 一丶ring3和ring0下的三种通讯方式 ring3和ring0下有常用三种通信方式: 1.缓冲区通信方式 2.直接IO通信方式 3.其它通信方式 缓冲区通信方式 我们的ring3和ring0通讯的时候.ring3会给一个虚拟地址. 阅读全文
posted @ 2018-01-16 22:40 iBinary 阅读(1508) 评论(1) 推荐(1) 编辑
摘要: 内核知识第六讲,内核编写规范,以及获取GDT表 一丶内核驱动编写规范 我们都知道,在ring3下,如果我们的程序出错了.那么就崩溃了.但是在ring0下,只要我们的程序崩溃了.那么直接就蓝屏了. 那么有那些规范? 1.最基本的检查要有. 比如检查指针是否为NULL,基本的校验错误必须有 2.对内存进 阅读全文
posted @ 2018-01-16 00:51 iBinary 阅读(1890) 评论(1) 推荐(1) 编辑
摘要: VS2015配置内核WDK7600环境,32位下. 学习内核驱动的编写,就要会配置环境.不然总是用记事本编写.比较不方便. 环境配置如下. 1.首先下载WDK7600, 课堂资料代码中已经上传.链接:https://pan.baidu.com/s/1o9PjpUU 密码:k5sp 2.VS2015下 阅读全文
posted @ 2018-01-16 00:12 iBinary 阅读(3840) 评论(0) 推荐(2) 编辑
摘要: 内核知识第五讲.驱动框架编写,以及3环和0环通信. 一丶了解内核驱动加载方式 内核加载方式有两种方式. 1.动态加载方式. 2.静态加载方式 动态加载方式: 动态态加载方式则是调用3环API 进行代码加载. 详情请点击 : 内核驱动加载工具的编写. 静态加载方式 静态的加载方式则是利用 后缀为.in 阅读全文
posted @ 2018-01-14 16:43 iBinary 阅读(2760) 评论(0) 推荐(2) 编辑
摘要: 编写内核驱动加载工具 一丶加载内核驱动的常用API介绍. 加载内核驱动,使用我们的ring3下的API即可完成. API分别是: OpenSCManager 打开设备(服务)管理器 CreateService 创建服务(或者设备,根据参数不同而不同) OpenService 打开设备或者服务. St 阅读全文
posted @ 2018-01-13 23:55 iBinary 阅读(3478) 评论(1) 推荐(2) 编辑
摘要: 内核知识第四讲,简单的认识内核函数.以及调试驱动技巧 一丶驱动调试技巧. 我们写好的内核驱动代码要怎么调试? 1.自己内联汇编 进行调试 2.调用内核驱动调试API. 一丶内联汇编进行调试 内联汇编进行调试. 代码如下. int 3则是产生一个断点,请注意,一定要配合WinDbg进行调试,也就是双机 阅读全文
posted @ 2018-01-11 20:48 iBinary 阅读(1837) 评论(0) 推荐(1) 编辑
摘要: 内核第三讲,进入ring0,以及编写第一个内核驱动程序. PS: 请下配置双机调试,下方有可能用到.如果不配置,则你可以不用调试, 博客连接: http://www.cnblogs.com/iBinary/p/8260969.html 一丶进入ring0之前的简介 进入0环之前,我们要明白操作系统的 阅读全文
posted @ 2018-01-11 01:58 iBinary 阅读(7557) 评论(0) 推荐(4) 编辑
摘要: 配置WinDbg,调试操作系统(双机调试) PS: 设置双机调试之前,请先安装虚拟机,并且安装好XP系统.这里不做演示.直接设置. 一丶WinDbg的设置 1) 配置WinDbg的环境,在path变量里,在变量值后面增加: ;+Windgb的安装目录 2) 在环境变量里新建一个变量名称为_NT_SY 阅读全文
posted @ 2018-01-10 21:51 iBinary 阅读(5957) 评论(0) 推荐(1) 编辑
摘要: 内核第二讲,内存保护的实现,以及知识简介,局部描述符,全局描述符. 一丶了解80386的各种模式 80386,也就是32位系统下,有三种模式需要了解一下. 实模式,保护模式.虚拟86模式 实模式: 指的是操作系统在启动的是否,这时候访问的内存都是实际的物理内存.而在这个是否,操作系统会填写内核中的内 阅读全文
posted @ 2018-01-09 21:18 iBinary 阅读(2003) 评论(0) 推荐(1) 编辑
摘要: 内核第一讲,内核简介 一丶了解内核的基本名词和概念. 讲解内核了,讲解之前,抱着问题学习. 1.什么是内核.什么是驱动. 宏内核,微内核之间的区别.以及是什么是宏内核,什么是微内核. 内核: 内核的本质就是操作系统.学习操作系统原理.通过分析微软的系统来达到学习内核底层的知识. 驱动: 驱动是可以访 阅读全文
posted @ 2018-01-09 10:09 iBinary 阅读(2025) 评论(0) 推荐(1) 编辑