当前位置:  操作系统/服务器>windows
本页文章导读:
    ▪xp下hook IofCallDriver出错解决办法        xp下hook IofCallDriver出错先向将要帮助我的人表示感谢.问题是这样的:我根据《天书夜读》上的思路做了一个xp下hook IofCallDriver的小程序,当总是出错,用WinDbg单步调试时,最终的蓝屏代码为DRI.........
    ▪ netstat -a 中的foreign address 和 local address 含义是什么?解决思路        netstat -a 中的foreign address 和 local address 含义是什么?netstat   -a   中的foreign   address   和   local   address   含义是什么? :前是计算机名,:后表示端口吗?foreign address 外部地址 local addre.........
    ▪ 打开WORD文档时出现提示:“对话框打开时命令无法执行.该怎么解决       打开WORD文档时出现提示:“对话框打开时命令无法执行......最近双击word文档老是出现:"对话框打开时命令无法执行。单击"确定",然后关闭对话框以继续"的提示(如下图),  觉得很奇怪,到.........

[1]xp下hook IofCallDriver出错解决办法
    来源: 互联网  发布时间: 2014-02-18
xp下hook IofCallDriver出错
先向将要帮助我的人表示感谢.
问题是这样的:我根据《天书夜读》上的思路做了一个xp下hook IofCallDriver的小程序,当总是出错,用WinDbg单步调试时,最终的蓝屏代码为DRIVER_IRQL_NOT_LESS_OR_EQUAL,另外当不调试直接在OS中运行时,最终蓝屏代码为PAGE_FAULT_IN_NONPAGED
下面是关键的代码
C/C++ code

//driver.h
typedef PCHAR PBYTE;    //不想在一个一个替换了,so...
typedef NTSTATUS  (__fastcall *PIOFCALLDRIVER)(PDEVICE_OBJECT,PIRP);

typedef struct _DEVICE_EXTENSION {
    PDEVICE_OBJECT pDevice;
    UNICODE_STRING ustrDeviceName;    //设备名称
    UNICODE_STRING ustrSymLinkName;    //符号链接名
    PIOFCALLDRIVER nativerIofCallDriver;    //保存系统的IofCallDriver的地址
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;


//driver.cpp
#include "Driver.h"

ULONG g_uCR0;    //保存我们修改CRP寄存器之前的它的值
KSPIN_LOCK SDTSpinLock;

NTSTATUS FASTCALL MyIofCallDriver(IN PDEVICE_OBJECT,IN OUT PIRP);    //我们的IofCallDriver;
PIOFCALLDRIVER HookIofCallDriver(IN PIOFCALLDRIVER,
                                 IN BOOLEAN );    //Hook IofCallDriver or unhook
VOID WPOFF();        //
VOID WPON();    //

#pragma PAGEDCODE
VOID WPOFF()
{
    
    ULONG uAttr;
    
    _asm
    {
        push eax;
        mov eax, cr0;
        mov uAttr, eax;
        and eax, 0FFFEFFFFh; // CR0 16 BIT = 0
        mov cr0, eax;
        pop eax;
        cli
    };

    g_uCR0=uAttr;
}
VOID WPON()
{
    
    _asm
    {
        sti
        push eax;
        mov eax, g_uCR0; //恢復原有 CR0 屬性
        mov cr0, eax;
        pop eax;
    };    
}

#pragma PAGEDCODE 
NTSTATUS FASTCALL MyIofCallDriver(IN PDEVICE_OBJECT pDevObj,IN OUT PIRP pIrp)
{
    DbgPrint("HDM:This is MyIofCallDriver! You succeed!\n");

    PDEVICE_EXTENSION pdx=(PDEVICE_EXTENSION)pDevObj->DeviceExtension;

    return (*(pdx->nativerIofCallDriver))(pDevObj,pIrp);
}
#pragma PAGEDCODE
//
//当hookOrUnhook为TRUE时,IofCallDriver为我们的替换函数的地址
//当hookOrUnhook为FALSE时,则为系统IofCallDriver的地址
//无论是hook or unhook,当函数成功时,返回系统IofCallDriver的地址,否则返回NULL
PIOFCALLDRIVER HookIofCallDriver(IN PIOFCALLDRIVER IofCallDriver, 
                                       IN BOOLEAN hookOrUnhook)
{
    DbgPrint("HDM:Enter HookIofCallDriver\n");
    UNICODE_STRING functionName;
    PBYTE address=NULL;    //通过调用MmGetSystemRoutineAddress得到的IofCallDriver的入口地址
    PBYTE nativeIofCallDriver=NULL;    //IofCallDriver执行体的地址
    RtlInitUnicodeString(&functionName,L"IofCallDriver");

    //得到IofCallDriver的入口地址
    address=(PBYTE)MmGetSystemRoutineAddress(&functionName);

    if (address==NULL)
    {
        return NULL;
    }
    if (hookOrUnhook)
    {
        //通过反汇编可知,将上面得到的地址加两字节地址就是系统的IofCallDriver执行体的地址
        nativeIofCallDriver=(PBYTE)(*(PLONG)(address+2));


        KIRQL OldIrql;
        KeAcquireSpinLock( &SDTSpinLock, &OldIrql );
        WPOFF();

        InterlockedExchange((PLONG)(address+2),(LONG)IofCallDriver);

        WPON(); 
        KeReleaseSpinLock( &SDTSpinLock, OldIrql );
    }
    else
    {
        if (IofCallDriver)
        {    
            KIRQL OldIrql;
            KeAcquireSpinLock( &SDTSpinLock, &OldIrql );
            WPOFF();

            InterlockedExchange((PLONG)(address+2),(LONG)IofCallDriver);

            WPON(); 
            KeReleaseSpinLock( &SDTSpinLock, OldIrql );

            nativeIofCallDriver=(PBYTE)IofCallDriver;
        }
        else
        {
            return NULL;
        }
    }
    DbgPrint("HDM:Leave HookIofCallDriver\n");

    return (PIOFCALLDRIVER)nativeIofCallDriver;
}

#pragma INITCODE
NTSTATUS CreateDevice (
        IN PDRIVER_OBJECT    pDriverObject) 
{
    NTSTATUS status=STATUS_SUCCESS;
    PDEVICE_OBJECT pDevObj;
    PDEVICE_EXTENSION pDevExt;
    
    //创建设备名称
    UNICODE_STRING devName;
    RtlInitUnicodeString(&devName,L"\\Device\\XPHookIofCallDriver");
    
    //创建设备
    status = IoCreateDevice( pDriverObject,
                        sizeof(DEVICE_EXTENSION),
                        &(UNICODE_STRING)devName,
                        FILE_DEVICE_UNKNOWN,
                        0, TRUE,
                        &pDevObj );
    if (!NT_SUCCESS(status))
        return status;

    pDevObj->Flags |= DO_BUFFERED_IO;
    pDevExt = (PDEVICE_EXTENSION)pDevObj->DeviceExtension;
    pDevExt->pDevice = pDevObj;
    pDevExt->ustrDeviceName = devName;
    //创建符号链接
    UNICODE_STRING symLinkName;
    RtlInitUnicodeString(&symLinkName,L"\\??\\XPHookIofCallDriver");
    pDevExt->ustrSymLinkName = symLinkName;
    status = IoCreateSymbolicLink( &symLinkName,&devName );
    if (!NT_SUCCESS(status)) 
    {
        IoDeleteDevice( pDevObj );
        return status;
    }

    
    pDevExt->nativerIofCallDriver=HookIofCallDriver(MyIofCallDriver,TRUE);

    if (pDevExt->nativerIofCallDriver==NULL)
    {
        IoDeleteDevice(pDevObj);
        IoDeleteSymbolicLink(&symLinkName);
        status=STATUS_UNSUCCESSFUL;
    }
    return status;
}

 

    
[2] netstat -a 中的foreign address 和 local address 含义是什么?解决思路
    来源: 互联网  发布时间: 2014-02-18
netstat -a 中的foreign address 和 local address 含义是什么?
netstat   -a   中的foreign   address   和   local   address   含义是什么?
:前是计算机名,:后表示端口吗?


foreign address 外部地址

local address 本地地址

Proto :协议(TCP/UDP)
Local Address :本地地址:端口
Foreign Address:外部地址:端口 
State: 内部地址与外部地址的连接状态
1. 连接 Establishment
客户端发送Tcp的SYN 消息包含服务器的端口和客户初始序列号码到服务器.
服务器发送回自己 SYN 和 ACK (由客户 ISN + 1)。
客户端发送一个 ACK (由服务器 ISN + 1)。
2.指明 SYN_SEND 活动打开。
只 SYN_RECEIVED 服务器从客户端收到 SYN。
ESTABLISHED 客户接收服务器 SYN 和建立会话。
LISTEN 服务器已准备好接受连接。


那就是本地进程调用本地服务呀。

    
[3] 打开WORD文档时出现提示:“对话框打开时命令无法执行.该怎么解决
    来源: 互联网  发布时间: 2014-02-18
打开WORD文档时出现提示:“对话框打开时命令无法执行......

最近双击word文档老是出现:"对话框打开时命令无法执行。单击"确定",然后关闭对话框以继续"的提示(如下图), 



觉得很奇怪,到网上搜了一下,发现问题是杀毒软件对office2003支持不好的原因(只有安装了OFFICE2003才有此现象),我的就是安装的office2003。出现对话框的原因是:在杀毒软件的选项中,启用了office插件的保护功能,去掉选项,打开word文件时就不会出现这个对话框。 
一、如果你安装的是诺顿
具体的解决方法是:
  右键点击右下角的图标,选择 "配置Norton Antivirus"
  在弹出的对话框内找到"杂项"选项
  如果在"启用Office插件"前面有对号的话,将它点掉,确定退出后就ok了 

二、如果你安装的是瑞星
具体的解决方法是:
  设置—>详细设置—>嵌入式杀毒,去掉"使用Office/IE嵌入式杀毒"前的勾即可。 

  或设置"其他设置"中,将"使用office/IE安全助手"前面的勾取消就能解决问题。
三、Microsoft解释: 

症状:

如果通过双击一个文档(例如,在 Microsoft Windows 资源管理器中)来在 Microsoft Office Word 2003 中打开该文档,则会收到下面的错误信息:The command cannot be performed because a dialog box is open.Click "OK" and then close open dialog boxes to continue.在 Microsoft Word 2002 中不会收到这一错误信息。 

原因:
  如果 Startup 文件夹中有一个 Word 2003 模板,该模板中包含能打开对话框的自动执行 (autoexec) 宏,则可能发生此问题。 

  替代方法
方法 1:
  在 Word 中打开要在 Word 中直接打开文档,请按下列步骤操作:
1. 启动 Word 2003。 
2. 在"文件"菜单上,单击"打开"。 
3. 在"打开"对话框中,选择要打开的文档,然后单击"打开"。 

方法 2:
  从 Startup 文件夹中删除模板,要从 Startup 文件夹中删除模板,请按下列步骤操作:
1. 退出 Word 2003。 
2. 单击"开始",指向"程序",指向"附件",然后单击"Windows 资源管理器"。 
3. 找出下列二个文件夹之一:
Documents and Settings\username\Application Data\Microsoft\Word\Startup
Program Files\Microsoft Office\Office11\Startup
4. 双击以打开"Startup"文件夹。 
5. 在 Windows 资源管理器的右窗格中,单击以选择要删除的模板,然后按 Delete 键。



现在病毒越来越多了,真的要想办法解决他们!

    
最新技术文章:
▪文件转换有关问题     ▪ 3ds max 2009 mentalray遇到内存相关的错,该怎么解...    ▪ 文萃ocr的注册码哪位高手有
▪常见文件密码的设置与解除解决思路     ▪ 数据恢复软件哪个好用?该怎么处理     ▪ vmware高手帮忙解决一个常见有关问题
▪求会声会影的注册机啊 到处找不到 T_T,该怎么...    ▪ 急求!硬盘解密软件。解决思路     ▪ 大侠们有改过chrome的临时文件夹的吗?小弟我...
▪怎么在windows下查看计算机的内存大小     ▪ 宏基玩2k10的有关问题     ▪ 求日语操作系统;链接解决思路
▪怎样制作软件自动安装解决思路     ▪ UtrlEdit重新加载已更新的文件内容时,不让其...    ▪ 小弟我的数据库卸载后装不上怎么处理
▪win7的编程工具选择?该如何解决     ▪ 开机按回车咋办,该怎么解决     ▪ 怎么刻录一张系统盘
▪强行卸载如何用哦?     ▪ 为什么QQ音乐的乐库打不开,显示是一片空白...    ▪ 如何控制局域网其它电脑的流量啊宿舍人老...
▪AutoPlay Menu Loader 5.1.0.341,该如何解决     ▪ 100分求个软件免费或收费的都可以,最好熟...    ▪ 远程桌面连接如何设置磁盘共享
▪请教怎么知道TXT文件的编码方式呢     ▪ QQ收件箱中的邮件不知不觉被自动删除了解决...    ▪ qq如何去广告
▪双击C与C++程序设计学习与实验系统,就打开...    ▪ 急电脑黑屏的原因,该怎么解决     ▪ 请问Sdelete这个软件的使用方法
▪虚拟机中怎么切换     ▪ “假的”mp4视频文件怎么打开     ▪ XP照片缩略图和照片本身显示不一致解决思路...
▪激光检测仪数控机床日文的,该如何处理     ▪ 怎么打开*crp格式的文件     ▪ 联想Z465玩魔兽争霸黑屏,大侠帮帮忙解决一下...
▪u盘插入电脑时报错!解决方案     ▪ Pixelpop有人用过吗?解决方法     ▪ 加快解压速度小弟我有招
▪高分,小弟我是windows xp的系统,请教如何才...    ▪ 加密网页怎样破解密码?解决办法     ▪ 佛爱小弟我羊老师请进
▪Runtime Error (-1:0): Cannot Import dll,该如何解决     ▪ 关于刻录系统光盘的有关问题     ▪ CCPROXY的有关问题(结贴100%)
▪print screen键不能截屏?该怎么处理     ▪ 用Serv-U做了个FTP服务器,为什么浏览器不能...    ▪ ftp下载稍微大一点的文件时不让下载,该如何...
▪Internet Explorer删除不了解决思路     ▪ 安装在开始菜单里面程序的位置为什么不同...    ▪ 赛扬2.8GHz的CPU内存1GB双硬盘能跑VMware Workstatio...
▪VisualSVN Server 经常异常覆盖如何解决     ▪ 怎么封装(打包)exe文件     ▪ 重新打开ie的自动密码保存要如何做
▪请教windows多久自动清空IE缓存     ▪ 高手帮忙看下这个autohotkey脚本,快捷复制粘贴...    ▪ 怎办?winpcap 4.1.2 安装失败!该怎么解决
▪ultraedit里,当选择列模式时,用用查找替换功...    ▪ intel MKL pardiso求解大型稀疏矩阵,是不是很浪...    ▪ cmd 中的管道是哪个程序在前?解决方法
▪金山词霸PDF取词插件解决方案解决思路     ▪ 想要学习ps,该怎么解决     ▪ WinRAR自解压时能否读取注册表中的信息,来...
▪怎么架设多对多媒体服务器     ▪ VMware解决方法     ▪ 腾讯Q+平台怎么申请接口
▪应用程序作为系统服务。解决办法     ▪ (文件编码有关的字符串替换)通过CMD批处理,...    ▪ 234.34.23.234:33674这个ip地址一般是用来做什么...
▪视频会议软件用什么样的好呢?解决办法     ▪ 怎么将ActiveX控件Cab包制作成EXE安装格式     ▪ 怎样从硬盘安装苹果雪豹系统,该如何处理
▪关于邮件组的有关问题!请专业邮箱技术支持...    ▪ 打印机有关问题     ▪ window下的vim怎么不产生备份文件
▪急 压缩文件夹,该怎么处理     ▪ Multisim软件如何样?那里有安装文件     ▪ 问个关于分区的小疑点啊很简单,来拿分啦
▪批处理高手帮忙了 啊 送分中,该怎么处理     ▪ wix打包发布 如何更改默认的安装包图标     ▪ 酷狗*krc歌词的文件结构及压缩算法
▪小弟我是个大笨鸟哪位高手帮帮小弟我     ▪ 哪款浏览器占用内存较少?解决办法     ▪ 有关问题
▪请教Polaris Office的文件格式能转换为pdf吗     ▪ wmp是用什么解码器比较好?该如何解决     ▪ 求Ardence.RTX.v7.0.SDK Ardence.RTX.v7.0.Runtime 下载解...
▪使用wireshark抓包,wireshark上显示的时间和pc时...    ▪ windows live mail 按send/receive 怎么不send,只receiv...    ▪ 某个exe程序始终无法运行,任务管理器里闪...
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3