自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冰糖葫芦的夏天的博客

一个希望世界和平喜欢碎碎念的家伙。。

  • 博客(57)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 windows内核编程(2021年出版)笔记

IRP由执行体中IO管理器、即插即用管理器、电源管理器之一从非分页池中分配,也可由驱动程序分配IRP遵循谁分配谁释放的原则IRP从不单独分配,总是伴随着一个或多个一起分配当一个IRP被分配时,调用者必须指明有多少个需要跟IRP一起分配在内存中紧跟IRP后面,且每一个对应设备栈中的一个设备对象当收到IRP时,需要通过调用函数获得属于当前驱动使用的。

2023-10-07 22:09:29 463

原创 《qt quick核心编程》笔记四

Model可以是QML内建类型,如ListModel、XmlListModel,也可以是C++中实现的QAbstracItemModel或QAbstractListModel的派生类。属性为true时,则Model中的roles对应值的类型可以动态改变,但是性能将会严重下降,默认false。TableView的数据也通过Model提供,可以使用ListModel、XmlListModel或使用C++从、:一个XPath表达式,以"/“或”//"开始,和XmlRole的query结合使用。

2023-08-16 22:32:53 199

原创 《qt quick核心编程》笔记三

从QObject或QObject的派生类继承使用Q_OBJECT宏信号和槽Q_INVOKABLE宏修饰的成员函数Q_ENUM宏修饰的枚举类型Q_PROPERTY宏修饰的成员属性(常用READ、WRITE、NOTIFY标记)头文件private :源文件break;break;break;break;} break;

2023-08-01 09:51:18 252

原创 《qt quick核心编程》笔记二

MouseArea是专门处理鼠标的Item,具有一个pressed信号Loader是专门用来动态创建组件的,可以从QML文件中创建组件,也可以通过指定sourceComponent属性为要创建的组件idLoader具有一个信号loaded,当组件被创建完成时被触发。还有一个属性Item表示当前已经加载的对象Text、TextInput、TextEdit等控件不支持定制元素背景,可通过放置一个z序更小的Rectangle来实现。

2023-07-27 09:51:29 240

原创 《qt quick核心编程》笔记一

阅读《Qt Quick核心编程》的笔记,便于后续查找

2023-07-21 16:34:23 734

原创 django快速笔记

表单排序from django . contrib import admin from . models import Question class QuestionAdmin(admin . ModelAdmin) : fields = [ "pub_date" , "question_text" ] admin . site . register(Question , QuestionAdmin)

2023-04-23 23:49:58 394

原创 《Windows内核安全编程》第三章 串口的过滤

IoAttachDevice只能用来绑定具有名称的设备,且总是会绑定设备栈上最顶层的那个设备。在获得后不用时,必须通过ObDereferenceObject解除引用,否则内存泄漏。IRP都具有一个主功能号和一个次功能号。:调用者生成的用来过滤的虚拟设备。:字符串,要被绑定的设备的名字。:返回被绑定的设备对象的指针。:指针,要被绑定的设备的指针。:返回最终被绑定的设备。

2022-10-27 10:29:25 671

原创 Windows驱动开发重要结构体详解

windows驱动开发中重要结构体

2022-07-21 01:03:20 619 2

原创 Windows驱动开发Hello World示例

Windows驱动开发Hello World示例代码

2022-07-20 23:35:39 515

原创 Windows驱动开发技术详解第八章(驱动程序的同步处理)

中断请求(IRQ)中断请求分为两种:外部中断(硬件产生的中断)由软件指令int n产生的中断外部中断传统PC共可接受16个中断信号,分别对应一个中断号外部中断分为:不可屏蔽中断(CPU的NMI引脚)和可屏蔽中断(CPU的INTR引脚)传统CP使用Intel 8259A中断控制器向CPU发出可屏蔽中断现代x86机器使用高级可编程中断控制器(APIC)APIC兼容传统的16个中断,共24个中断(IRQ)每个IRQ有各自的优先级别,正在运行的线程可被IRQ打断,进入IRQ的中断处理程序

2022-03-01 14:52:46 408 2

原创 Windows驱动开发技术详解第七章(派遣函数)

驱动程序的主要功能是负责处理IO请求,绝大部分IO请求在派遣函数中完成用户模式下所有对驱动程序的IO请求,全部由操作系统转化为一个叫IRP的数据结构不同的IRP数据会被派遣到不同的派遣函数中IRP全名:输入输出请求包两个基本属性:MajorFunction(IRP主类型)和MinorFunction(IRP子类型)操作系统根据MajorFunction将IRP派遣到不同的派遣函数中IRP派遣函数的注册一般来说,NT式和WDM式驱动程序都是在DriverEntry函数中注册的派遣函数示例.

2022-02-28 17:30:00 283

原创 Windows驱动开发技术详解第六章(Windows内核函数)

字符串操作DDK中CHAR对应char,WCHAR对应wchar_tDDK中也是用strcpy,sprintf,strcat等操作字符串,但并不推荐使用这些字符串操作函数被ntoskrsl.exe导出DDK推荐使用功能相同的宏DDK不鼓励使用C语言的字符串,建议使用ANSI_STRING和UNICODE_STRINGtypedef struct _STRING { USHORT Length; //字符串的长度 USHORT MaximumLength; //字符串缓冲区的最大长度 P

2022-02-28 13:03:43 257

原创 Windows驱动开发技术详解第五章(Windows内存管理)

PC上共三条总线:数据总线,地址总线,控制总线PC中的部分设备自带内存(如显卡),该自带的内存会被映射到PC的物理内存上,读写该段内存实际就是读写设备自带的内存操作系统和硬件(CPU中的内存管理MMU单元)共同构建出虚拟内存的概念,所有程序(包括Ring0和Ring3)可以操作的都是虚拟内存,虚拟内存是对物理内存的映射虚拟内存和物理内存虚拟内存的分页CPU中有一个CR0的寄存器32位,其中的一个位(PG位)标志是否可以分页Windows启动时,将该位设置位1,即允许分页Windows的分页大小

2021-12-30 16:58:34 247

原创 Windows驱动开发技术详解第四章(驱动程序的基本结构)

重要概念每个驱动程序都会有一个或多个设备对象驱动程序中的每个设备对象都有一个指针指向下一个设备对象(也属于当前驱动),最后一个设备对象指向空驱动程序中尽量不要使用全局变量,而是将全局变量定义在设备扩展里设备对象记录通用设备的信息,另外一些特殊信息记录在设备扩展(由程序员设计)里驱动程序中,字符串都使用UNICODE编码(16位为一个字符)可以使用NT_SUCCESS宏来判断NTSTATUS是否为成功typedef struct _UNICODE_STRING { USHORT Length

2021-12-26 19:13:41 417

原创 Windows驱动开发详解 第三章(Windows驱动编译环境配置、安装及调试)

由于微软的WDK驱动开发工具包,只提供了C、C++语言的库和头文件,因此最好使用C/C++来编写驱动文件函数调用约定函数调用步骤:将函数的返回地址压入堆栈将函数的参数压入堆栈(有四种方式)_cdecl:C语言调用约定_stdcall:标准调用约定_fastcall:快速调用约定thiscall:C++类成员函数调用约定调用函数(即call 函数地址)函数执行结束退出时对栈进行平衡(同样四种方式,与参数入栈对应)Windows驱动程序,编写需要使用标准调用约定(_stdcall).

2021-12-25 15:23:07 656

原创 windows驱动开发详解 第二章

驱动被加载在内核模式下特权层Ring0,Ring3都是属于CPU中的概念,指的是,不同的层级可以运行不同的指令Windows内核模式运行在Ring0层,用户模式运行在Ring3层

2021-12-22 21:40:50 111

原创 windows驱动开发详解 第一章

windows驱动分为:NT驱动(不支持即插即用)WDM驱动(支持即插即用)NT驱动实例//main.h#pragma once#pragma warning(disable:4100)#ifdef _cplusplusextern "C"{#endif#include <NTDDK.h>#ifdef _cplusplus}#endif // _cplusplus#define PAGEDCODE code_seg("PAGE")#define LOC

2021-12-22 07:21:59 223

原创 关于如何使用c++中的try/catch捕获SEH异常并处理

两者区别:C++异常与SEH区别可参考《Windows核心编程第五版》第25章 25.2节(727页)下面取自原文:注意:C++异常和SEH异常不是同一个东西!!!C++使用try,catch作为关键字进行捕获异常(C++标准自己定义的异常)SEH是Windows操作系统自身使用并提供的一种捕获系统异常的方式,使用__try、__except、__finally、__leave作为关键字进行捕获异常(windows系统定义的异常)无法使用C++异常处理捕获SEH异常,同样SEH异常也无法捕

2020-12-24 06:02:10 2003

原创 加密与解密(第四版)第11章 PE文件格式

PE文件的定义头文件:winnt.hEXE和DLL使用完全相同的PE格式,只是有一个字段标明这是一个EXE还是DLLPE文件框架结构图PE文件的基本概念PE文件将所有的文件和数据都合并在一个文件中,文件的各个部分被分割为不同的区块(Section,又称节)区块中包含代码和数据,各个区块按照页边界对其区块没有大小限制,是一个连续结构每个区块在内存中都具有各自的一套属性,例如该块是否包含代码,是否可读可写等基地址当PE文件通过PE装载器载入内存后,内存中的版本称为模块(Module)映射文

2020-12-12 15:46:39 913

原创 加密与解密(第四版)第10章 VT技术

名词释义VT:Intel的硬件辅助虚拟化技术,为了提高VMware之类的软件虚拟化的性能VMM:虚拟机监控器VMX:虚拟机扩展Root模式:VMX中新的CPU模式,该模式仅供VMM使用Guest OS:子操作系统VT技术引入新的CPU层级Ring-1由于本章后续实在无法读懂,故暂且搁置,等VT方面基础知识补一补,再来拜读本章。...

2020-12-10 15:54:49 419

原创 加密与解密(第四版)第9章 win32调试API

调试相关函数ContinueDebugEvent:允许调试器恢复先前由于调试事件而挂起的线程DebugActiveProcess:允许调试器捆绑到一个正在允许的进程上DebugActiveProcessStop:允许调试器从一个正在运行的进程上卸载DebugBreak:在当前进程中产生一个断点异常,如果进程未处于调试状态,异常将被系统阶段,多数情况下会直接终止进程DebugBreakProcess:在指定的进程中产生一个断点异常FatalExit:将使调用进程强制退出,将控制权转交给

2020-12-10 15:08:12 280

原创 加密与解密(第四版)第8章 Windows下的异常处理

异常的基本概念中断:由外部硬件设备或异步事件产生异常:由内部事件产生,分为故障、陷阱、终止三类硬件异常:由CPU引发软件异常:由操作系统或应用程序引发常见异常列表:软件主动引发异常:调用RaiseException函数异常处理的基本过程Windows正常启动后,将运行在保护模式下,当有中断或异常发生时,CPU会根据产生的中断或异常类型,查找中断描述符表IDT中对应的处理函数IDT表IDT是一张位于物理内存中的线性表,共有256项32位模式中每个IDT项长度是8字节,64位模式中每个

2020-12-08 23:06:29 373

原创 加密与解密(第四版)第7章 Windows内核基础

内核理论基础1. 权限级别系统内核层:ring0,应用层:ring3CPU存在4个级别由高到底:R0(内核)、R1(驱动)、R2(驱动)、R3(应用)操作系统的设计者为了简单,并未使用R1,R2XP系统体系结构图:2. 内存空间布局x86系统内存布局图:x86系统上最大寻址空间为4GBWindows内存共包含4个部分:NULL空间,应用层空间,非法区域,内核空间x64系统内存布局图:x64系统上最大寻址空间理论上为16PB(2^64次方),但根本用不完Windows最多支持2

2020-12-08 16:06:00 410

原创 加密与解密(第四版)第6章 加密算法

单向散列算法(hash算法)常见散列算法:MD5、SHA、RIPE-MD、HAVAL、N-Hash等对称加密算法对称加密算法的加密密钥和解密密钥完全相同常见的对称分组加密算法:DES、IDEA、AES、BlowFish、TwoFish等流加密算法常见的流加密算法:RC4国密算法SM4(对称)、SM2(非对称)识别加密算法使用PEid的Krypto ANALyzer(Kanal)插件,可以识别一般的对称加密算法,IDEA无法识别通过每种加密算法所持有的加解密处理过程,例如是否为Feis

2020-12-08 14:06:34 266

原创 加密与解密(第四版)第5章演示版保护技术

序列号保护机制将用户名等信息作为自变量,通过函数F变换之后得到注册码序列号=F(用户名)序列号=F(用户名)序列号=F(用户名)破解方法:①利用调试器内存中直接获取到明文注册码②利用调试器提取出函数F,制作计算注册码程序③直接修改比较指令跳过注册码检查通过注册码验证用户名的正确性用户名=F−1(序列号)用户名=F^{-1}(序列号)用户名=F−1(序列号)破解方法:①通过F的逆变换,找出F,从而制作计算注册码程序②给定一个用户名,利用穷举法找出满足F的序列号③给定一个序列号,直接利

2020-12-08 13:38:44 611

原创 加密与解密(第四版)第4章 逆向分析技术(64位软件逆向技术)

寄存器x64寄存器x86寄存器的区别:x86下通用寄存器名称开头由E改为R,大小扩展到64位增加8个64位通用寄存器(R8-R15)增加8个128位的XMM寄存器函数x64环境下,某些汇编指令对栈顶的对齐值有要求(能够被16整除)逆向过程中,发现申请了栈空间但不使用的情况,可能是为了栈顶对齐如何定位main函数:当main函数执行完成时,C/C++运行库通常会调用exit函数退出进程。根据此特征,在入口代码中找到第一处call cs:exit代码,在该处上面的一个call调用的通常就是

2020-12-07 23:02:33 729

原创 加密与解密(第四版)第4章 逆向分析技术(32位软件逆向技术)

程序的启动Win32应用程序都需要实现WinMain函数Windows程序的执行并非从WinMain开始,而是从编译器生成的一段代码开始所有C/C++程序启动函数作用为:检索指向新进程的命令行指针检索指向新进程的环境变量指针全局变量初始化内存栈初始化调用应用程序入口点函数main或WinMain入口点函数返回时,调用C运行库的exit函数,进行一些清理处理,最后调用ExitProcess退出用户编写的入口点函数地址为:0x00401000函数函数包含:函数名、入口参数、返回值、函

2020-12-05 11:29:38 450

原创 加密与解密(第四版)第3章 静态分析技术

文件类型分析,判断PE文件使用何种语言编写,使用何种编译器编译,是否进行了加密,工具有:PEiD、Exeinfo PE等常用反汇编引擎:ODDisasm、BeaEngine、Udis86、Capstone、常用汇编引擎:ODAssembler、Keystone、AsmJit反汇编引擎比较:IDA Pro静态反汇编支持文件格式:PE、DOS、UNIX、Mac、Java、.NET等常见格式IDA按区块装载PE文件,如.text(代码块)、.data(数据块)、.rsrc(资源块)、.idata(

2020-12-04 17:19:30 330

原创 加密与解密(第四版)第2章 动态分析技术

OllyDbg调试器指定到光标所在的行停止:F4反汇编面板中对指令进行编辑快捷键:F2反汇编面板中对指令进行添加注释快捷键:;数据面板中想要显式指定地址的数据快捷键:Ctrl+GOllyDbg配置文件:olldbg.iniOllyDbg工程文件:UDD,保存了当前调试的状态、断点、注释等OllyDbg插件文件夹:plugin调试快捷键:INT3断点:采用INT 3(无条件中断指令)来替换断点的指令,当CPU执行INT 3时将产生一个中断来通知调试器DRx断点:又称硬件断点,利用CPU

2020-12-03 01:28:32 420

原创 加密与解密(第四版)第1章 基础知识

字符存储Unicode:使用2字节对文本进行编码,也称为宽字节小端序:高位字节放入低地址,低位字节放入高地址(x86架构CPU采用)大端序:低位字节放入低地址,高位字节放入高地址(网络协议传输采用)win16:用于16位的windows的API(Windows 1.0 ~ Windows 3.0)win32:用于32位的windows的API(Windows 9x/NT/2000/xp/7/10)windows内部全部使用Unicode字符集,当调用ANSI版本的API时,传入的ANSI字符集会

2020-12-01 03:29:39 465

原创 汇编语言快速入门笔记

寄存器EAX:累加器,一般存放运算结果EBX:基址寄存器,一般用作内存寻址的基地址,DS段的数据指针ECX:计数器,一般用作字符串操作和循环操作的计数器EDX:用于存储部分乘法结果和部分除法被除数EBP:基址指针,SS段的数据指针ESP:栈顶指针,一般指向栈顶EDI:字符串操作的目标指针,ES段的数据指针ESI:字符串操作的源指针,SS段的数据指针FALAGS寄存器:内存的表现形式立即数MOV EAX, DWORD PTR DS:[0x????????]寄存器MOV EBX,

2020-11-29 01:22:35 396

原创 vs2010+visual assist安装报错“遇到了异常,这可能是由于某个扩展导致的”解决方案

问题描述:机器第一次安装vs2010,安装完毕之后,再安装visual assist助手,出现报错“遇到了异常,这可能是由于某个扩展导致的”。问题原因:我也不清楚,我知道这么干就行了。。我记得我之前使用vs2010+visual assist助手没有出现过这个情况呀,都是同一份安装包。对比差异性后怀疑,之前的没问题是由于已经打开过vs2010且编译过代码。经过尝试,果然如此:&gt...

2020-02-28 00:26:10 1612

原创 win32实现文件追加

实现原理:打开两个文件,循环读取要追加的文件内容,然后写入到要被追加文件的末尾相关api:CreateFile、SetFilePointerEx、ReadFile、WriteFile微软官方示例:https://docs.microsoft.com/zh-cn/windows/win32/fileio/appending-one-file-to-another-file/*funn...

2020-02-09 20:28:20 564

转载 BAT脚本中主动获取管理员权限

直接上代码,也是直接Copy过来的@echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( goto UACPrompt ) else ( goto gotAdmin )...

2019-12-02 17:47:59 1494

原创 GetWindowText卡住问题分析与解决

GetWindowText卡住问题分析场景复现现象:现象分析原因:场景复现来看这段mfc小代码void CgetwindowtextShutdownDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadStaticEntryPoint, t...

2019-12-02 17:03:25 1807

原创 Windows 获取指定PID进程的程序位数

1. 需求背景在使用DLL注入时,进程需要获取目标进程的位数,来决定注入32位/64位的DLL2. 实现原理调用win32 APIIsWow64Process3. 代码如下#include <windows.h>#include <tchar.h>/** 作者: shang_cm* 时间: 2019-10-09* 函数功能: 获取指定PID进程的位...

2019-10-09 10:10:40 916

原创 Windows下获取子进程标准输出

需求来源:项目上有用到需要获取ffmpeg的命令输出,进行解析,而后添加成进度条的形式表现出来因此写了个获取子进程输出的通用工具代码实现原理:创建可继承的匿名管道将其中的写管道,作为createprocss的参数传入,替换子进程的标准输出调用readfile从读管道进行循环读取内容代码如下:#include <windows.h>#include <tchar...

2019-08-27 10:54:57 2473

原创 一个封装OutputDebugString信息的输出调试信息的工具代码(支持自动输出文件,行号,线程ID,打印内存)

由于开发环境经常不允许直接挂调试器,只能靠打输出调试,因此自己写了个便于输出调试的工具cpp分享出来使用时直接导入MyDbgFunction.hpp,使用方法如下:#include <windows.h>#include <tchar.h>#include "MyDbgFunction.hpp"//支持项目的宽窄字符int _tmain(int argc, ...

2019-07-18 21:00:36 771

原创 Windows 获取当前系统所有共享目录及名称

1. 命令行方式net share命令2. Win32Api NetShareEnum方式MSDN链接: https://docs.microsoft.com/zh-cn/windows/desktop/api/lmshare/nf-lmshare-netshareenum#include <lm.h>#include <vector>#include...

2019-06-18 12:01:12 1103

原创 修改MFC程序任务栏右键信息

如图,修改任务栏右键弹出程序信息字样修改rc文件中VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL#ifdef _DEBUG FILEFLAGS 0x1L#else FILEFLAGS 0x0L#endif FILEOS 0x40004L F...

2019-03-07 19:58:24 1210

驱动开发 内核调试 最新windows调试工具 OSR工具合集 DeviceTree IrpTracker

驱动开发,内核工具,调试工具,DeviceTree,Irptracker,KMDF,PNP,WDM; OSR上存档的所有驱动开发调试工具(所有工具全部最新,2021年12月份),包含(工具exe,各个工具说明html页面) DeviceTree.exe,DiskView.exe,IrpTracker.exe,Filterman.exe,PhysMem.exe,PoolTag.exe等共25个

2021-12-25

getopt_mb_uni_src.zip

getopt是linux下的libc所规定的一个非常好用的命令行解析工具 ludvikjerabek将它移植到了Windows下(支持宽窄字节) 文件清单:getopt.h、getopt.c

2019-09-02

ftp用户名字典 适合爆破

ftp常见用户名字典

2016-06-10

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

TA关注的人

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