int FAR PASCAL FamilyCounter( char FAR *lpLogFont, char FAR *lpTextMetrics, short nFontType, char FAR *lpData, FARPROC fp, WORD AX ) { int l; SaveRegs() ; LogIn( (LPSTR)"ENUMCALL:EnumFontFamilies FARPROC+LPLOGFONT+LPTEXTMETRIC+int+DWORD+", fp, lpLogFont, lpTextMetrics, nFontType, lpData ) ; RestoreRegs() ; GrovelDS(); l = HookCall( lpLogFont, lpTextMetrics, nFontType, lpData, fp, AX ); UnGrovelDS(); SaveRegs() ; LogOut( (LPSTR)"ENUMRET:EnumFontFamilies int+FARPROC+LPLOGFONT+LPTEXTMETRIC+int+DWORD+", l, fp, lpLogFont, lpTextMetrics, nFontType, lpData ) ; RestoreRegs() ; return( l ); }
LONG FAR PASCAL WH_DEBUGHook( int nCode, WORD wParam, LONG lParam, FARPROC fp, WORD AX ) { LONG l; SaveRegs() ; LogIn( (LPSTR)"HOOKCALL:WH_DEBUG FARPROC+int+WORD+LONG+", fp, nCode, wParam, lParam ); RestoreRegs() ; GrovelDS(); l = HookCall( nCode, wParam, lParam, fp, AX ); UnGrovelDS(); SaveRegs() ; LogOut( (LPSTR)"HOOKRET:WH_DEBUG LONG+FARPROC+int+WORD+LONG+", l, fp, nCode, wParam, lParam ); RestoreRegs() ; return( l ); }
int FAR PASCAL EnumBrushes( char FAR *lpLogObject, char FAR *lpData, FARPROC fp, WORD AX ) { int l; SaveRegs() ; LogIn( (LPSTR)"ENUMCALL:EnumObjects(BRUSH) FARPROC+LPLOGPEN+LPSTR+", fp, lpLogObject, lpData ) ; RestoreRegs() ; GrovelDS(); l = HookCall( lpLogObject, lpData, fp, AX ); UnGrovelDS(); SaveRegs() ; LogOut( (LPSTR)"ENUMRET:EnumObjects(BRUSH) int+FARPROC+LPLOGPEN+LPSTR+", l, fp, lpLogObject, lpData ) ; RestoreRegs() ; return( l ); }
int FAR PASCAL DlgMesgProc( HWND hWnd, WORD wMsg, WORD wParam, LONG lParam, FARPROC fp, WORD AX ) { int i; SaveRegs() ; LogIn( (LPSTR)"MSGCALL:FARPROC+HWND+MSGNUM+WORD+LONG+", fp, hWnd, wMsg, wParam, lParam ); RestoreRegs() ; GrovelDS(); i = HookCall( hWnd, wMsg, wParam, lParam, fp, AX ); UnGrovelDS(); SaveRegs() ; LogOut( (LPSTR)"MSGRET:LONG+FARPROC+MSGNUM+WORD+LONG+", (LONG)i, fp, hWnd, wMsg, wParam, lParam ); RestoreRegs() ; return( i ); }
/* ** TIMER STUFF ** */ WORD FAR PASCAL TimerRtn( HWND hwnd, WORD uMsg, int nId, DWORD dwTime, FARPROC fp, WORD AX ) { WORD rc; SaveRegs() ; LogIn( (LPSTR)"TIMECALL:SetTimer FARPROC+HWND+WORD+int+DWORD+", fp, hwnd, uMsg, nId, dwTime ) ; RestoreRegs() ; GrovelDS(); rc = HookCall( hwnd, uMsg, nId, dwTime, fp, AX ); UnGrovelDS(); SaveRegs() ; LogOut( (LPSTR)"TIMERET:SetTimer WORD+FARPROC+HWND+WORD+int+DWORD+", rc, fp, hwnd, uMsg, nId, dwTime ) ; RestoreRegs() ; return( rc ); }
BOOL FAR PASCAL EnumTaskWin( HWND hwnd, DWORD lParam, FARPROC fp, WORD AX ) { BOOL l; SaveRegs() ; LogIn( (LPSTR)"ENUMCALL:EnumTaskWindows FARPROC+HWND+DWORD+", fp, hwnd, lParam ) ; RestoreRegs() ; GrovelDS(); l = HookCall( hwnd, lParam, fp, AX ); UnGrovelDS(); SaveRegs() ; LogOut( (LPSTR)"ENUMRET:EnumTaskWindows BOOL+FARPROC+HWND+DWORD+", l, fp, hwnd, lParam ) ; RestoreRegs() ; return( l ); }
void TimerInit() { StoredTickCount=0; LastTickCount=GetTickCount(); TickCountFraction=0; Multi=(double)GetPrivateProfileInt("Speed", "SpeedMultiInitial", 100, ini)/100.0; Enabled=true; Toggled=false; SYSTEMTIME time; GetLocalTime(&time); SystemTimeToFileTime(&time, (FILETIME*)&StartTime); ModKey=GetPrivateProfileInt("Input", "SpeedModKey", -1, ini); ToggleKey=GetPrivateProfileInt("Input", "SpeedToggleKey", 0, ini); char c[2]; char key[12]; for(int i=0;i<10;i++) { _itoa_s(i, c, 10); strcpy_s(key, "SpeedKey"); strcat_s(key, c); Keys[i]=GetPrivateProfileInt("Input", key, 0, ini); strcpy_s(key, "SpeedMulti"); strcat_s(key, c); Multipliers[i]=GetPrivateProfileInt("Speed", key, 0x00, ini)/100.0; } HookCall(0x4A433E, &scripts_check_state_hook); }
void MakeCall(DWORD addr, void* func, bool jump) { SafeWrite8(addr, jump?0xe9:0xe8); HookCall(addr, func); }