首页
社区
课程
招聘
[讨论]一段使装了Softice的机器蓝屏的代码
发表于: 2006-12-30 15:16 4280

[讨论]一段使装了Softice的机器蓝屏的代码

2006-12-30 15:16
4280
目标机器是Win2kSP4 中文版,
Softice是 DS2.7

我是在虚拟机里面测试的。

#include "stdafx.h"
#include "windows.h"
#pragma comment(lib,"kernel32.lib")

int GxMain()
{
       
       
        _asm
        {
                CALL CreateSEH

                PUSH ECX
                MOV  ECX,ESP
                ADD  ECX,0x10
                MOV  ECX, DWORD PTR [ECX]
                MOV  DWORD PTR [ECX],0x10013
                ADD  ECX,0x18
                MOV AL,BYTE PTR [ECX]
                ADD ECX,0x9C
                ADD BYTE PTR [ECX],AL
                ADD ECX,4
                PUSH EBX
                LEA  EBX,Return_SEH
                MOV DWORD PTR [ECX],EBX
                POP  EBX
                XOR EAX,EAX
                XCHG DWORD PTR [ESP],EDI
                MOV ECX,EDI
                POP EDI
                RETN

CreateSEH:
                PUSH FS:[0]
                MOV  FS:[0], ESP
                _emit 0xF0                                                // LOCK INT3
                _emit 0xCC
               
       

Return_SEH:
                NOP
        }

       

        ExitProcess(0);
        return 0;

}

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个代码是从ExeCryptor 2.26里面挖出来的

非常奇怪的是。 把

    PUSH EBX
    LEA  EBX,Return_SEH
    MOV DWORD PTR [ECX],EBX
    POP  EBX
几条指令注释掉, 就不会蓝屏了。

真实机器没测试过
2006-12-30 15:18
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
BUG具体原因不是很清楚,
但是如果断点在
_KiServiceExit2+009C的地方

POP GS    ;这时候堆栈中的值是 FCAE00A7, ESP的值为 F56D1D94
POP ES
POP ES

如果把 FCAE00A7这个值改成 0,就不会蓝屏了。

FCAE00A7这个地址在
Softice的 NTice.sys的驱动的代码中

.text:0005F0A2 E8 D1 00 00 00                    call    sub_5F178      
.text:0005F0A7 66 3B 05 19 ED 0E+                cmp     ax, ds:word_EED19
.text:0005F0AE 75 14                             jnz     short loc_5F0C4
.text:0005F0B0 E8 A2 5E FD FF                    call    sub_34F57
.text:0005F0B5 E8 43 02 00 00                    call    sub_5F2FD
.text:0005F0BA E8 3F 5E FD FF                    call    sub_34EFE
.text:0005F0BF E9 AD 00 00 00                    jmp     loc_5F171
.text:0005F0C4                   ; ------------------------------------

在Softice中断点
bpmb F56D1D94 W

断到后来 Vmware机器发生致命错误,当掉了。。
所以无法知道到底是哪块代码将 F56D1D94  指向的内容改成一个超大的值。 一时找不到原因。。。

水平太菜, 有时间再研究一下,呵呵。
2006-12-30 15:58
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可以通过给系统打补丁的方法来解决这个问题。

80465921  LEA, ESP, [ESP+30]
80465925  POP GS

修改成
80465921  LEA, ESP, [ESP+34]
80465925  NOP

即不进行 POP GS的操作。
2006-12-30 16:23
0
游客
登录 | 注册 方可回帖
返回
//