首页
社区
课程
招聘
[求助]帮忙看下为什么蓝屏
2008-4-16 18:35 11329

[求助]帮忙看下为什么蓝屏

2008-4-16 18:35
11329
我想遍历acpi.sys的导出表......已经得到它在内存中的正确地址hMod

    dosheader = (IMAGE_DOS_HEADER *)hMod;
   
    opthdr =(IMAGE_OPTIONAL_HEADER *) ((BYTE*)hMod+dosheader->e_lfanew+24);
   
    pDataEntryAddress = (IMAGE_IMPORT_DESCRIPTOR *)((BYTE*)dosheader+ opthdr->DataDirectory[1].VirtualAddress);
   
    if( NULL == pDataEntryAddress) return 0;
               
    pszModName = (char*)((DWORD)hMod + pDataEntryAddress->Name);----->>>这一句就蓝屏...请教大家给个提示
   DbgPrint(" %s \n",pszModName);

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (23)
雪    币: 7651
活跃值: (493)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
achillis 15 2008-4-16 18:54
2
0
pszModName= (char *)((PBYTE)hMod+pDataEntryAddress->Name) ;
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-16 18:59
3
0
不行啊,,,,,,,原先就是用(PBYTE)hMod的.......还是蓝屏..我也觉得奇怪..平时都没什么问题
蓝屏信息提示是 PAGE_FAULT_IN_NONPAGE_AREA
雪    币: 7651
活跃值: (493)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
achillis 15 2008-4-16 19:14
4
0
那我估计原因不在后面的部分。
可能是你的 pszModName变量定义有问题。
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-16 19:15
5
0
char* pszModName;
这次我真晕....就是不知道为什么
雪    币: 7651
活跃值: (493)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
achillis 15 2008-4-16 19:18
6
0
IAT hook而已嘛。
赋值出错,而且后面部分又没有问题,只能这么怀疑了。
你把你的代码多贴一些
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-16 22:13
7
0
刚上完课....IAT HOOK我已经在编程版块贴过了
这是我的代码...帮忙一下....就是修改了我以前IAT HOOK的代码

#include "ntddk.h"

#include "hookiat.h"

#pragma comment(lib,"ntdll.lib")
       

PVOID GetDriverBaseAdress(char* driverName)
{
        ULONG size,index;
        PULONG buf;
                NTSTATUS status;
        PSYSTEM_MODULE_INFORMATION module;
        PVOID driverAddress=0;

        ZwQuerySystemInformation(SystemModuleInformation,&size, 0, &size);
    if(NULL==(buf = (PULONG)ExAllocatePool(PagedPool, size)))
        {
                DbgPrint("failed alloc memory failed  \n");
                return 0;
        }
    status=ZwQuerySystemInformation(SystemModuleInformation,buf, size , 0);
        if(!NT_SUCCESS( status ))
        {
       DbgPrint("failed  query\n");
           return 0;
        }
    module = (PSYSTEM_MODULE_INFORMATION)(( PULONG )buf + 1);
        for (index = 0; index < *buf; index++)
        if (_stricmp(module[index].ImageName + module[index].ModuleNameOffset, driverName) == 0)  
        {
        driverAddress = module[index].Base;
        DbgPrint("Module found at:%x\n",driverAddress);
        }
        ExFreePool(buf);
        return driverAddress;
}       
       
       
       
        VOID GetIATPointerRVAFromBase()
{
        HANDLE   hMod;
        PVOID BaseAddress ;
        char* pszModName;
        IMAGE_DOS_HEADER * dosheader;
        IMAGE_OPTIONAL_HEADER * opthdr;
        IMAGE_IMPORT_DESCRIPTOR * pDataEntryAddress;
       
        BaseAddress=  GetDriverBaseAdress("acpi.sys");
                hMod = BaseAddress;

        dosheader = (IMAGE_DOS_HEADER *)hMod;
    opthdr =(IMAGE_OPTIONAL_HEADER *) ((BYTE*)hMod+dosheader->e_lfanew+24);
    pDataEntryAddress = (IMAGE_IMPORT_DESCRIPTOR *)((BYTE*)dosheader+ opthdr->DataDirectory[1].VirtualAddress);
   
     pszModName= (char *)((PBYTE)hMod+pDataEntryAddress->Name) ;---------------------------->>>>>>>>>蓝屏
     DbgPrint(" %s \n",pszModName);

       

}

VOID Unload(PDRIVER_OBJECT  DriverObject)
{   
    DbgPrint("Unload Called \r\n");
   
}

NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING str)
{
       

        GetIATPointerRVAFromBase( );
                DriverObject->DriverUnload = Unload;
        return STATUS_SUCCESS;
}
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-17 07:45
8
0
郁闷中......没头绪
雪    币: 191
活跃值: (41)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
小喂 5 2008-4-17 09:09
9
0
PAGE_FAULT_IN_NONPAGE_AREA
从这个错误码来看,可能访问的内存被换出去了。看看蓝屏时的 irql,是不是太高了。用 !pte 命令看看当前访问的内存是不是有效。
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-17 09:31
10
0
这个代码应该没有运行在DISPATCH_LEVEL级别上吧...缺页应该不会蓝屏.....不知道是不是我机器的原因.........而且我试了降低级别也不行........郁闷
下面是蓝屏截图还有dmp文件
上传的附件:
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-18 17:36
11
0
因为之前HOOK驱动程序的IAT..........所以想检测内核模块IAT HOOK........可是就是不能遍历内核模块的导入函数................可能有一些东西我不知道.....麻烦大家指教下........我发现一些anti-rootkit没有这个功能...是不是不可能实现????
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
Aker 4 2008-4-18 19:22
12
0
GetDriverBaseAdress返回的地址你输出看看,用MmIsAddressValid看看有效性,

另外这个 opthdr =(IMAGE_OPTIONAL_HEADER *) ((BYTE*)hMod+dosheader->e_lfanew+24);也用IMAGE_NT_HEADERS,不要手写偏移
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-18 20:31
13
0
返回地址是正确的......我也试了IMAGE_NT_HEADERS...不过还是蓝屏..正郁闷...遍历内核模块的导入表怎么老出问题
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
断水流 1 2008-4-18 23:48
14
0
因为那块内存被丢弃了。。。所以蓝屏
雪    币: 1946
活跃值: (238)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
Bughoho 8 2008-4-18 23:51
15
0
加锁  加锁
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
断水流 1 2008-4-18 23:52
16
0
加锁也没用。。。已经被丢弃了。。。不是被换出去了
雪    币: 1946
活跃值: (238)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
Bughoho 8 2008-4-18 23:54
17
0
原来是这样,断水流好棒呀。
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-18 23:58
18
0
这个问题我真的很郁闷.........不运行在DISPATCH_LEVEL级别怎么缺页会蓝...........
而且任何内核模块...除了ntdll.dll都会蓝....就是不明白真正的原因
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-19 00:00
19
0
那是不是驱动被IAT HOOK了...就不能检测了???......指的是磁盘文件跟内存的比较
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
断水流 1 2008-4-19 10:14
20
0
那段内存被丢弃了,跟IRQL没关系。。。
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
断水流 1 2008-4-19 10:15
21
0
可以检测啊,自己读取文件呗
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-19 10:20
22
0
读取文件我读了...可以....但是想跟内存做比较......但内存遍历就这样了...蓝
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
断水流 1 2008-4-19 10:27
23
0
比较的时候注意跳过被丢弃的内存
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 14 2008-4-19 10:30
24
0
哦.....谢谢提醒..这么说不是整个导入表被丢弃....还有一些在内存..........我试看
游客
登录 | 注册 方可回帖
返回