avatar
文章
88
标签
0
分类
0
首页
时光档案
标签
分类
友链
关于
半枫
首页
时光档案
标签
分类
友链
关于

半枫

VS2017+WDK7.1驱动开发TitanHide
发表于2026-02-02
开发适用于Windows xp和Windows 7的TitanHide驱动。 环境准备因为要适配Windows xp和Windows 7,所以选择WDK7.1。下载地址:https://learn.microsoft.com/zh-cn/windows-hardware/drivers/legacy-wdk-downloads找到下载好的.ISO文件,解压,到解压好的文件夹中,找到安装文件KitSetup.exe,根据指引安装好(路径检验选择默认路径,后续配置安装默认路径)。安装好就可以在C盘的根目录看到WinDDK文件夹, 项目配置将从Github上获取的TitanHide源码中TitanHide目录下的.cpp、.h文件复制好一份,重新配一个工程。 根据以下要求配置项目属性: 1234567891011121314151617181920212223242526272829303132333435363738//编译出win xp 32位驱动VS2017里新建一个空项目,新建一个配置名:TitanHide_xp //自行定义名字VS++目录-》可执行文件目录:C:\WinD...
vmp反调试学习及其绕过方法
发表于2026-01-28
小白对这几天VMP的反调试学习结合vmpprotect-3.5.1的源码总结一下。 定位VMP反调试源码当VMP检测到被调试时,会弹窗报错信息通过这条报错信息,我们可以找到然后通过VMP的消息传递逻辑,我们可以发现mtDebuggerFound和函数LoaderMessage(),mtDebuggerFound是VMP反调试检测的唯一语义化标识,LoaderMessage()是VMP所有报错的统一处理入口,LoaderMessage(mtDebuggerFound)是VMP所有反调试检测逻辑的统一报错触发语句。所以我们可以通过查找LoaderMessage(mtDebuggerFound)的引用去定位到VMP的各处反调试相关源码。 os_build_number的获取一共有两种获取方式: PEB直接读取(最快、最底层):绕过所有系统API,直接从进程环境块(PEB)读取OSBuildNumber; ntdll资源解析(兜底、最可靠):直接解析系统核心模块ntdll.dll的PE资源,也是为了方便取syscall所使用的系统调用号。从PEB->OSBuildNum...
环境变量处理API-GetEnvironmentVariable
发表于2026-01-17
基本概念GetEnvironmentVariable属于Windows.h头文件,专门用于读取指定名称的环境变量值,可以替代ExpandEnvironmentStrings中 “被动解析环境变量” 的方式,主动获取单个环境变量的具体值,灵活性更高。 基本语法1234567891011DWORD GetEnvironmentVariableW( [in, optional] LPCWSTR lpName,// 要读取的环境变量名 [out, optional] LPWSTR lpBuffer,// 接收变量值的目标缓冲区 [in] DWORD nSize // 目标缓冲区的大小(字节数));DWORD GetEnvironmentVariableA( [in, optional] LPCSTR lpName, [out, optional] LPSTR lpBuffer, [in] DWORD nSize); 返回值成功:返回复制到缓冲区的字符数(ANSI是字节数,Unicode是wchar_t字符数),不包含...
目录处理函数-GetWindowsDirectory、PathCanonicalize与PathIsRelative
发表于2026-01-17
GetWindowsDirectory基本概述GetWindowsDirectory是Windows提供的系统目录获取函数,属于Windows.h头文件,主要用于定位Windows系统安装目录(存放系统核心文件的目录)。随着系统升级,微软也提供了更通用的GetSystemDirectory(获取 System32 目录)和SHGetFolderPath(获取各类系统 / 用户目录),但GetWindowsDirectory仍被广泛兼容使用。 基本语法1234567891011// Unicode(宽字符)版本UINT GetWindowsDirectoryW( [out] LPWSTR lpBuffer,// 接收路径的目标缓冲区 [in] UINT uSize // 目标缓冲区的大小(字符数));// ANSI 版本UINT GetWindowsDirectoryA( [out] LPSTR lpBuffer, [in] UINT uSize// 目标缓冲区的大小(字节数)); 返回值成功:返回复制到缓冲区的字符数(ANSI是字节数,Unicode是wc...
字符串处理API-StringCchCopy、ExpandEnvironmentStrings与StringCchPrintf
发表于2026-01-16
StringCchCopy基本概述StringCchCopy是Windows提供的字符串安全拷贝函数,属于StrSafe.h头文件下的StrSafe库,目的是替代传统的strcpy等字符串拷贝函数(避免缓冲区溢出),它会严格检查目标缓冲区的大小,确保拷贝操作不会越界,提升代码安全性。 基本语法12345STRSAFEAPI StringCchCopyA( [out] STRSAFE_LPSTR pszDest,// 目标字符串缓冲区 [in] size_t cchDest,// 目标缓冲区的大小(以字符数为单位,包含终止符 '\0') [in] STRSAFE_LPCSTR pszSrc // 源字符串); 返回值HRESULT类型,常见返回值:S_OK:拷贝成功,且目标字符串以\0终止。STRSAFE_E_INSUFFICIENT_BUFFER:目标缓冲区空间不足,拷贝失败(此时目标缓冲区会被置为空字符串)。 数据类型STRSAFE_LPSTR: 1typedef _Null_terminated_ char* STRSAFE_L...
目录(Catalog)验证API-CryptCATAdminCalcHashFromFileHandle、CryptCATAdminEnumCatalogFromHash、CryptCATCatalogInfoFromContext、CryptCATAdminAcquireContext
发表于2026-01-15
CryptCATAdminAcquireContext基本概念CryptCATAdminAcquireContext是Windows 目录(Catalog)验证体系的 “入口函数” —— 所有目录相关操作(计算文件哈希、查找目录条目、提取.cat 文件路径)都必须先通过这个函数获取目录管理上下文句柄(HCATADMIN),它的作用类似于打开一个 “目录操作的会话”。 基本语法12345BOOL CryptCATAdminAcquireContext( [out] HCATADMIN *phCatAdmin,//上下文句柄(调用前设为NULL) [in] const GUID *pgSubsystem,//子系统GUID(几乎所有场景传NULL) [in] DWORD dwFlags //标志位(固定传0)); 返回值TRUE-成功FALSE-失败 ERROR_OUTOFMEMORY:内存不足 ERROR_INVALID_PARAMETER:参数未初始化(如phCatAdmin没设NULL) ERROR_ACCESS_DENIED:权限不足(需...
信任验证API-WinVerifyTrust
发表于2026-01-15
基本概念WinVerifyTrust是Windows系统中用于验证数字签名、证书链和信任状态的核心API。它可以验证文件、目录(catalog)、证书、驱动程序等对象是否可信。WinVerifyTrust是Windows提供的信任验证接口,位于wintrust.dll。它的作用是: 验证文件是否有有效的数字签名 验证签名证书是否由受信任的CA颁发 检查证书是否被吊销 验证目录文件(.cat)中的文件哈希是否可信 验证驱动程序、安装包等是否符合Windows信任策略 基本语法12345LONG WinVerifyTrust( [in] HWND hwnd, //调用方窗口的可选句柄 [in] GUID *pgActionID,//指定验证策略 [in] LPVOID pWVTData //包含待验证对象的信息); 返回值返回值是LONG类型。常见返回值:ERROR_SUCCESS (0):验证成功TRUST_E_NOSIGNATURE:文件没有签名TRUST_E_EXPLICIT_DISTRUST:被显式标记为不信任TRUST_E_SU...
CNG加密API-BCryptOpenAlgorithmProvider、BCryptGetProperty、BCryptCreateHash与BCryptHashData、BCryptFinishHash
发表于2026-01-14
BCryptOpenAlgorithmProvider基本概念BCryptOpenAlgorithmProvider是Windows系统中BCrypt (Cryptography Next Generation, CNG)接口的核心函数,作用是: 打开指定加密算法的 “算法提供程序” 句柄(类似于获取算法的操作入口); 后续可通过该句柄调用加密、解密、哈希、签名等具体加密操作; 支持指定算法实现的提供商(如微软默认的MS_PRIMITIVE_PROVIDER),也可留空使用系统默认提供商。 基本语法123456NTSTATUS BCryptOpenAlgorithmProvider( [out] BCRYPT_ALG_HANDLE *phAlgorithm, //打开的算法句柄 [in] LPCWSTR pszAlgId, //算法标识符(如哈希、加密算法的字符串) [in] LPCWSTR pszImplementation,//算法提供商(通常为 NULL 使用默认) [in] ULONG ...
Windows加密API-CryptCreateHash、CryptHashData与CryptGetHashParam
发表于2026-01-14
CryptCreateHash基本概念CryptCreateHash属于Windows CryptoAPI(Advapi32.dll),作用是初始化一个哈希计算上下文(哈希对象),后续可通过CryptHashData向该对象添加数据,最终通过 CryptGetHashParam获取哈希结果。 基本语法1234567BOOL CryptCreateHash( [in] HCRYPTPROV hProv,// 加密服务提供程序(CSP)的句柄 [in] ALG_ID Algid,// 哈希算法标识符 [in] HCRYPTKEY hKey, // 密钥句柄(哈希计算时设为NULL) [in] DWORD dwFlags,// 标志位(通常设为0) [out] HCRYPTHASH *phHash //创建的哈希对象句柄); 数据类型ALG_ID: 1typedef unsigned int ALG_ID; ALG_ID本质是无符号整数,专门用来标识Windows CryptoAPI中的加密 / 哈希算法. 1234567ALG_ID ...
Windows加密API-CryptAcquireContext与CryptReleaseContext
发表于2026-01-12
基本概述CryptAcquireContext是Windows加密API(CryptoAPI)中的核心函数,主要作用是获取一个加密服务提供程序(CSP)的上下文句柄。这个句柄是后续所有加密操作(如创建 / 打开密钥、加密 / 解密数据、数字签名 / 验证等)的基础,相当于 “登录” 到系统的加密服务,拿到操作权限。简单来说:没有这个函数获取的上下文句柄,你无法使用 Windows 系统提供的加密功能(比如使用RSA加密、生成数字证书等)。 CryptReleaseContext是Windows CryptoAPI中用于释放通过CryptAcquireContext获取的CSP上下文句柄(HCRYPTPROV)的专用函数。简单来说,它的作用就是 “归还” 你之前从系统申请的加密服务资源,相当于加密操作完成后的 “注销登录”,是避免内存 / 资源泄漏的核心步骤。只要调用CryptAcquireContext成功获取了HCRYPTPROV句柄,就必须调用这个函数释放,否则会导致进程持有的系统加密资源无法回收。 基本语法12345678910111...
12…9
avatar
半枫
Welcome to my blog
文章
88
标签
0
分类
0
Follow Me
公告
This is my Blog
最新文章
VS2017+WDK7.1驱动开发TitanHide2026-02-02
vmp反调试学习及其绕过方法2026-01-28
环境变量处理API-GetEnvironmentVariable2026-01-17
目录处理函数-GetWindowsDirectory、PathCanonicalize与PathIsRelative2026-01-17
字符串处理API-StringCchCopy、ExpandEnvironmentStrings与StringCchPrintf2026-01-16
归档
  • 二月 2026 1
  • 一月 2026 9
  • 十二月 2025 3
  • 十一月 2025 10
  • 十月 2025 10
  • 九月 2025 4
  • 八月 2025 36
  • 七月 2025 15
网站信息
文章数目 :
88
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By 半枫框架 Hexo 7.3.0|主题 Butterfly 5.4.3