首页
社区
课程
招聘
[旧帖] [求助]IDA分析dump下来的驱动遇到的问题 0.00雪花
2012-5-26 17:47 1628

[旧帖] [求助]IDA分析dump下来的驱动遇到的问题 0.00雪花

2012-5-26 17:47
1628
我想学习一下逆向,是从IDA开始学习。今天把自己写的一个很简单的驱动DUMP下来放IDA里,发现DriverEntry竟然出错。先检查了一遍代码,确定DriverEntry不是放在INIT节中,而是放在正常的TEXT节中,节的属性也是“Text Not pageable Executable Readable”。可是DriverEntry的代码就变成下面这个样子,百思不得其解,请教这是什么缘故?

; NTSTATUS __stdcall DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
.text:F8881000 DriverEntry     dd 80h dup(0)
.text:F8881200                 dd 380h dup(?)
.text:F8881200 _text           ends

补充:我用windbg可以正常uf出驱动入口的代码。

我的代码很简单:

NTSTATUS DriverEntry(
        PDRIVER_OBJECT pDriverObject,
        PUNICODE_STRING pRegistryPath
        )
{
        PVOID Object = NULL;
        HANDLE SystemHandle;        //ProcessId != HANDLE
        NTSTATUS status;
        CLIENT_ID ClientId;
/************************************************************************
typedef struct _CLIENT_ID
{
     PVOID UniqueProcess;
     PVOID UniqueThread;
} CLIENT_ID, *PCLIENT_ID;
*************************************************************************/

        OBJECT_ATTRIBUTES attr={
                sizeof(OBJECT_ATTRIBUTES),
                0,
                NULL,
                OBJ_CASE_INSENSITIVE                        // 对象名不区分大小写
                };
       
        ClientId.UniqueProcess = (PVOID)0x4;        // System进程的PID
        ClientId.UniqueThread = 0;

        //根据PID获取进程句柄
        status = ZwOpenProcess(
                &SystemHandle,
                PROCESS_QUERY_INFORMATION,
                &attr,                                                //这个参数必须提供,不能为NULL
                &ClientId
                );
        if(!NT_SUCCESS(status))
        {
                KdPrint(("open process failed!"));
                return STATUS_DEVICE_CONFIGURATION_ERROR;
        }       
        // 通过句柄获取对象指针
        status = ObReferenceObjectByHandle(
                SystemHandle,                                        //IN 对象的句柄
                PROCESS_QUERY_INFORMATION,                //IN 访问权限
                NULL,                                                        //IN 对象类型
                KernelMode,                                                //IN 内核模式还是用户模式
                &Object,                                                //OUT 指向对象指针的指针
                NULL                                                        //OUT OBJECT_HANDLE_INFORMATION 指针
                );
        if(NT_SUCCESS(status))
        {
                ObDereferenceObject(Object);        //减少引用计数               
        }
       
/************************************************************************/
        KdPrint(("Object: %X", Object));
        return STATUS_SUCCESS;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 73
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
pencilword 2012-5-27 12:23
2
0
PE基础知识有盲点,自己已解决
雪    币: 279
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
forlovefor 2012-5-27 22:04
3
0
是什么原因引起的呢.:
游客
登录 | 注册 方可回帖
返回