91103581
驱动牛犊
驱动牛犊
  • 注册日期2006-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分185分
  • 威望55点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
阅读:2074回复:10

新人,一个定时器蓝屏的问题,请大家帮帮忙!

楼主#
更多 发布于:2007-04-13 12:18
  代码片段如下:

KTIMER timer;
LARGE_INTEGER duetime;
KDPC dpc;

VOID
TimerFunc(
          IN PVOID SystemSpecific1,
          IN PVOID FunctionContext,
          IN PVOID SystemSpecific2,
          IN PVOID SystemSpecific3
          );

NTSTATUS DriverEntry (IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
{
...
duetime.QuadPart = -1000;
ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
KeInitializeTimer(&timer);
KeInitializeDpc(&dpc, (PKDEFERRED_ROUTINE)TimerFunc, NULL);
KeSetTimerEx(&timer, duetime, 6000, &dpc);
...
}

VOID
TimerFunc(
          IN PVOID SystemSpecific1,
          IN PVOID FunctionContext,
          IN PVOID SystemSpecific2,
          IN PVOID SystemSpecific3
          )
{
    OBJECT_ATTRIBUTES oa;
    UNICODE_STRING RegistryKey;
    UNICODE_STRING valname;
    WCHAR value[50];
    HANDLE hkey = NULL;
    NTSTATUS status;
    KIRQL oldirql;
    
    RtlInitUnicodeString(&valname, L"HelloWin");
    RtlInitUnicodeString(&RegistryKey, L"\\Registry\\Machine\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");

    swprintf(value, L"D:\\vc_code\\HelloWin\\Release\\HelloWin.exe");
    
    InitializeObjectAttributes(&oa, &RegistryKey, OBJ_CASE_INSENSITIVE, NULL, NULL);
    
    status = ZwCreateKey(&hkey, KEY_READ | KEY_WRITE, &oa, 0, NULL,
        REG_OPTION_NON_VOLATILE, NULL); //REG_CREATED_NEW_KEY
    if (NT_SUCCESS(status))
    {
        DbgPrint("hkey: %d\n", hkey);
        ZwSetValueKey(hkey, &valname, 0, REG_SZ, value, sizeof(value) );
        ZwClose(hkey);
    }
//    DbgPrint("hello a");
}

注册表操作在DriverEntry下没问题,在TimerFunc里蓝屏提示KMODE_EXCEPTION_NOT_HANDLED错误。

我是新手,还望大家多帮帮忙。
我的QQ:9076677,希望多交流呀

最新喜欢:

xkolxkol shallchenshallc...
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-04-16 08:58
我要是LZ,就暴力写个任意注册表键,等牛人们都说了,然后再偷偷替换成流氓行为,岂不爽哉,嘿嘿。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wangjianfeng
驱动小牛
驱动小牛
  • 注册日期2004-05-28
  • 最后登录2013-10-02
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望263点
  • 贡献值0点
  • 好评度260点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-16 08:42
的确,不停写RUN项,百分之百流氓行为.
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
地板#
发布于:2007-04-16 07:18
暴力写run 项,不是流氓还有谁?
驱动开发者 呵呵
91103581
驱动牛犊
驱动牛犊
  • 注册日期2006-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分185分
  • 威望55点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-04-15 08:45
看来这里的人还是瞒热心的哦
为什么每在发贴子的时候,我就有灵感了
其实我也想到用Event了,谢谢~~我也嘿嘿一下
还有,为什么说是流氓?
难道用注册表函数就算是流氓吗/嘿嘿.
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
5楼#
发布于:2007-04-15 08:12
引用第3楼911035812007-04-14 12:48发表的“”:
谢谢大家!
原来是IRQL的问题,这驱动下编程还有这多屁事。
我修改了,创建了一个线程,在线程函数里面问题又来了。
我写了个死循环来做一些重复性的事情,并用KeDelayExecutionThread来延时。
但是在我Unload驱动的时候,又蓝屏了,真是惨啊,难道不能用死循环吗,那怎么做呢?



需要在unload的时候推出,你需要用格Event~
嘿嘿,至于如何使用,就看你自己的啦~
没有战争就没有进步 X3工作组 为您提供最好的军火
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2007-04-15 00:16
流氓呀流氓
ZwCreateKey?
我要逼所有流氓去直接读写HIVE
驱动开发者 呵呵
91103581
驱动牛犊
驱动牛犊
  • 注册日期2006-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分185分
  • 威望55点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-04-14 21:53
我顶~~
91103581
驱动牛犊
驱动牛犊
  • 注册日期2006-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分185分
  • 威望55点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-04-14 12:48
谢谢大家!
原来是IRQL的问题,这驱动下编程还有这多屁事。
我修改了,创建了一个线程,在线程函数里面问题又来了。
我写了个死循环来做一些重复性的事情,并用KeDelayExecutionThread来延时。
但是在我Unload驱动的时候,又蓝屏了,真是惨啊,难道不能用死循环吗,那怎么做呢?
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
9楼#
发布于:2007-04-13 14:52
哈哈~所以需要用一个线程,用KeDelay来延时,另外验证irql
没有战争就没有进步 X3工作组 为您提供最好的军火
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-04-13 13:21
注意你的IRQL

TimerFunc在DISPATCH上
ZwCreateKey 不能使用
www.xDrv.com
游客

返回顶部