Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 21:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Find Pattern

Discussion on Find Pattern within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Doktor.'s Avatar
 
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Find Pattern

Hey, komm nach Tagen langen herum googlen immer noch nicht mit Find Pattern zurecht.

1. Frage
Was auf dem Screen ist alles wichtig dafür, bzw. fehlt da noch etwas relevantes?


2. Frage
Mein Code sieht bisher so aus, was fehlt dort damit ich den Wert meiner HP auslesen kann, bzw. kann ich überhaupt den Code mit den Infos ausn Screen vollenden?
Code:
#include "stdafx.h"


bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
	for(;*szMask;++szMask,++pData,++bMask)
		if(*szMask=='x' && *pData!=*bMask ) 
			return false;
	return (*szMask) == NULL;
}

DWORD dwFindPattern(HANDLE hProcess, DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
{
	DWORD const dwBytesToRead = 0xFFFF;
	BYTE bpBytesRead[dwBytesToRead];
	DWORD lpNumberOfBytesRead;
	for (unsigned int i=0;i<dwAddress - dwLen;i +=dwBytesToRead-strlen(szMask)){
		ReadProcessMemory(hProcess,(LPCVOID)(dwAddress+i),bpBytesRead,dwBytesToRead,&lpNumberOfBytesRead);
		for(DWORD j=0; j < dwBytesToRead-strlen(szMask)+1; j++)
			if( bDataCompare( (BYTE*)( bpBytesRead+j ),bMask,szMask) )
				return (DWORD)(dwAddress+i+j);
	}
	return 0;
}

int main()
{
	HWND   winNos = FindWindow( 0, "NosTale" );
	int    progId;
	HANDLE hProg;
	GetWindowThreadProcessId(winNos, (LPDWORD)&progId);
	HANDLE hprog = OpenProcess( PROCESS_ALL_ACCESS, false, progId);


	DWORD Adressbt = dwFindPattern(hprog, ???????, ???????, (BYTE*)"\x89\x43\x4C\x8B\x53\x48", "xxxxxx");



	return 0; 
}
3. Frage
Was kommt dort bei den Fragezeichen hin?
Code:
dwFindPattern(hprog, ???????, ???????, (BYTE*)"\x89\x43\x4C\x8B\x53\x48", "xxxxxx");

Suche jetzt schon seit 3 Tagen danach wie das richtig funktioniert, mir hat sogar jemand schon beim suchen geholfen, aber kam dennoch nichts raus womit wir das richtig kappiert haben. Hoffe diesmal wirds anders enden

Danke schon mal an alle die sich die mühe machen mir zu helfen.


Gruß


Skype: mariusgill2
Doktor. is offline  
Old 10/09/2013, 11:17   #2
 
Doktor.'s Avatar
 
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Was fürn Skinpack, das ist Windows 8 ganz normal ohne Skinpack^^.
Doktor. is offline  
Old 10/09/2013, 14:40   #3
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Zur 3. Frage : Erklärt doch die Definition für die Funk o.o einmal die Adresse von wo gesucht werden soll ( z.b. Base des Moduls) und einmal wie weit denn gesucht werden soll ( Länge )
th0rex is offline  
Old 10/09/2013, 17:40   #4
 
​Tension's Avatar
 
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
wird wohl
Code:
dwFindPattern(hprog,0x401000, 0x25A000, (BYTE*)"\x89\x43\x4C\x8B\x53\x48", "xxxxxx");
sein.
(steht doch alles beim SigMaker drinne)
​Tension is offline  
Old 10/09/2013, 17:59   #5

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
1) sollte soweit passen, Pattern ist da, Mask, Adresse und Length.
2) sollte ebenfalls soweit passen, es kann halt passieren, dass du durch das kleine Pattern mehrere Stellen im Code hast, die gefunden werden. Kann dann natürlich sein, dass die falsche Adresse rauskommt.
Ich nehmen an, deine HP sind da im Register? Dann wird dir das nichts bringen, da du dort nur Register findest. Du musst die Stelle finden, an der die (variable) Adresse in das Register, das später die Adresse modifiziert, geschrieben wird.
3) als erstes die Base Address, von der aus gesucht werden soll, das ist in deinem Falle die Base Address von Nostale + BaseOfCode, am Besten liest du die Adresse + die Prozess ID via Process32Next aus. Alternativ einfach die Base Address, die dir Olly da anzeigt, verwenden.
Danach wird noch die Length angegeben, die maximal abgesucht werden soll, das ist in deinem Falle ebenfalls das, was Olly ausgibt, 0x25a000.
snow is offline  
Thanks
1 User
Old 10/09/2013, 19:12   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by snow911 View Post
1) sollte soweit passen, Pattern ist da, Mask, Adresse und Length.
2) sollte ebenfalls soweit passen, es kann halt passieren, dass du durch das kleine Pattern mehrere Stellen im Code hast, die gefunden werden. Kann dann natürlich sein, dass die falsche Adresse rauskommt.
Ich nehmen an, deine HP sind da im Register? Dann wird dir das nichts bringen, da du dort nur Register findest. Du musst die Stelle finden, an der die (variable) Adresse in das Register, das später die Adresse modifiziert, geschrieben wird.
3) als erstes die Base Address, von der aus gesucht werden soll, das ist in deinem Falle die Base Address von Nostale + BaseOfCode, am Besten liest du die Adresse + die Prozess ID via Process32Next aus. Alternativ einfach die Base Address, die dir Olly da anzeigt, verwenden.
Danach wird noch die Length angegeben, die maximal abgesucht werden soll, das ist in deinem Falle ebenfalls das, was Olly ausgibt, 0x25a000.
Man kann natürlich auch Code injizieren und das Register bearbeiten.
MrSm!th is offline  
Old 10/10/2013, 18:56   #7


 
buFFy!'s Avatar
 
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
Man kann auch einfach versuchen zu verstehen was diese Funktionen überhaupt machen.
Der Rest ist dann nämlich selbsterklärend!
buFFy! is offline  
Reply


Similar Threads Similar Threads
[C++] Find Pattern Tutorial
04/07/2015 - Coding Tutorials - 17 Replies
Find Pattern Tutorial Find Pattern wird dafür genutzt, bestimmte Funktionsadressen aus einem Prozess auszulesen. Dazu wird der Byte-OpCode einer EXE, DLL, BIN oder dergleichen durchlaufen und nach einem vordefiniertem Byte-Muster durchsucht. Am Anfang etwas Theorie: Da die Find Pattern Funktion einen bestimmten Suchbereich erwartet muss dieser zuvor ausgelesen werden. Normalerweise wird immer von der Modulbase bis zum Code-Ende alles durchsucht. Dazu braucht man den Anfangswert (Base)...
Addylogger Pattern... How i can find it?
08/11/2012 - WarRock - 0 Replies
Hey dudes, How i can find Patterns in OllyDBG? can someone explain that to me, please? I already have a basic knowledge in OllyDBG. Thank u :) €: Or someone can give me a tut about that? I can´t find any tuts...
find pattern funktion.. hilfe
03/15/2009 - General Coding - 4 Replies
ich brauch mal etwas hilfe. ich hab irgendwo ein denkfehler oder der code is total fürn arsch. vlt hab ihr ja bessere funktionen, würd mich freuen wenn ihr eine hier posten könntet. DWORD dwFindPattern(DWORD dwStartAddress, DWORD dwEndAddress, BYTE *bMask, BYTE *bMask_O){ BYTE ScanCode_A = {}; /* while(dwStartAddress < dwEndAddress){ ReadProcessMemory(hGW, (LPCVOID)dwStartAddress, &ScanCode_A, 1, 0); if(ScanCode_A == bMask){ ReadProcessMemory(hGW, (LPCVOID)(dwStartAddress +...



All times are GMT +1. The time now is 21:39.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.