⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 softice.h

📁 ICEExt for Driver Studio3.2的sourcecode
💻 H
📖 第 1 页 / 共 5 页
字号:
      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 + -