📄 softice.h
字号:
0x8B, 0x0D, _XX_, _XX_, _XX_, _XX_, // mov ecx, dCurrentContext
0x3B, 0x0D, _XX_, _XX_, _XX_, _XX_, // cmp ecx, dPopupContext
0x74, _XX_, // jz short loc_8EB24
0x50 // push eax
};
//////////////////////////////////////////////////////////////////////////////
// dPageinTempRegz
//////////////////////////////////////////////////////////////////////////////
#define OFS_PageinTempRegz 9
UCHAR PAT_PageinTempRegz[] =
{
0x6A, 0x48, // push sizeof(SiRegs)
0xB8, _XX_, _XX_, _XX_, _XX_, // mov eax, offset dClient_EAX
0x50, // push eax
0xB8, _XX_, _XX_, _XX_, _XX_, // mov eax, offset dPageinTempRegz
0x50 // push eax
};
//////////////////////////////////////////////////////////////////////////////
// oPAGEIN_INT3
//////////////////////////////////////////////////////////////////////////////
#define OFS_PageinINT3 10
UCHAR PAT_PageinINT3[] =
{
0x89, 0x3D, _XX_, _XX_, _XX_, _XX_, // mov dClient_EIP, edi
0x8D, 0x47, 0x02, // lea eax, [edi+2]
0xA3, _XX_, _XX_, _XX_, _XX_, // mov oPAGEIN_INT3, eax
0xEB // jmp short pagein_progress
};
//////////////////////////////////////////////////////////////////////////////
// fPAGEIN_InProgress
//////////////////////////////////////////////////////////////////////////////
#define OFS_Pagein_InProgress 10
UCHAR PAT_Pagein_InProgress[] =
{
0x8B, 0x45, _XX_, // mov eax, [ebp+arg_0]
0xA3, _XX_, _XX_, _XX_, _XX_, // mov dClient_EBX, eax
0xC7, 0x05, _XX_, _XX_, _XX_, _XX_, 0x01, 0x00, 0x00, 0x00, // mov fPAGEIN_InProgress, 1
0x33, 0xC0 // xor eax, eax
};
//////////////////////////////////////////////////////////////////////////////
// bReverseCharColor
//////////////////////////////////////////////////////////////////////////////
#define OFS_ReverseCharColor 19
UCHAR PAT_ReverseCharColor[] =
{
0xA2, _XX_, _XX_, _XX_, _XX_, // mov ds:bLineCharColor, al
0x88, 0x1D, _XX_, _XX_, _XX_, _XX_, // mov ds:bNormCharColor, bl
0x88, 0x3D, _XX_, _XX_, _XX_, _XX_, // mov ds:bBoldCharColor, bh
0x88, 0x0D, _XX_, _XX_, _XX_, _XX_, // mov ds:bReverseCharColor, cl
0x88, 0x2D, _XX_, _XX_, _XX_, _XX_, // mov ds:bHelpCharColor, ch
};
#define OFS_ReverseCharColor_DS32 12
UCHAR PAT_ReverseCharColor_DS32[] =
{
0xB2, _XX_, // mov dl, 0
0x02, 0x15, _XX_, _XX_, _XX_, _XX_, // add dl, byte ptr ds:dword_EE746
0x2A, _XX_, // sub dl, al
0x8A, 0x3D, _XX_, _XX_, _XX_, _XX_, // mov bh, byte ptr ds:word_164F7E+1
0xE8, _XX_, _XX_, _XX_, _XX_, // call sub_75BA4
};
//////////////////////////////////////////////////////////////////////////////
// bReverseCharColor
//////////////////////////////////////////////////////////////////////////////
#define OFS_OldIntTable 8
UCHAR PAT_OldIntTable[] =
{
0xB9, 0xFF, 0x00, 0x00, 0x00, // mov ecx, 0FFh
// loc_loop:
0x89, 0x0C, 0x8D, _XX_, _XX_, _XX_, _XX_, // mov old_int_00[ecx*4], ecx
// ^^^^^^^ - OldIntTable
0xE2, 0xF7 // loop loc_loop
};
//////////////////////////////////////////////////////////////////////////////
// si_SetFont
//////////////////////////////////////////////////////////////////////////////
#define OFS_SetFont 9
#define OFS_FONTS 3
#define OFS_CurFontIdx 17
#define OFS_CurFontIdx_DS30 18
#define TYPE_SetFont (VOID(__stdcall*)(const SI_FONT *))
UCHAR PAT_SetFont[] =
{
0x8B, 0x14, 0x85, _XX_, _XX_, _XX_, _XX_, // mov edx, SI_FONTS[eax*4]
0x52, // push edx,
0xE8, _XX_, _XX_, _XX_, _XX_, // call si_set_font
0x8B, 0x45, 0x08, // mov eax, [ebp+arg_0]
0xA3 // mov dFONT_NUM, eax
};
UCHAR PAT_SetFont_DS30[] =
{
0x8B, 0x14, 0x85, _XX_, _XX_, _XX_, _XX_, // mov edx, SI_FONTS[eax*4]
0x52, // push edx,
0xE8, _XX_, _XX_, _XX_, _XX_, // call si_set_font
0x8B, 0x44, 0x24, 0x18, // mov eax, [esp+14h+arg_0]
0xA3, _XX_, _XX_, _XX_, _XX_, // mov ds:dFONT_NUM, eax
0x5E // pop esi
};
//////////////////////////////////////////////////////////////////////////////
// si_ActivateHooks
//////////////////////////////////////////////////////////////////////////////
#define OFS_ActivateHooks 39
#define TYPE_ActivateHooks (VOID(__stdcall*)(VOID))
UCHAR PAT_ActivateHooks[] =
{
0xFF, 0x35, _XX_, _XX_, _XX_, _XX_, // push dCurrentContext
0xC6, 0x05, _XX_, _XX_, _XX_, _XX_, 0x01, // mov dwNumberOfBPs?, 1
0xC7, 0x05, _XX_, _XX_, _XX_, _XX_, 0x00, 0x00, 0x00, 0x00, // mov dTSS_Base, 0
0xC7, 0x05, _XX_, _XX_, _XX_, _XX_, 0xFF, 0xFF, 0xFF, 0xFF, // mov dword_AF4CE, 0FFFFFFFFh
0xE8, _XX_, _XX_, _XX_, _XX_, // call sub_4074F
0xE8, _XX_, _XX_, _XX_, _XX_, // call pActivateHooks
// ^^ ^^ ^^ ^^
0x0F, 0xB6, 0x0D, _XX_, _XX_, _XX_, _XX_, // movzx ecx, byte ptr int3_dword
0xE3 // jecxz short loc_41C34
};
//////////////////////////////////////////////////////////////////////////////
// si_DeActivateHooks
//////////////////////////////////////////////////////////////////////////////
#define OFS_DeActivateHooks 24
#define TYPE_DeActivateHooks (VOID(__stdcall*)(VOID))
UCHAR PAT_DeActivateHooks[] =
{
0x0F, 0xB6, 0x0D, _XX_, _XX_, _XX_, _XX_, // movzx ecx, byte ptr int3_dword
0xE3, 0x0E, // jecxz short loc_419BD
//loc_419AF:
0x8B, 0x1C, 0x8D, _XX_, _XX_, _XX_, _XX_, // mov ebx, dword_C90DF[ecx*4]
0xE8, _XX_, _XX_, _XX_, _XX_, // call sub_41B03
0xE2, 0xF2, // loop loc_419AF
//loc_419BD:
0xE8, _XX_, _XX_, _XX_, _XX_ // call pDeactivateHooks
// loc_419BD:
};
#define OFS_DeActivateHooks_DS32 38
UCHAR PAT_DeActivateHooks_DS32[] =
{
0x0F, 0xB6, 0x0D, _XX_, _XX_, _XX_, _XX_, // movzx ecx, int3_dword
0xE3, _XX_, // jecxz short loc_A5CD6
//loc_A5CBA:
0x8D, 0x1C, 0x8D, _XX_, _XX_, _XX_, _XX_, // lea ebx, ds:0FFFFFFFCh[ecx*4]
0x03, 0x1D, _XX_, _XX_, _XX_, _XX_, // add ebx, dword_1980C0
0x8B, _XX_, // mov ebx, [ebx]
0x03, 0x1D, _XX_, _XX_, _XX_, _XX_, // add ebx, dword_16C2EB
0xE8, _XX_, _XX_, _XX_, _XX_, // call sub_A5E2A
0xE2, _XX_, // loop loc_A5CBA
//loc_A5CD6:
0xE8, _XX_, _XX_, _XX_, _XX_ // call pDeactivateHooks
};
//////////////////////////////////////////////////////////////////////////////
// si_DumpFilter
//////////////////////////////////////////////////////////////////////////////
UCHAR PAT_DumpFilter[] =
{
0x3C, 0x20, // cmp al, ' '
0x72, 0x04, // jb short loc_34E98
0x3C, 0x80, // cmp al, 'A'
0x72, 0x02, // jb short loc_34E9A
// loc_34E98:
0xB0, 0x2E // mov al, '.'
// loc_34E9A:
};
//////////////////////////////////////////////////////////////////////////////
// si_RecordLastBranchInfo
// si_MSR_LAST_BRANCH_0
// si_MSR_LAST_BRANCH_1
//////////////////////////////////////////////////////////////////////////////
#define OFS_MSR_LAST_BRANCH_0 23
#define TYPE_RecordLastBranchInfo (VOID(__stdcall*)(VOID))
UCHAR PAT_RecordLastBranchInfo[] =
{
0x60, // pusha
0x8B, 0xEC, // mov ebp, esp
0x1E, // push ds
0x66, // db 66h
0x2E, 0x8E, 0x1D, _XX_, _XX_, _XX_, _XX_, // mov ds, cs:wNTICE_SS
0xB9, 0xDB, 0x01, 0x00, 0x00, // mov ecx, MSR_LASTBRANCH_0
0xE8, _XX_, _XX_, _XX_, _XX_, // call rdmsr_sub
0xA3 // mov dMSR_LAST_BRANCH_0, eax
};
//////////////////////////////////////////////////////////////////////////////
// WDBG_ExtensionApis
//////////////////////////////////////////////////////////////////////////////
#define OFS_WDBG_ExtensionApis 6
UCHAR PAT_WDBG_ExtensionApis[] =
{
0xFD, // ...
0x83, 0xC0, 0x0F, // add eax, 0Fh
0x50, // push eax
0x68, _XX_, _XX_, _XX_, _XX_, // push offset ExtensionApis
0xFF, 0xD6, // call esi ; call WinDbgExtensionDllInit
0xEB // jmp short loc_983CB
};
//////////////////////////////////////////////////////////////////////////////
// pLoadKDE
//////////////////////////////////////////////////////////////////////////////
#define OFS_LoadKDE 12
#define TYPE_LoadKDE (VOID(__stdcall*)(ULONG))
UCHAR PAT_LoadKDE[] =
{
0x8B, 0x46, 0x17, // mov eax, [esi+17h]
0xA3, _XX_, _XX_, _XX_, _XX_, // mov dword_146DA4, eax
0xFF, 0x76, 0x17, // push dword ptr [esi+17h]
0xE8, _XX_, _XX_, _XX_, _XX_, // call pLoadKDE
0x83, 0x4E, 0x23, 0x02 // or dword ptr [esi+23h], 2
};
//////////////////////////////////////////////////////////////////////////////
// pEnableIRQ
//////////////////////////////////////////////////////////////////////////////
#define OFS_EnableIRQ 46
#define TYPE_EnableIRQ (VOID(__stdcall*)(VOID))
UCHAR PAT_EnableIRQ[] =
{
0xE2, 0xFE, // loop loc_318A2
0x59, // pop ecx
0xE4, 0x21, // in al, 21h ; Interrupt controller, 8259A.
0x51, // push ecx
0xB9, 0x14, 0x00, 0x00, 0x00, // mov ecx, 14h
//loc_318AD:
0xE2, 0xFE, // loop loc_318AD
0x59, // pop ecx
0x24, 0xFB, // and al, 0FBh
0xE6, 0x21, // out 21h, al ; Interrupt controller, 8259A.
0x51, // push ecx
0xB9, 0x14, 0x00, 0x00, 0x00 // mov ecx, 14h
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -