📄 softice.h
字号:
//////////////////////////////////////////////////////////////////////////////
#define TYPE_ActivateBPs (VOID(__stdcall*)(VOID))
#define OFS_ActivateBPs 0
UCHAR PAT_ActivateBPs[] =
{
0x80, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x01, // cmp dw_IsBPActivated,1
0x74, _XX_, // jz short locret_41BD4
0x80, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x01, // cmp dwNumberOfBPs?,1
0x74, _XX_, // jz short locret_41BD4
0x83, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x00, // cmp dword_C28AC+1,0
0x74 // jz short loc_41BD5
};
//////////////////////////////////////////////////////////////////////////////
// pDeactivateBPs
//////////////////////////////////////////////////////////////////////////////
#define TYPE_DeactivateBPs (VOID(__stdcall*)(VOID))
#define OFS_DeactivateBPs 0
UCHAR PAT_DeactivateBPs[] =
{
0x80, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x00, // cmp dwNumberOfBPs?, 0
0x75, 0x01, // jnz short loc_418EA
0xC3, // retn
//loc_418EA:
0x60, // pusha
0x06, // push es
0x66, 0x8E, 0x05 // mov es, wNTICE_SS
};
//////////////////////////////////////////////////////////////////////////////
// pShowBreakReason
//////////////////////////////////////////////////////////////////////////////
#define TYPE_ShowBreakReason (VOID(__stdcall*)(VOID))
#define OFS_ShowBreakReason 0
#define OFS_BreakReason 2
UCHAR PAT_ShowBreakReason[] = // code pattern
{
0x81, 0x3D, _XX_, _XX_, _XX_, _XX_, _XX_, 0x00, 0x01, 0x00, // cmp dBreakReason, 100xxh
// ^^^^^^^^^^^^^^^^^^^^^^ - BreakReason
0x76, _XX_, // jbe short loc_30512
0xF8, // clc
0xC3, // retn
0xBF // mov edi, ...
};
//////////////////////////////////////////////////////////////////////////////
// pSetCursorShape
//////////////////////////////////////////////////////////////////////////////
#define TYPE_SetCursorShape (VOID(__stdcall*)(VOID))
#define OFS_SetCursorShape 0
UCHAR PAT_SetCursorShape[] =
{
0xA2, _XX_, _XX_, _XX_, _XX_, // mov byte_B07E9, al
0x50, // push eax
0xE8, _XX_, _XX_, _XX_, _XX_, // call sub_778BA
0x58, // pop eax
0x80, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x00, // cmp byte_C28B8, 0
0x74, 0x01, // jz short loc_38C38
0xC3 // retn
//loc_38C38:
};
//////////////////////////////////////////////////////////////////////////////
// pCallVideoDriver
// pCallVideoDriver_1x
//////////////////////////////////////////////////////////////////////////////
#define TYPE_CallVideoDriver_1x (VOID(__stdcall*)(VOID))
#define TYPE_CallVideoDriver (VOID(__stdcall*)(VOID))
#define OFS_CallVideoDriver_1x 0
#define OFS_CallVideoDriver 18
UCHAR PAT_CallVideoDriver_1x[] =
{
0x60, // pusha
0x80, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x01, // cmp VidDrv_1_flag, 1
0x75, _XX_, // jnz short loc_376AC
0xE8, _XX_, _XX_, _XX_, _XX_, // call sub_36536
0xB0, 0x01, // mov al, 1
0xE8, _XX_, _XX_, _XX_, _XX_, // call pCallVideoDriver
0xC6, 0x05, _XX_, _XX_, _XX_, _XX_, 0x01, // mov byte_AFD2F, 1
//loc_376AC:
0xE8, _XX_, _XX_, _XX_, _XX_, // call pUpdateScreen
0x61, // popa
0xC3 // retn
};
//////////////////////////////////////////////////////////////////////////////
// pSaveClientRegisters
//////////////////////////////////////////////////////////////////////////////
#define TYPE_SaveClientRegisters (VOID(__stdcall*)(VOID))
#define OFS_SaveClientRegisters 0
UCHAR PAT_SaveClientRegisters[] =
{
0x50, // push eax
0x55, // push ebp
0x8B, 0xEC, // mov ebp, esp
0x1E, // push ds
0x66, 0x2E, 0x8E, 0x1D, _XX_, _XX_, _XX_, _XX_, // db 66h
// mov ds, cs:wNTICE_SS
0xA3 // mov dClient_EAX, eax
};
//////////////////////////////////////////////////////////////////////////////
// pSayESI
//////////////////////////////////////////////////////////////////////////////
#define TYPE_SayESI (VOID(__stdcall*)(VOID))
#define OFS_SayESI 0
#define OFS_NormCharColor 3
UCHAR PAT_SayESI[] =
{
0x53, // push ebx
0x8A, 0x3D, _XX_, _XX_, _XX_, _XX_, // mov bh, bNormCharColor
0xE8, _XX_, _XX_, _XX_, _XX_, // call pSayESIcolor
0x5B, // pop ebx
0xC3 // retn
};
//////////////////////////////////////////////////////////////////////////////
// pSayESIpause
//////////////////////////////////////////////////////////////////////////////
#define TYPE_SayESIpause (VOID(__stdcall*)(VOID))
#define OFS_SayESIpause 0
UCHAR PAT_SayESIpause[] =
{
0x83, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x00, // cmp dword_125184, 0
0x74, _XX_, // jz short loc_38085
0x50, // push eax
0x56, // push esi
0x57, // push edi
0xFC, // cld
0x8B, 0x3D, _XX_, _XX_, _XX_, _XX_, // mov edi, dword_125188
0xB0, 0x20, // mov al, ' '
0xAA, // stosb
0xAA // stosb
};
//////////////////////////////////////////////////////////////////////////////
// pGetCurrentIRQLLevel
//////////////////////////////////////////////////////////////////////////////
#define TYPE_GetCurrentIRQLLevel (ULONG(__stdcall*)(VOID))
#define OFS_GetCurrentIRQLLevel 0
UCHAR PAT_GetCurrentIRQLLevel[] =
{
0x80, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x00, // cmp byte_AE990, 0
0x74, 0x10, // jz short loc1
0xA1, _XX_, _XX_, _XX_, _XX_, // mov eax, dword_AEB07
0xC1, 0xE8, 0x04, // shr eax, 4
0x0F, 0xB6, 0x80, _XX_, _XX_, _XX_, _XX_, // movzx eax, byte ptr ds:unk_106FC[eax]
0xC3, // retn
// loc1:
0x6A, 0xFF // push 0FFFFFFFFh
};
//////////////////////////////////////////////////////////////////////////////
// dwTraceFlag
//////////////////////////////////////////////////////////////////////////////
#define OFS_TraceFlag 2
UCHAR PAT_TraceFlag[] =
{
// somewhere inside pINT_01:
0xC6, 0x05, _XX_, _XX_, _XX_, _XX_, 0x00, // mov dwTraceFlag, 0
0x58, // pop eax
0x1F, // pop ds
0xE8, _XX_, _XX_, _XX_, _XX_, // call pNTIceMain
0xCF // iret
};
//////////////////////////////////////////////////////////////////////////////
// ClientRegs
//////////////////////////////////////////////////////////////////////////////
#define OFS_ClientRegs 6
UCHAR PAT_ClientRegs[] =
{
0x50, // push eax
0x53, // push ebx
0x51, // push ecx
0x52, // push edx
0x56, // push esi
0xA1 // mov eax, dClient_EAX
};
//////////////////////////////////////////////////////////////////////////////
// VmemPtr
//////////////////////////////////////////////////////////////////////////////
#define OFS_VmemPtr 6
UCHAR PAT_VmemPtr[] =
{
0xD1, 0xE3, // shl ebx, 1
0x03, 0xF3, // add esi, ebx
0x03, 0x35 // add esi, VmemPtr
};
//////////////////////////////////////////////////////////////////////////////
// Width
//////////////////////////////////////////////////////////////////////////////
#define OFS_Width 3
UCHAR PAT_Width[] =
{
0x0F, 0xAF, 0x05, _XX_, _XX_, _XX_, _XX_, // imul eax, [Width]
0x03, 0xC0, // add eax, eax
0x03, 0xF8 // add edi, eax
};
//////////////////////////////////////////////////////////////////////////////
// Height
//////////////////////////////////////////////////////////////////////////////
#define OFS_Height 3
UCHAR PAT_Height[] =
{
0x0F, 0xB6, 0x0D, _XX_, _XX_, _XX_, _XX_, // movzx eax,b,[Height]
0x0F, 0xB6, 0xC6, // movzx eax,dh
0x2B, 0xC8 // sub ecx,eax
};
//////////////////////////////////////////////////////////////////////////////
// dw_CodeFlags
//////////////////////////////////////////////////////////////////////////////
#define OFS_CodeFlags 2
UCHAR PAT_CodeFlags[] =
{
0x80, 0x3D, _XX_, _XX_, _XX_, _XX_, 0x03, // cmp dw_CodeFlags, 3
0x74, _XX_, // jz short loc_8EB03
0x68, _XX_, _XX_, _XX_, _XX_, // push offset aPagingIsOnlySu
0xEB // jmp short ...
};
//////////////////////////////////////////////////////////////////////////////
// dCurrentContext
// dPopupContext
//////////////////////////////////////////////////////////////////////////////
#define OFS_CurrentContext 2
#define OFS_PopupContext 8
UCHAR PAT_CurrentContext[] =
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -