OldSchoolHack

Register / Login English

FindPattern() - by Gordon | Help !


icon FindPattern() - by Gordon | Help ! #1

Join Date: Apr 2010

Posts: 168

Liebe Coder,


Ich möchte die Scans von PB checken. Jedoch funktioniert bei mir die FindPattern() von Gordon (GD) nicht.


Hat da wer eine Idee oder kann wer mal seine Posten ?

Thx !

__________________

mfg ZeRoKiLLeR

*Hax? Nur solange man mit Hack besser als ohne ist * :schaden:

Only registered and activated users can see links.

Let's Rock ! :schaden:
icon #2

Join Date: Aug 2008

Posts: 2594

User-Rating:

17 positive
5 negative
Wie wärst wenn du mal die code aufschreibst die bei dir nicht klappt, bzw wie du sie benutzt hast. Ich kenne zwar FindPattern() von Gordon aber wie soll ich es wissen was du falsch machst wenn du nichts hinschreibst?
icon #3

Join Date: Apr 2010

Posts: 168

Sorry!

CPP Code:
  1.  
  2. // FindPattern
  3. DWORD CDetour::FindPattern(DWORD dwAddress, DWORD dwSize, BYTE* pbSig, char* szMask)
  4. {
  5. for(DWORD i = NULL; i < dwSize; i++)
  6. {
  7. if(DataCompare((BYTE*)(dwAddress + i), pbSig, szMask ))
  8. return (DWORD)(dwAddress + i);
  9. }
  10. return 0;
  11. }
  12. BOOL CDetour::DataCompare(const BYTE* pData, const BYTE* bSig, const char* szMask )
  13. {
  14. for( ; *szMask; ++szMask, ++pData, ++bSig)
  15. {
  16. if( *szMask == 'x' && *pData != *bSig)
  17. return false;
  18. }
  19.  
  20. return ( *szMask ) == NULL;
  21. }
  22.  

CPP Code:
  1.  
  2. // Scan
  3. DWORD dwOffset = CDetour::FindPattern((DWORD)GetModuleHandle(L"pbcl.dll"), 0xFFFFFFF, (BYTE*)"\x6A\x00\x50\x50\x33\xF1\xFF\x55\xC8\x59\x40\x50\xFF\x75\x08", "xxxxxxxxxxxxxxx");
  4.  
  5. // Danach das übliche Hooken wie Detour von GD
  6.  


Fehler: Entweder das Game schliesst sich nach dem Injecten der Scan-DLL oder die FindPattern scant paar Adresse und dann ist schon wieder crash.


Mit Debugen der DLL bin ich nicht sehr weit gekommen. Kann es sein das meine Such-Range zu hoch ist?

0xFFFFFFF -> Heisst ja alles. Evlt. einschränken auf 0x1280000 ?

Oder mach ich mit der Mask etwas falsch?


Spiel: Crysis (32-Bit) / später auch 64-Bit
DirectX: 9
Spielversion: 1.2.1
Injector: Winject
Visual Studio 2010 Ultimate

__________________

mfg ZeRoKiLLeR

*Hax? Nur solange man mit Hack besser als ohne ist * :schaden:

Only registered and activated users can see links.

Let's Rock ! :schaden:
icon #4

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
der Fehler liegt zu 99% nicht an der Funktion...

greetz KN4CK3R

__________________

Hallo
icon #5

Join Date: Apr 2010

Posts: 168

Hast du eine Vermutung an was es dann liegen könnte ?


DWORD dwOffset; // OK

dwOffset = CDetour::FindPattern(); // OK -> dw to dw

FindPattern Params

(DWORD)GetModuleHandle(L"pbcl.dll") // OK ist vorhanden

0xFFFFFFF // Kompletter Addressbereich

(BYTE*)"\x6A\x00\x50\x50\x33\xF1\xFF\x55\xC8\x59\x40\x50\xFF\x75\x08" // OK 15

"xxxxxxxxxxxxxx" // OK 15


Ist meine Maske falsch? Hab ich das nicht kapier oder was da los ?


Bitte helft mir



[Edit] Falsche Makse?  x00 -> x?xxxxxxxxxxxxx . Ist das so besser ?

__________________

mfg ZeRoKiLLeR

*Hax? Nur solange man mit Hack besser als ohne ist * :schaden:

Only registered and activated users can see links.

Let's Rock ! :schaden:
icon #6

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
wenn die maske nicht passt, findet er halt die Signatur nicht. Du musst nach dem Aufruf auch schauen ob eine Stelle gefunden wurde. Wenn du versuchst null zu hooken, ist ja klar, dass es abstürzt.

greetz KN4CK3R

__________________

Hallo
icon #7

Join Date: Apr 2010

Posts: 168

Das Problem ist das er bereits bei Suchen im nichts verschwindet.


Hier das ist mein Code in der Function "ScanBypass" ..

CPP Code:
  1. Log("PB-Scanner|ScanBypass: Searching for Offset");
  2.  
  3. // Nach der API-Scan Funktion suchen
  4. DWORD dwOffset = CDetour::FindPattern((DWORD)GetModuleHandle(L"pbcl.dll"), 0xFFFFFFF, (BYTE*)"\x6A\x00\x50\x50\x33\xF1\xFF\x55\xC8\x59\x40\x50\xFF\x75\x08", "xxxxxxxxxxxxxxx");
  5.  
  6. if(dwOffset != 0x0)
  7. {
  8. Log("PB-Scanner|ScanBypass: Offset found");
  9.  
  10. Log("PB-Scanner|ScanBypass: Install Hook");
  11.  
  12. // Wenn diese gefunden wurde wird diese gehookt
  13. oPB_APIScanner = (PB_APIScanner_t)CDetour::DetourFunc((PBYTE)dwOffset, (PBYTE)PB_APIScanner, 5);
  14.  
  15. Log("PB-Scanner|ScanBypass: Hook installed");
  16. }
  17. else
  18. {
  19. Log("PB-Scanner|ScanBypass: No Offset found");
  20. }

Log file beinhaltet

TEXT Code:
  1.  
  2. PB-Scanner|DllMain: ATTACH OK
  3. PB-Scanner|ScanBypass: Searching for Offset
  4.  

__________________

mfg ZeRoKiLLeR

*Hax? Nur solange man mit Hack besser als ohne ist * :schaden:

Only registered and activated users can see links.

Let's Rock ! :schaden:
icon #8

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
dann wirds wohl dadran liegen, dass deine Maske 16 Stellen hat, die Signatur aber nur 15.

greetz KN4CK3R

__________________

Hallo
icon #9

Join Date: Apr 2010

Posts: 168

Sind aber 15 x und 15 \xx

Wies aussieht hab ich das wohl nicht kapiert

__________________

mfg ZeRoKiLLeR

*Hax? Nur solange man mit Hack besser als ohne ist * :schaden:

Only registered and activated users can see links.

Let's Rock ! :schaden:
icon #10

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
ok hatte mich verzählt. Dann schau halt nochmal im Debugger wo es crasht.

greetz KN4CK3R

__________________

Hallo