Register for your free account! | Forgot your password?

You last visited: Today at 02:15

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

Advertisement



Patchen ?

Discussion on Patchen ? within the General Coding forum part of the Coders Den category.

Closed Thread
 
Old   #1

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,394
Received Thanks: 6,644
Patchen ?

da manche Leute solche sachen falsch verstehen und blöde vorurteile fällen bitte ich einen Mod diesen Thread zu löschen =)
ty
wurstbrot123 is offline  
Old 11/07/2008, 01:52   #2
 
scbiz's Avatar
 
elite*gold: 196
Join Date: Nov 2005
Posts: 625
Received Thanks: 192
Ich habe vor einiger Zeit einen kleinen Battlefield 2 Memory Hack geschrieben. Falls du möchtest, dass ich ihn dir gebe, kann ich das tun. Das mache ich aber nur via PN. Hier ein kleiner Snippet:
Code:
BYTE bNoSkyOff1, bNoSkyOff2;

void NoSky(bool a1)
{
	DWORD dwBytesRead, dwFirst;
	BYTE bNoSkyOn = 0;

	if(a1 == true)
	{
		ReadProcessMemory(CurrentProc, (void*) (dwRendBase + 0x239970), &dwFirst, sizeof(dwFirst), &dwBytesRead);
		ReadProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B2), &bNoSkyOff1, sizeof(bNoSkyOff1), &dwBytesRead);
		ReadProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B3), &bNoSkyOff2, sizeof(bNoSkyOff2), &dwBytesRead);

		WriteProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B2), &bNoSkyOn, sizeof(bNoSkyOn), &dwBytesRead);
		WriteProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B3), &bNoSkyOn, sizeof(bNoSkyOn), &dwBytesRead);
	}
	else
	{
		ReadProcessMemory(CurrentProc, (void*) (dwRendBase + 0x239970), &dwFirst, sizeof(dwFirst), &dwBytesRead);

		WriteProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B2), &bNoSkyOff1, sizeof(bNoSkyOff1), &dwBytesRead);
		WriteProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B3), &bNoSkyOff2, sizeof(bNoSkyOff2), &dwBytesRead);
	}
}
Wie du siehst, benutzt man zum "Patchen" die Funktionen und . Und nun höre auf herumzuwhinen, weil du kein Mod wirst...
scbiz is offline  
Old 11/07/2008, 05:08   #3

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,394
Received Thanks: 6,644
Quote:
Originally Posted by nop0x90 View Post
Ich habe vor einiger Zeit einen kleinen Battlefield 2 Memory Hack geschrieben. Falls du möchtest, dass ich ihn dir gebe, kann ich das tun. Das mache ich aber nur via PN. Hier ein kleiner Snippet:
Code:
BYTE bNoSkyOff1, bNoSkyOff2;

void NoSky(bool a1)
{
	DWORD dwBytesRead, dwFirst;
	BYTE bNoSkyOn = 0;

	if(a1 == true)
	{
		ReadProcessMemory(CurrentProc, (void*) (dwRendBase + 0x239970), &dwFirst, sizeof(dwFirst), &dwBytesRead);
		ReadProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B2), &bNoSkyOff1, sizeof(bNoSkyOff1), &dwBytesRead);
		ReadProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B3), &bNoSkyOff2, sizeof(bNoSkyOff2), &dwBytesRead);

		WriteProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B2), &bNoSkyOn, sizeof(bNoSkyOn), &dwBytesRead);
		WriteProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B3), &bNoSkyOn, sizeof(bNoSkyOn), &dwBytesRead);
	}
	else
	{
		ReadProcessMemory(CurrentProc, (void*) (dwRendBase + 0x239970), &dwFirst, sizeof(dwFirst), &dwBytesRead);

		WriteProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B2), &bNoSkyOff1, sizeof(bNoSkyOff1), &dwBytesRead);
		WriteProcessMemory(CurrentProc, (void*) (dwFirst + 0x6B3), &bNoSkyOff2, sizeof(bNoSkyOff2), &dwBytesRead);
	}
}
Wie du siehst, benutzt man zum "Patchen" die Funktionen und . Und nun höre auf herumzuwhinen, weil du kein Mod wirst...



Du hast da was falsch verstanden,
ich meine Befehle die man in olly sieht per C++
zu Patchen bzw zu Cracken nicht einfaches verändern
von werten bei einer Adresse.
Wieso musst du eigentlich immer solche
dummen Kommentare abgeben und so auf schlau tun ?
ich habs dir schon im anderen Post gesagt das ich
das was du gepostet hast NICHT wissen wollte.
Aber glaube langsam du sammelst hier nur Posts...
wurstbrot123 is offline  
Old 11/07/2008, 15:06   #4
 
scbiz's Avatar
 
elite*gold: 196
Join Date: Nov 2005
Posts: 625
Received Thanks: 192
Aufgrund der miesen Beschreibung des Problems, weiß ich nicht, was du möchtest.
scbiz is offline  
Old 11/07/2008, 15:59   #5
 
elite*gold: 0
Join Date: Feb 2008
Posts: 33
Received Thanks: 0
Quote:
Originally Posted by nop0x90 View Post
Aufgrund der miesen Beschreibung des Problems, weiß ich nicht, was du möchtest.
Mh. Dein Post war eigentlich die Antwort auf seine Frage.
Ich glaube er verkraftet die Kritik auf die Bewerbung einfach nicht :/. Naja, Ich hätte sowieso nur auf die MSDN verwiesen..
zeraaaaaa is offline  
Old 11/07/2008, 19:36   #6

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,394
Received Thanks: 6,644
Quote:
Originally Posted by zeraaaaaa View Post
Mh. Dein Post war eigentlich die Antwort auf seine Frage.
Ich glaube er verkraftet die Kritik auf die Bewerbung einfach nicht :/. Naja, Ich hätte sowieso nur auf die MSDN verwiesen..
Nein ebend nicht.
er zeigt mir wie man werte ändert...........
Leute ich bitte euch nicht so ein Unsinn zu Posten wenn ihr nicht wisst was ich mit meinem Post meine.
Was ich meine ist in etwa Reversing mit c++ wenn man die Adressen
mit dem asm Code den man ändern will schon kennt
hoffe ihr versteht das jetzt auch.
wurstbrot123 is offline  
Old 11/07/2008, 21:26   #7
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
Ich hatte zwar eigentlich vor, zum Trotz keine Posts mehr zu verfassen, aber der Richtigstellung zuliebe werde ich diesen Thread jetzt dennoch kommentieren:

Desweiteren hatte ich nop0x90 zwar schon darauf hingewiesen, dass er mangels Kenntnis die Frage fehlinterpretiert hat, und habe auch versucht, ihm zu erkären, wie es richtig funktioniert, aber irgendwie schien er davon unbeeindruckt und hat nicht einmal einen Ansatz in sein altes Posting hinein editiert bzw. in sein Letzteres aufgenommen.

Ungeachtet dessen folgt nun meine Laienbeantwortung, die durchaus falsch [!] sein kann:

Die Sektion, die den Programmcode enthält, ist im PE-Header als ausführbar und zusätzlich schreibgeschützt definiert, was bedeutet, dass du erst die nötigen Rechte erhalten musst, um Zugriff auf einen spezifischen Speicherblock zu haben.
Jene erhälst du z.B. durch die WinAPI-Funktion .
Der Rest ist dann so, wie du es wahrscheinlich gewohnt bist.
Da der Code statisch geladen wird, ist es so ähnlich, wie, als wenn du eine statische Adresse hättest, die auf einen Speicherblock zeigt, der als DWORD-Variable benutzt wird.
Du musst halt nur beachten, dass du die Opcodes, mit welchen du die alten überschreiben willst, in ein BYTE-Array packst, da, wenn du es nicht tun würdest, die Speicherordnung, also Little Endian, in Kraft treten würde.

Hier noch ein abschließender Beispielcode meiner bescheidenen Ausführung :x
In C:
Code:
BOOL Poke(HANDLE hProc, DWORD dwAddr, void *lpWrite, DWORD dwCount) {
	BOOL bWPM;
	DWORD dwOld, dwWritten;
	if(hProc) {
		if(VirtualProtectEx(hProc, (LPVOID)dwAddr, dwCount, PAGE_READWRITE, &dwOld)) {
			bWPM = WriteProcessMemory(hProc, (LPVOID)dwAddr, lpWrite, dwCount, &dwWritten);
			VirtualProtectEx(hProc, (LPVOID)dwAddr, dwCount, dwOld, &dwOld);
		}
	}
	return (bWPM & (dwWritten == dwCount));
}
In Drexx-Masm:
Code:
Poke proc hProc:DWORD, dwAddr:DWORD, lpWrite:DWORD, dwCount:DWORD
	add esp, -0Ch
	mov eax, [hProc]
	test eax, eax
	jz .fail
	invoke VirtualProtectEx, [hProc], [dwAddr], [dwCount], PAGE_READWRITE, [ebp - 4]
	test eax, eax
	jz .fail
	invoke WriteProcessMemory, [hProc], [dwAddr], [lpWrite], [dwCount], [ebp - 8]
	test eax, eax
	jz .fail
	push eax
	lea eax, [ebp - 4]
	invoke VirtualProtectEx, [hProc], [dwAddr], [dwCount], [eax], eax
	pop eax
	jmp .end
.fail:
	xor eax, eax
.end:
	ret
Poke endp
PS: [Kleine Anmerkung, um mich höher zu stufen :P]
Ich wusste von Anfang an, was du meintest, auch ohne deinen letzten Post, wobei der nun nicht allzu stark erläuternd ist, gelesen zu haben ;-)

PPS: Falls etwas unklar ist, nachfragen.
Falls ich Müll erzählt haben sollte, darauf hinweisen, thx.

Ich hoffe, dass dies nun deine eigentümliche Frage beantwortet ;-)
link is offline  
Thanks
1 User
Closed Thread


Similar Threads Similar Threads
WIe Patchen?
09/12/2010 - Metin2 Private Server - 5 Replies
Hey, weis wer wie man ein Patch startet der sich nicht starten lässt ?=/ Passiert nichts .. lg
wie/wo patchen?
02/23/2010 - World of Warcraft - 3 Replies
hab mir wow runtergeladen, will es aber noch patschen. Wo macht man das am besten und am schnellsten, den ich habe immer noch version 2.0.0?
WoW Patchen!
11/04/2008 - World of Warcraft - 9 Replies
Hey, wenn ich bei mir auf 3.0.1 Patchen will kommt dieser fehler vor dem Installieren : Das Google Desktop-Suchprogramm kann bei der Installation von Blizzard-Produkten Fehler verursachen. Bitte schließen Sie das Google Desktop-Suchprogramm, bevor Sie mit dieser Installation fortfahren. Für weitere Informationen wenden Sie sich bitte an: Google Desktop-Hilfe Dort kann ich dann abbrechen oder fortfahren machen, aber ich soll Google Desktop löschen obewohl ich sowas noch nie installiert habe ...
wow -patchen
08/29/2008 - World of Warcraft - 3 Replies
hi hab ein problem ich hab mir testversion geladen und wollte die patchen ... aber der sagt mir dann immer wow.exe nicht gefunden ;(( bitte helft mir
patchen
08/21/2008 - Metin2 Private Server - 2 Replies
huhu^^ ich komme nicht merh ins spiel weil mein patch am patchen ist-.- der patch schon 50 min! neu instaliert habe ich auch schon^^ helft mir pls will zoggen;) bin dür jeden tipp dankbar=) mfg



All times are GMT +1. The time now is 02:15.


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.