首页
社区
课程
招聘
[求助]函数压栈的蓝屏求助
发表于: 2014-5-28 12:25 3580

[求助]函数压栈的蓝屏求助

2014-5-28 12:25
3580
有个问题各位能帮解决的帮忙看一下,下面的 NewJmpNtOpenKey()应该是有错误的,加载,运行驱动都不会蓝,但是一开360,PCHunter或者调试内核的软件,直接蓝

void FilterNewNtOpenKey(
                                   PHANDLE KeyHandle,  
                   ACCESS_MASK DesiredAccess,  
                   POBJECT_ATTRIBUTES ObjectAttributes
)
{
         KdPrint(("有程序正在调用NewNtOpenKey"));
         _asm pushad
         _asm pushfd
        
          //过滤代码
         _asm popad
         _asm popfd
        
        
}

__declspec(naked)
void NewJmpNtOpenKey(){
        DbgPrint("Enter my hook NtOpenKey!");
        __asm{
        pushad
    push   [ebp+0x10]
    push   [ebp+0xc]
    push   [ebp+8]
        call FilterNewNtOpenKey
        popad
        mov edi,edi
        push ebp
    mov ebp,esp
    jmp g_ntopenkey_jmp        
    }
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 398
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
第二个函数call FilterNewNtOpenKey后,栈不平衡了吧。。在call FilterNewNtOpenKey后,再add esp 0X0B试一下。。

第一个函数_asm pushad
         _asm pushfd
        
          //过滤代码
         _asm popad
         _asm popfd

出栈和进栈不对应了。。
2014-5-28 12:41
0
雪    币: 70
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
抓取dump文件,分析发生蓝屏的root cause.
2014-5-28 12:43
0
雪    币: 66
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
_asm pushad
         _asm pushfd
        
          //过滤代码
         _asm popad
         _asm popfd

这四句的代码错误了。
应该是

pushad
pushfd
popfd
popad

至于调用约定我就不知道默认约定是啥了。
2014-5-28 13:06
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
__asm{
        pushad
    push   [ebp+0x10]
    push   [ebp+0xc]
    push   [ebp+8]
        call FilterNewNtOpenKey
        popad

我感觉我这里写错了....
2014-5-28 14:05
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
但是不知道具体错在哪,,
2014-5-28 14:21
0
雪    币: 77
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
抓取dump文件进行分析,光是上代码不行的,dump文件说明一切问题
2014-5-28 15:15
0
雪    币: 459
活跃值: (398)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
8
_asm pushad
         _asm pushfd
        
          //过滤代码
         _asm popad
         _asm popfd

这个我也犯过,搞了半天,最后骂了自己一句二货。 先入先出
2014-5-28 16:50
0
雪    币: 1
活跃值: (1174)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
完全可以直接用C的,为什么要内嵌汇编
2014-5-28 18:53
0
游客
登录 | 注册 方可回帖
返回
//