精易论坛

标题: HOOK api的问题 [打印本页]

作者: a524666979    时间: 2025-5-13 00:51
标题: HOOK api的问题


如图所示 第三个参数是个结构体 我如何能准确的取出 结构体里面的 值  指针有点麻

如有例子可参考 也可以 !

作者: qq793359277    时间: 2025-5-13 00:51
把参数3的类型改位POBJECT_ATTRIBUTES

<火山程序 类型 = "通常" 版本 = 1 />

类 POBJECT_ATTRIBUTES <公开 基础类 = 本地结构指针模板 @别名 = "POBJECT_ATTRIBUTES" @模板实现类 = "POBJECT_ATTRIBUTES">
{
    变量 Length <公开 类型 = 整数 @输出名 = "Length">
    变量 RootDirectory <公开 类型 = 变整数 @输出名 = "RootDirectory">
    变量 ObjectName <公开 类型 = PUNICODE_STRING @输出名 = "ObjectName">
    变量 Attributes <公开 类型 = 整数 @输出名 = "Attributes">
    变量 SecurityDescriptor <公开 类型 = 变整数 @输出名 = "SecurityDescriptor">
    变量 SecurityQualityOfService <公开 类型 = 变整数 @输出名 = "SecurityQualityOfService">

    #
}

类 PUNICODE_STRING <公开 基础类 = 本地结构指针模板 @别名 = "PUNICODE_STRING" @模板实现类 = "PUNICODE_STRING">
{
    变量 Length <公开 类型 = 短整数 注释 = "USHORT" @输出名 = "Length">
    变量 MaximumLength <公开 类型 = 短整数 注释 = "USHORT" @输出名 = "MaximumLength">
    变量 Buffer <公开 类型 = 文本指针 注释 = "PWSTR" @输出名 = "Buffer">
}

作者: dnxl    时间: 2025-5-13 01:32
不会用指针直接取内存值不就行了
32位情况下,这个结构体为24字节,每个成员4字节,参数为整数型就是第一个成员的地址,+4为第2个。。。。。
64位情况下,这个结构体为48字节,1和4实际数据是4字节,因为要对齐都会被补位为8字节,只取前4字节就行,2356全部8字节。+8去读就可以
作者: 黄福寿    时间: 2025-5-13 01:52
用别名封装一个C++的结构体传递进去就可以了
作者: a524666979    时间: 2025-5-13 15:35
黄福寿 发表于 2025-5-13 01:52
用别名封装一个C++的结构体传递进去就可以了

别名 我尝试了一下 会崩溃,我不确定是不是我写错了。如果有例子 可以告知一下吗
作者: qq793359277    时间: 2025-5-13 16:36
看个人需求,  一般是单独用别名封个结构体,  但有些时候还是内嵌最便捷




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4