首页
社区
课程
招聘
[求助]etwhook为什么在物理机里hook 得不到输入信息
发表于: 2023-11-22 19:40 3509

[求助]etwhook为什么在物理机里hook 得不到输入信息

2023-11-22 19:40
3509

往大牛们帮忙看一下
问题:我通过Etw Hook了NtAllocateVirtualMemory 、 NtClose 二个函数
在虚拟机里能正常输入调试信息,但在物理机里侧不输入信息,说明也没有成功。百思不得其解。物理机和虚拟机同一版本号,另外虚拟机也开了测试模式,显不驱动也加载功。
物理机与虚拟机版本见下图:
Hook代码:
Hook NtAllocateVirtualMemory代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NTSTATUS NTAPI HkNtAllocateVirtualMemory(
    HANDLE    ProcessHandle,
    PVOID* BaseAddress,
    ULONG_PTR ZeroBits,
    PSIZE_T   RegionSize,
    ULONG     AllocationType,
    ULONG     Protect
    )
{
    if (!IsCurrentProcessTargetProcess())
        goto origin;
    DbgPrintEx(0, 0, "[ADF] NTSTATUS NTAPI HkNtAllocateVirtualMemory Parameter PH:%d BA:%p ZB:%d RS:%x AT:%d P:%d.\n", ProcessHandle, BaseAddress, ZeroBits, *RegionSize, AllocationType, Protect);
origin:
    return g_NtAllocateVirtualMemory(ProcessHandle, BaseAddress, ZeroBits, RegionSize, AllocationType, Protect);
}

HOOK NtClose 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
NTSTATUS NTAPI HkFnNtClose(
    IN HANDLE Handle
) {
    if (!IsCurrentProcessTargetProcess())
        goto origin;
    DbgPrintEx(0, 77, "NtClose Parm:0x%x \n",Handle);
    if (Handle == (HANDLE)0xDEADC0DE)
    {
        DbgPrintEx(0, 0, "[ADF] NtClose 0xDEADC0DE Hit.\n");
        Handle = 0;
        goto origin;
    }
 
origin:
    return g_NtClose(Handle);
}

虚拟机加载驱动结果:

物理机加载驱动结果:

结论:说明物理机与虚拟机加载驱动都成功了

调用代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
//#include <processthreadsapi.h>
#include <windows.h>
 
int main()
{      
    char bb[0x20] = { 0 };
    HANDLE aa = OpenProcess(PROCESS_ALL_ACCESS, TRUE, GetCurrentProcessId());
    ReadProcessMemory(aa, main, bb, 0x20, NULL);   
    CloseHandle((HANDLE)0xDEADC0DE);       
    std::cout << "Hello World!\n"<< GetLastError() <<"\n";
     
    system("pause");
}

文件名为:testVMP.exe 因为:

运行程序debugview输出:
虚拟机如下图:

物理机如下图:

望有时间的大牛指点迷津。
文件代码:打包放在后面 发现不能传这么大 第一次发不知道:
网盘地址:https://www.123pan.com/s/cnGEjv-gXl3A.html


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2023-11-22 19:46 被foxkinglxq编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 401
活跃值: (1186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
新手发贴不知道怎么发   请大牛们见量
2023-11-22 19:49
0
雪    币: 401
活跃值: (1186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
难道只有我一个人碰到了过这问题吗?
2023-11-23 17:55
0
雪    币: 405
活跃值: (2280)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
GitHub上的那个有问题,在虚拟机和真机的标志不同,导致执行流程不同,虚拟机里能执行到,但真机执行不到,你自己调试跟踪看看就知道了。
2023-11-28 18:05
0
雪    币: 401
活跃值: (1186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
wowocock GitHub上的那个有问题,在虚拟机和真机的标志不同,导致执行流程不同,虚拟机里能执行到,但真机执行不到,你自己调试跟踪看看就知道了。
老大  能否麻烦你帮我看看具体哪个贴子  或者是搜哪个关键字。这个问题弄了困了好几天 一直不知道所以然  
2023-12-1 09:31
0
雪    币: 405
活跃值: (2280)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
foxkinglxq 老大 能否麻烦你帮我看看具体哪个贴子 或者是搜哪个关键字。这个问题弄了困了好几天 一直不知道所以然
以前调试过,解决方案就是换HOOK的函数指针。不要用他的那个。反正能HOOK的地方很多。
2023-12-1 17:27
0
游客
登录 | 注册 方可回帖
返回
//