D3D9黑屏优化大幅降低CPU占用率代码

来源:互联网 发布:网络曝光台吧 编辑:程序博客网 时间:2024/05/16 09:23
#define BaseBlackScreenMainHook  //BaseBlackScreenMainThreadHook 
#define BaseBlackScreenD3D9Hook 

//主线程HOOK 黑屏优化
00528EDF      8BC0          MOV EAX,EAX
00528EE1      90            NOP
00528ECA  74**E8********8B86940100008B088B91A8000000 
//+15  ?00528EDF-00528ECA
//HOOK Data[3]={0x8B,0xC0,0x90}//{0x90,0x90,0x90};


      //022 00528ECA  74**E8********8B86940100008B088B91A8000000
      // 00528ECA  74**E8********8B86940100008B088B91A8000000 
      //+15  ?00528EDF-00528ECA
      //HOOK Data[3]={0x8B,0xC0,0x90}//MOV EAX,EAX;NOP//{0x90,0x90,0x90};
      //主线程HOOK 黑屏优化
      strcpy_s(szpFeatureCode,"74**E8********8B86940100008B088B91A8000000");
      //定位特征码
      ndCurAddr=ScanFeatureCode(hProcess,szpFeatureCode,0x0527000,0x0527000+0x10000);
      //读取基址1
      ndBase=ndCurAddr+0x15;
    //  printf("ndCurAddr=%X\n",ndCurAddr);
      printf("#define BaseBlackScreenMainHook 0x%X//022 主线程黑屏优化基址0x%X  \n",ndBase,ndBase);
      fprintf(pfile,"#define BaseBlackScreenMainHook 0x%X//022 主线程黑屏优化基址 0x%X\n",ndBase,ndBase);




d3d9.5F32279F=GetModuleHandle("d3d9.dll")+0x2279F;
5F322797    C2 0400         RETN 0x4
HOOK Data[3]={0xc2,0x04,0x00};HINSTANCE LoadLibrary(
  LPCTSTR lpLibFileName   // address of filename of executable module
);

HMODULE GetModuleHandle(
  LPCTSTR lpModuleName   // address of module name to return handle 
                         // for
);//返回值就是模块基址

d3d9.5F32279F=GetModuleHandle("d3d9.dll")+偏移;

d3d9.5F32279F=GetModuleHandle("d3d9.dll")+d3d9.5F32279F-d3d9.5F300000
d3d9.5F32279F=GetModuleHandle("d3d9.dll")+0x2279F;

5F322796    5D              POP EBP
5F322797    C2 0400         RETN 0x4
5F32279A    90              NOP
5F32279B    90              NOP
5F32279C    90              NOP
5F32279D    90              NOP
5F32279E    90              NOP
5F32279F    8BFF            MOV EDI,EDI
5F3227A1    55              PUSH EBP                                 ; 5F322860    C2 0400         RETN 0x4
5F3227A2    8BEC            MOV EBP,ESP
5F3227A4    6A FF           PUSH -0x1
5F3227A6    68 FCAD495F     PUSH d3d9.5F49ADFC
5F3227AB    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
5F3227B1    50              PUSH EAX
5F3227B2    83EC 14         SUB ESP,0x14
5F3227B5    53              PUSH EBX
5F3227B6    56              PUSH ESI
5F3227B7    57              PUSH EDI
5F3227B8    A1 50924A5F     MOV EAX,DWORD PTR DS:[0x5F4A9250]
5F3227BD    33C5            XOR EAX,EBP
5F3227BF    50              PUSH EAX
5F3227C0    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-0xC]
5F3227C3    64:A3 00000000  MOV DWORD PTR FS:[0],EAX
5F3227C9    8965 F0         MOV DWORD PTR SS:[EBP-0x10],ESP
5F3227CC    8B75 08         MOV ESI,DWORD PTR SS:[EBP+0x8]
5F3227CF    33DB            XOR EBX,EBX
5F3227D1    3BF3            CMP ESI,EBX



//主线程HOOK 黑屏优化
00528EDF      8BC0          MOV EAX,EAX
00528EE1      90            NOP


00528ECA  74**E8********8B86940100008B088B91A8000000 
//+15  ?00528EDF-00528ECA

00528EB7  |.  8B91 E4000000 |MOV EDX,DWORD PTR DS:[ECX+0xE4]
00528EBD  |.  6A 01         |PUSH 0x1
00528EBF  |.  6A 0E         |PUSH 0xE
00528EC1  |.  50            |PUSH EAX
00528EC2  |.  FFD2          |CALL EDX
00528EC4  |>  391D 30E3F500 |CMP DWORD PTR DS:[0xF5E330],EBX
00528ECA  |.  74 05         |JE SHORT Client.00528ED1
00528ECC  |.  E8 9F380000   |CALL Client.0052C770
00528ED1  |>  8B86 94010000 |MOV EAX,DWORD PTR DS:[ESI+0x194]
00528ED7  |.  8B08          |MOV ECX,DWORD PTR DS:[EAX]
00528ED9  |.  8B91 A8000000 |MOV EDX,DWORD PTR DS:[ECX+0xA8]         ;   d3d9.6C24279F
00528EDF      50            PUSH EAX
00528EE0      FFD2          CALL EDX                                 ;  真正的黑屏优化
00528EE2  |.  8BCE          |MOV ECX,ESI
00528EE4  |.  891D C0F9F500 |MOV DWORD PTR DS:[0xF5F9C0],EBX
00528EEA      E8 71E5FFFF   CALL Client.00527460                     ;  伪黑屏CALL
00528EEF  |.  3D 68087688   |CMP EAX,0x88760868
00528EF4  |.  74 0E         |JE SHORT Client.00528F04
00528EF6  |.  3D 27087688   |CMP EAX,0x88760827
00528EFB  |.  74 07         |JE SHORT Client.00528F04
00528EFD  |.  3D 6C087688   |CMP EAX,0x8876086C
00528F02  |.  75 1D         |JNZ SHORT Client.00528F21
00528F04  |>  50            |PUSH EAX
00528F05  |.  68 0016A000   |PUSH Client.00A01600                    ;  ASCII "Device Lost : Present() returned %d"
00528F0A  |.  E8 41C6F9FF   |CALL Client.004C5550
00528F0F  |.  83C4 08       |ADD ESP,0x8
00528F12  |.  C686 AE000000>|MOV BYTE PTR DS:[ESI+0xAE],0x1
00528F19  |>  6A 64         |PUSH 0x64                               ; /Timeout = 100. ms
00528F1B  |.  FF15 CCD19E00 |CALL DWORD PTR DS:[<&KERNEL32.Sleep>]   ; \Sleep
00528F21  |>  83BD D0D6FFFF>|CMP DWORD PTR SS:[EBP-0x2930],0x12
0 0
原创粉丝点击