chengtoreal
码龄6年
求更新 关注
提问 私信
  • 博客:11,772
    社区:1
    11,773
    总访问量
  • 22
    原创
  • 9
    粉丝
  • 37
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:云南省
加入CSDN时间: 2020-09-29
博客简介:

chengtoreal的博客

查看详细资料
个人成就
  • 获得11次点赞
  • 内容获得4次评论
  • 获得10次收藏
  • 博客总排名1,941,486名
创作历程
  • 1篇
    2024年
  • 1篇
    2022年
  • 20篇
    2021年
成就勋章

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 1

TA参与的活动 0

兴趣领域 设置
  • 网络空间安全
    系统安全安全架构
创作活动更多

【多重好礼】鸿蒙心迹 · 开发录原创征稿活动

鸿蒙开发者的实战经验,值得被记录。从踩坑排查到项目复盘,从工具脚本到学习笔记,每一段真实的开发经历,都是社区最宝贵的技术资产。「鸿蒙心迹 · 开发录」正式启航,不限主题、随时可写,只要是鸿蒙开发相关的真实经验都欢迎投稿。 本活动为 [HarmonyOS 7.0 创新内容共创季](https://builderx.csdn.net/activity-site/harmonyos/activity2026)双轨征文之一,与[「共创季 · 稿事节」](https://harmonyosdev.csdn.net/6a97f0de2b83d06f0ecadec5.html)深度征文互补——「稿事节」写深度技术长文,「开发录」写日常开发实战笔记。 「开发录」每月一期,12月截止,本季共三期,投稿即有机会获得京东卡、CSDN博客流量券、亿万Token、社区定制周边好礼!

48人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

C++通过盘符获取DeviceInstanceid

C++通过盘符获取DeviceInstanceid
原创
博文更新于 2024.07.02 ·
449 阅读 ·
4 点赞 ·
1 评论 ·
0 收藏

使用C++枚举WINDOWS计划任务-使用管理员启动获取全计划任务,否则获取部分计划任务

枚举计划任务
原创
博文更新于 2022.11.16 ·
2177 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

APC

APC(异步过程调用)使用TerminiateThread函数是往对应线程发送APC消息,线程处理APC消息后自己结束线程ETHREAD结构中有两个APC队列,一个3环APC,一个0环APCAPC是个函数,被插入线程执行APC对列中都存放KAPC结构体QueueAPC这个API可以插入APC函数...
原创
博文更新于 2021.03.14 ·
386 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-遍历驱动、隐藏驱动

//自定义消息#define Ergodicdrivelist CTL_CODE( FILE_DEVICE_UNKNOWN, 0x801, METHOD_IN_DIRECT, FILE_ANY_ACCESS )#define Hidedriver CTL_CODE( FILE_DEVICE_UNKNOWN, 0x802, METHOD_IN_DIRECT, FILE_ANY_ACCESS )// 遍历驱动void Ergodicdrivelistfun(PIRP Irp){ PIO_STACK_
原创
博文更新于 2021.03.13 ·
917 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

驱动-代码跳转

段寄存器CS:代码段寄存器DS:数据段寄存器SS:堆栈段寄存器ES:附加段寄存器FS:在Ring3中fs:[0]的地址指向的是TEB结构在Ring0中指向一个称为KPCR的数据结构,即FS段的起点与KPCR结构对齐段寄存器读写除CS段外,其他段寄存器都是可以通过MOV、LES、LSS、LDS、LFS指令修改CS是代码段,修改CS地址必须同时修改EIP,必须使用跳转指令长跳转指令:JMP FAR、CALL FAR、RETF、INT、IRETED短跳转指令:JMP、CALL、
原创
博文更新于 2021.03.13 ·
233 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-调用门

调用门信息S位为0type为CDPL为3,必须比>=CPL使用有参数的调用门时,需要pushad与pushfd保存寄存器环境取参数时,需要esp+0x24+8为第一个参数0X24是pushad和pushfd,+8是返回地址与CS无参调用门的使用#include <stdio.h>#include <windows.h>// 门结构体typedef struct _CALLGATE { unsigned int offset1 : 16; unsign
原创
博文更新于 2021.03.13 ·
249 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-TLB

TLB因每次读线性地址最少需要查3次表,所以建立TLB缓存机制将同一页的线性地址与物理地址的对应关系缓存TLB结构,线性地址-物理地址-属性-统计使用频率CR3切换后TLB会被清空,如果PDE和PTE的G位为1不会被清空G位为1可以使用invlpg指令清空某一个TLB记录TLB分为大页与小页,大页小页又分为数据页与代码页检测线程读取的时候会放入数据页TLB中,代码的TLB改为自己的代码可以简单绕过线程检测,但是不稳定,TLB经常刷新可以HOOK系统API,jmp到自己的代码中,不影响功
原创
博文更新于 2021.03.13 ·
206 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-中断门

中断门IDT表中只存放中断门、任务门、陷阱门通过int触发 后面数字为IDT表索引type为Ewindbg指令R IDTR查看IDT表通过索引查看IDT表的段描述符通过段描述符的选择子找到GDT表对应下标的段描述符,将CS放入程序在中断门中无法使用RETF返回使用的是IRETD、IRET返回无权限切换PUSH CSPUSH EFLAGPUSH EIP有权限切换PUSH SSPUSH ESPPUSH EFLAGPUSH CSPUSH EIP...
原创
博文更新于 2021.03.13 ·
134 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-陷阱门

陷进门陷进门与中断门差不多类型为F中断门与陷阱门都不能带参数中断门执行时会将EFLAG的IF置为0陷进门则不会将IF置为0
原创
博文更新于 2021.03.13 ·
166 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-TSS(任务段)

TSS是一块内存有104字节TR是一个段寄存器,从GDT表中的段描述符得来在Ring0,可以通过LTR指令去修改TR寄存器在Ring3,可以通过CALL FAR 或者 JMP FAR指令来修改cpu通过TR的base找到TSS TR的limit标识着TSS有多大...
原创
博文更新于 2021.03.13 ·
316 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-系统调用

系统调用在用户层与内核层分别定义了一个_KUSER_SHARED_DATA结构体,用于用户层与内核层共享某些数据用户层地址为:0x7ffe0000内核层地址为:0xffdf0000虽然指向同一个物理页,用户层是只读的,内核层是可写的所有应用程序共享的,一改全部都会改如果调用函数,会调用0x7ffe0300是kifastsystemcall函数kifastsystemcall函数EAX放入调用号,edx是栈顶。MSR寄存器174-CS、175-ESP、176-EIP,SS是CS值+8
原创
博文更新于 2021.03.13 ·
537 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-进程

进程结构体EPROCESS一个进程一个EPROCESS的第一个成员KPROCESS0xa0、0xa8 CREATETIME、EXITTIME 创建时间、退出时间0x0b4 UniqueProcessId 当前进程PID0x0b8 ActiveProcessLinks 所有的活动进程的双向链表0x0ec DebugPort 0x0f0 ExceptionPort 调试信息 DebugPort清0后无法调试0x0f4 ObjectTable 句柄表0x16c ImageFileName
原创
博文更新于 2021.03.13 ·
302 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-KPCR

KPCR(CPU控制区)KPCR存储CPU本身要用的一些重要数据:GDT、IDT以及线程相关的信息。当线程进入0环时,FS:[0]指向KPCR(3环时FS:[0] -> TEB)每个CPU都有一个KPCR结构体(一个核一个)windbg指令 dd KiProcessorBlock 查看KPCRKPCR结构体0x01c SelfPcr 指向KPCR自己0x020 Prcb 指向拓展的_KPRCB结构体0x038 IDT IDT表基址0x03c GDT GDT表基址0x040
原创
博文更新于 2021.03.13 ·
371 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-句柄表

句柄表当一个进程创建或者打开一个内核对象时,将获得一个句柄,通过这个句柄可以访问内核对象句柄存在的目的是为了避免在应用层直接修改内核对象只有进程才有句柄表,句柄表保存了进程中打开或创建的内核对象关闭句柄后,会在句柄表中删除对应的项值,并将内核对象引用计数+1进程关闭后,会清空句柄表,将内核对象引用计数-1句柄的值都是4的整数倍,所以将句柄的值/4得到索引,再在句柄表中找对应值得到实际内核对象地址因句柄表值是8字节,一个页4KB,句柄在512个以内是在一个页上,如果超过512个,句柄标会更改结
原创
博文更新于 2021.03.13 ·
783 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

驱动-内核重载

内核重载读取ntkrnlpa.exe的PE文件,并展开加载到内存获取模块基址修复重定位修复新的SSDT表HOOK KiFastCallEntry函数代码// 准备工作// KeServiceDescriptorTable变量,声明就可以直接使用// 函数原型typedef NTSTATUS(NTAPI* FnZwOpenProcess)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PCLIENT_ID);typedef struc
原创
博文更新于 2021.03.13 ·
659 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

驱动-线程

线程结构体ETHREADETHREAD第一个是0x22c Cid 进程ID与线程ID0x268 ThreadListEntry 当前进程中所有线程的双向链表nt!_ETHREAD +0x000 Tcb : _KTHREAD +0x200 CreateTime : _LARGE_INTEGER +0x208 ExitTime : _LARGE_INTEGER +0x208 KeyedWaitChain : _LIS
原创
博文更新于 2021.03.13 ·
510 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-MDL内存映射

MDL将内存中的值映射一份至指定的缓冲区// 1. 包含提供内核结构相关的头文件#include <ntddk.h>PMDL mdl;// 驱动卸载的回调函数,会在卸载的时候被调用VOID DriverUnload(PDRIVER_OBJECT DriverObject){ //释放MDL IoFreeMdl(mdl); UNREFERENCED_PARAMETER(DriverObject);}// 2. 提供驱动程序的入口函数NTSTATUS DriverEnt
原创
博文更新于 2021.03.13 ·
1515 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

驱动-与3环程序通讯

3环程序代码#include <stdio.h>#include <windows.h>// 定义自定义消息// 参数:设备类型,IOCTL码(自定义),读写方式,权限#define BufferWay CTL_CODE( FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS )#define DirectWay CTL_CODE( FILE_DEVICE_UNKNOWN, 0x802, METHOD_
原创
博文更新于 2021.03.13 ·
509 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

驱动-分段机制

一、分段机制在 32 位保护模式下,段寄存器就不再直接保存段基址了,而是分为了 可见的 16 位段选择子 部分以及不可见的 80 位 高速缓存部分,对于需要访问的信息(基址、限长以及属性)都被保存在了不可见部分。这一部分的信息无法被人为的查看,由 CPU 自动加载。当段寄存器被修改的时候,CPU 会通过可见部分的段选择子从 GDT 或 LDT(windows没启用)中找到对应的段描述符,在进行权限检查后,将相关内容加载到告诉缓存部分。二、段选择子从下面的结构体可以知道,段选择子由 INDEX、TI 以
原创
博文更新于 2021.03.13 ·
405 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

驱动-分页机制

一、地址的划分逻辑地址: 通过段寄存器+偏移的形式表示的地址虚拟地址: 通过分段机制将逻辑地址转换成位于虚拟空间中的虚拟地址物理地址: 通过分页机制将虚拟地址转换成物理地址二、虚拟地址转物理地址(禁用 PAE 的情况)win7 默认开启 PAE,需要通过下面的指令关闭BCDEdit /set PAE ForceDisableBCDEdit /set NX AlwaysOffx86 环境下每一个进程都拥有自己的 4GB 虚拟地址空间并且每个进程都拥有自己的页目录表,通过 cr3 可以
原创
博文更新于 2021.03.13 ·
335 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多