首页
论坛
课程
招聘
R3跳过NTDLL调用内核函数参数问题
2020-9-6 14:59 1165

R3跳过NTDLL调用内核函数参数问题

2020-9-6 14:59
1165

系统是64位  在x32进程里hook ntdll!NtOpenProcess 然后转到自己驱动里  调用NtOpenProcess 参数是怎么转换的  ,试了几次无法调用成功




驱动层

         case IOCTL_NtOpenProcess:
        {
            DBG_LOG_DEBUG("IOCTL_NtOpenProcess 被调用");
            PAEAM_NtOpenProcess *ioBuffer = (PAEAM_NtOpenProcess *)pIoBuffer;
             if (ioBuffer == NULL)
            {
                status = STATUS_INVALID_PARAMETER;
                 DBG_LOG_DEBUG("IOCTL_NtOpenProcess 被调用 失败了");
            }
            else
            {
               status = ddk::myNtOpenProcess(ioBuffer->ProcessHandle,ioBuffer->DesiredAccess,ioBuffer->ObjectAttributes,ioBuffer->ClientId);
            }
            break;
        }

应用层

NTSTATUS NTAPI myNtOpenProcess
    (
    __out PHANDLE ProcessHandle,
    __in ACCESS_MASK DesiredAccess,
    __in POBJECT_ATTRIBUTES ObjectAttributes,
    __in_opt PCLIENT_ID ClientId)
{
    NTSTATUS Status;
    DWORD lResultLength;
    PAEAM_NtOpenProcess_32 param;
    param.ProcessHandle = ProcessHandle;
    param.DesiredAccess = DesiredAccess;
    param.ObjectAttributes = (ObjectAttributes;
    param.ClientId = ClientId;

    DeviceIoControl(g_Driver,IOCTL_NtOpenProcess, &param,sizeof(param),&Status,sizeof(Status),&lResultLength,0);
    return Status;
}



【公告】看雪团队招聘安全工程师,将兴趣和工作融合在一起!看雪20年安全圈的口碑,助你快速成长!

最后于 2020-9-6 15:00 被~时光荏苒编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 6593
活跃值: 活跃值 (2055)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
hhkqqs 活跃值 1 2020-9-6 15:48
2
0
槽点太多,建议先把wow64那三个dll的F5看完
雪    币: 163
活跃值: 活跃值 (214)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
逍遥m 活跃值 2020-9-6 16:08
3
0
你把应用层的参数打印出来,驱动层的参数打印打出来,有可能是因为参数传递不正确。
雪    币: 1250
活跃值: 活跃值 (1121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
~时光荏苒 活跃值 2020-9-6 16:37
4
0
hhkqqs 槽点太多,建议先把wow64那三个dll的F5看完
再研究研究
雪    币: 1250
活跃值: 活跃值 (1121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
~时光荏苒 活跃值 2020-9-6 16:38
5
0
逍遥m 你把应用层的参数打印出来,驱动层的参数打印打出来,有可能是因为参数传递不正确。
我去试试看
游客
登录 | 注册 方可回帖
返回