OldSchoolHack

Registrieren / Anmelden Deutsch

Benutzersuche: Crosz

Such-Informationen
Crosz
Themen im Forum
Thema Forum Letzter Beitrag Beiträge Zugriffe
icon

Go to first new post C++ Find Pattern Frage! Erstellt am: Fr 25. Nov 2011, 17:36

Crosz

preview Vorschau

Go To Post

Hey,

also ich würde gerne einen FindPattern schreiben, der die .exe Datei in mein Programm lädt und anschließend auf den bestimmten Adressen verweißt. Weiß ich nicht, wie ich die FindPattern Funktion auf ein Programm anwende, welches ich in mein Programm lade, aber mit einer .dll Injektion funktioniert es. Jetzt würde ich gerne fragen, wie ich das schaffe.
Ich würde gerne eine Konsole benutzen und keine .dll.
Wenn ich jetzt mithilfe des fstream Header die .exe im Binary Mode lade, wie kann ich dann dadrin die Adressen suchen? Hier sind die beiden Pattern Funktionen, die ich benutze.
CPP Code:
  1. bool bDataCompare(const unsigned char* pData, const unsigned char* bMask, const char* szMask)
  2.  
  3. {
  4.  
  5. for(;*szMask;++szMask,++pData,++bMask)
  6.  
  7. if(*szMask=='x' && *pData!=*bMask )
  8.  
  9. return false;
  10.  
  11. return (*szMask) == 0;
  12.  
  13. }
  14.  
  15. unsigned long dwFindPattern( unsigned char *bMask,char * szMask, unsigned long dw_Address, unsigned long dw_Len)
  16.  
  17. {
  18.  
  19. for(unsigned long i=0; i < dw_Len; i++)
  20.  
  21. if( bDataCompare( (unsigned char*)( dw_Address+i ),bMask,szMask) )
  22.  
  23. return (unsigned long)(dw_Address+i);
  24.  
  25. return 0;
  26.  
  27. }

Bis jetzt sieht mein Code so aus:
CPP Code:
  1. ifstream::pos_type size;
  2. char* memblock;
  3. char test[20];
  4. int warte;
  5. DWORD Offset;
  6.  
  7. int main()
  8. {
  9. ifstream file("Spiel.exe", ios::out | ios::app | ios::binary);
  10. if(file.is_open())
  11. {
  12. size = file.tellg();
  13. memblock = new char [size];
  14. file.seekg(0, ios::beg);
  15. file.read(memblock, size);
  16. //Offset = dwFindPattern((PBYTE)"\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x51\x8B\x4D\x08\x53\x56\x8B\x35\x00\x00\x00\x00", "xxxxxx????xx????xxxx????xxxxxxxx????", 0x401000, 0x29e000);
  17.  
  18. }
  19. else
  20. {
  21. cout << "Datei konnte nicht geoeffnet werden!";
  22. cin >> warte;
  23. }
  24.  
  25. Offset = *(DWORD*) Offset;
  26. //sprintf(test, "Adresse: %x", Offset);
  27. cout << "Adresseee: %x" << Offset;
  28. cin >> warte;
  29. file.close();
  30. return 0;
  31. }

Ich hoffe einer kann mir helfen.
Gruß
VB, C/C++, Delphi, etc

Fr 25. Nov 2011, 19:17

von SilverFire Go to last post
8 1158
icon

Go to first new post C++ Find Pattern Frage! Erstellt am: Fr 25. Nov 2011, 17:36

Crosz

preview Vorschau

Go To Post

Über den Prozess wäre ich auch dran gekommen, aber ich möchte ja ohne das mein Programm sich in das andere Programm injektet. In AutoIT ist z.B. hier ein Code zu, der ohne jeglicher Art von Injektion funktioniert.
TEXT Code:
  1. #NoTrayIcon
  2. ;// open and read the client in binary mode
  3. $file = FileOpen('Spiel.exe', 16)
  4. $content = FileRead($file, FileGetSize('Spiel.exe'))
  5. ;// filter the wanted stuff from the code
  6. $filter = StringRegExp($content, "558BEC6AFF68.{8}64A1000000005064892500000000518B4D.{2}53568B35(.{8})0FB786.{8}89018B8E(.{8})8B11578965.{2}C745.{2}00000000FF92.{8}8B45.{2}D955.{2}D9188B8E.{8}8B11FF92.{8}D955.{2}8B45.{2}D918B0.{2}8B4D.{2}64890D000000005F5E5B8BE55DC3", 1)
  7. FileClose($file)
  8.  
  9. ;// if the regex filter worked, display the results in a simple gui
  10. If IsArray($filter) Then
  11. GUICreate('Offset Finder', 175, 55, Default, Default, 0x10C80000)
  12. GUICtrlCreateLabel('MainBaseAdress:', 10, 7, 85, 20)
  13. GUICtrlCreateInput('0x'&reverseHex($filter[0]), 95, 5, 70, 20, 0x801)
  14. GUICtrlCreateLabel('CharStructOffset:', 10, 32, 85, 20)
  15. GUICtrlCreateInput('0x'&reverseHex($filter[1]), 95, 30, 70, 20, 0x801)
  16. While GUIGetMsg()<>-3
  17. WEnd
  18. Else
  19. MsgBox(16, 'Error', 'oooops looks like something went wrong :s')
  20. EndIf
  21.  
  22. Func reverseHex($string)
  23. Local $return
  24. ;// if the string got a odd length, add a zero in front of it
  25. If Mod(StringLen($string),2)<>0 Then $string = '0'&$string
  26. ;// reverse the hex patterns
  27. For $i=1 To StringLen($string) Step 2
  28. $return = StringMid($string, $i, 2)&$return
  29. Next
  30. ;// remove the left-hand zeros
  31. While StringLeft($return, 1)='0'
  32. $return = StringTrimLeft($return, 1)
  33. WEnd
  34. Return $return
  35. EndFunc
Credits lolkop
VB, C/C++, Delphi, etc

Fr 25. Nov 2011, 19:17

von SilverFire Go to last post
8 1158
icon

Go to first new post C++ Find Pattern Frage! Erstellt am: Fr 25. Nov 2011, 17:36

Crosz

preview Vorschau

Go To Post

Hätte ich Ahnung, dann müsste ich doch nicht fragen oder?
Aber auf Hilfe kann man hier ja nicht hoffen...
VB, C/C++, Delphi, etc

Fr 25. Nov 2011, 19:17

von SilverFire Go to last post
8 1158
icon

Go to first new post C++ Find Pattern Frage! Erstellt am: Fr 25. Nov 2011, 17:36

Crosz

preview Vorschau

Go To Post

Ich hab ja auch keine ganze .cpp Datei verlangt, sondern nur Tipps, wie ich die FindPattern Funktion auf einer .exe Datei anwenden kann, ohne dass ich ihren Prozess anrühre. Genau so möchte ich es machen, dass macht mein Code ja auch
CPP Code:
  1. ifstream file("Spiel.exe", ios::out | ios::app | ios::binary);
durch dieses ios::binary wird ja meine Datei als Binäre Datei gelesen, nun muss ich irgendwie die Adresse für meine Funktion suchen, aber ich weiß halt nicht wie.
Vielleich erkläre ich es nochmal mithilfe des ASM Codes. Also ich habe für folgende Adresse eine Signatur erstellt.
TEXT Code:
  1. 004E7E7E |. 8B35 68D97000 MOV ESI,DWORD PTR DS:[70D968]
Nun möchte ich gerne die "70D968" auslesen. Ich habe mir eine Signatur erstellt und würde gerne diese Adresse auslesen. Dazu versuche ich halt das Programm ("Spiel.exe") in dem Binär Modus zu laden, damit ich über die FindPattern Funktion diese Adresse kriegen kann. Hoffentlich hast du es besser verstanden und kannst mir helfen. :/

Gruß
VB, C/C++, Delphi, etc

Fr 25. Nov 2011, 19:17

von SilverFire Go to last post
8 1158