Register for your free account! | Forgot your password?

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

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

Advertisement



[ASM] Access Violation

Discussion on [ASM] Access Violation within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1


 
Benhero's Avatar
 
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
[ASM] Access Violation

Hey da das alte Problem beseitigt ist und ich nicht denke das mir dort jemand weiter helfen würde.

Es gibt nun aber ein anderes Problem. Und dies Betrifft eine Zugriffsverletzung über ASM.

Wenn ich folgenden Code ausführe gibt es keine Probleme:
Code:
__asm
{
	mov eax, dword ptr ds : [aTime];
	mov dword ptr ds : [eax], 255;
}
WriteProcessMemory(cHandle, (LPVOID)aTimeSub, &stopTimer, sizeof(char), 0);
Wenn ich aber diesen Ausführe gibt es die Zugriffsverletzung:
Code:
__asm
{
	mov eax, dword ptr ds : [aTime];
	mov dword ptr ds : [eax], 255;
	mov eax, ds : [aTimeSub];
	mov byte ptr [eax], 0x00;
}
dabei wird an die Selbe stelle geschrieben wie über WriteProcessMemory().

Ich weiß das es andere möglichkeiten gibt. Ich möchte aber ASM benutzen.
Deswegen bitte ich euch mir wenn möglich einen weg über ASM zu zeigen oder wie ich Zugriffsverletzung umgehen kann

Vielen Dank.

Benhero
Benhero is offline  
Old 12/12/2014, 08:12   #2


 
Jeoni's Avatar
 
elite*gold: 966
Join Date: Apr 2010
Posts: 1,104
Received Thanks: 681
Das solltest du weiter ausführen.
Nach "mov eax, ds : [aTimeSub];" steht der Wert von aTimeSub, also die Adresse, die auch in WPM benutzt werden würde, in eax. Das folgende "mov byte ptr [eax], 0x00;" sollte an die Adresse den Wert 0 schreiben (das gleiche würde auch WPM tun, sofern stopTimer eine char-Variable mit dem Wert 0 ist). Ich sehe da keinen Fehler, aber korrigier mich, wenn ich gerade einen Denkfehler mache.
Hab das mit folgendem Beispielcode auch nochmal überprüft:
Code:
	int x = 15; // repräsentiert das, was der TE verändern will
	int* xPtr = &x; // repräsentiert TE's aTimeSub

	__asm
	{
		mov eax, ds : [xPtr]; // adresse von x ist nun in eax
		mov dword ptr [eax], 22; // x = 22
	}

	std::cout << x; // Output: 22
Aus dem Thread geht nicht hervor, dass mit WPM versucht wurde den eigenen Prozess zu manipulieren. "cHandle" kann ja auch ein externer Prozess sein. In diesem Fall sollte ja klar sein, dass es nicht klappt. Ich gehe aber mal davon aus, dass man cHandle in der WPM-Zeile ohne weiteres mit GetCurrentProcess substituieren kann.
Funktioniert WPM denn? Im Falle eines Fehlers würde WPM ja nicht zum Crash führen, sondern einfach FALSE returnen und den LastError entsprechend setzen.
Mit freundlichen Grüßen
Jeoni
Jeoni is offline  
Old 12/12/2014, 14:45   #3


 
Benhero's Avatar
 
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
WPM Funktioniert. Und ja man könnte auch GetCurrentProcess() verwenden. (cHandle = currentHandle). Durch WMP wird der Wert auf 0 gesetzt. Ja "stopTimer" ist ein char wert.
In diesem Fall ein unsinged char

aTimeSub ist bei WMP wie auch bei der ASM anweißsung der Selbe. Es ist für mich ja möglich einen Wert über ASM zu schreiben. Diese Anweißung hier funktioniert ohne Absturz:
Code:
mov eax, dword ptr ds : [aTime];
mov dword ptr ds : [eax], 255;
ledeglich das Schreiben eines einzelnen Bytes über "mov byte ptr [eax], 0x00" verurascht den problem.
Bei dir ist es ja wieder ein DWORD.

Und nein. Du hast keinen Denk fehler. Ledeglich gibt es eine wie oben bereits geschrieben "Zugriffsverletzung beim Schreiben" auf die Adresse von aTImeSub.
Aber eben nur beim ASM versuch.

Ich hoffe ich habe alles aufgegriffen.. o.o

Grüße
Benhero is offline  
Old 12/12/2014, 20:18   #4
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Wenn ich nicht ganz falsch liege, musst du zuerst VirtualProtect ausführen, um die gewünschte Region auf beschreibbar zu ändern.
Das müsste deinen Fehler eigentlich beheben.

Padmak
Padmak is offline  
Thanks
1 User
Old 12/12/2014, 23:25   #5


 
Benhero's Avatar
 
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
Ahhh okay. Also z.B

Hoffe es funktioniert danke @Padmak

Grüße
Benhero is offline  
Old 12/12/2014, 23:37   #6



 
+Yazzn's Avatar
 
elite*gold: 420
Join Date: Jan 2012
Posts: 1,030
Received Thanks: 981
Denke ich auch. Kümmert sich WriteProcessMemory nicht automatisch um so Zeug?
+Yazzn is offline  
Old 12/13/2014, 00:39   #7


 
Benhero's Avatar
 
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
Glaube ich schon. Da ich mit WPM keine probleme habe. Aber eben über ASM

Grüße
Benhero is offline  
Old 12/14/2014, 02:42   #8



 
+Yazzn's Avatar
 
elite*gold: 420
Join Date: Jan 2012
Posts: 1,030
Received Thanks: 981
Hast du es jetzt ausprobiert? Funktioniert es?
+Yazzn is offline  
Old 12/14/2014, 18:38   #9


 
Benhero's Avatar
 
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
Nein, habe ich aktuell noch nicht.
Arbeite gerade an einer Externen Version.

Werde die DLL aber bald weiter entwickeln.

Grüße
Benhero is offline  
Reply


Similar Threads Similar Threads
Access violation
04/17/2014 - C/C++ - 12 Replies
Hey, bin momentan daran ein Programm zu coden, darin muss ich in einem Spiel ein Mob anvisieren, sofern alles gut, er visiert die Mobs korrekt an etc. Mein Problem liegt daran das wenn ich ein Mob anvisieren möchte und kurz davor jemand anderes den Mob killt das mein Programm und das Game abstürzen, habs mir schon im Debugger angekuckt, komme damit aber auch nicht viel weiter, hab nur herausfinden können das es mit dem anvisieren zu tun hat. Hab auch schon versucht kurz vor dem anvisieren zu...
C++ Detour - Access Violation
10/19/2011 - C/C++ - 1 Replies
Hallo, ich versuche zur Zeit ein eigenes Detour mit Hilfe dieser http://www.elitepvpers.com/forum/gamehacking-tutor ials/518465-c-eigene-detours-teil1.html Anleitung zu basteln. Ziel ist es bei jedem Call einer bestimmten Funktion eine Messagebox auszugeben. Leider klappt das irgendwie nicht wie es soll, denn es tritt immer eine Acces Violation auf nachdem meine Messagebox angezeigt wurde. Meine Vermutung ist, nach Stepping in Olly, dass sich die Registers durch meine Funktion ändern. Das...
[question] memcpy, access violation
10/02/2011 - General Coding - 1 Replies
is it ok to type cast byte buffer by (void*)? DWORD dwAddress = 0x12345678; BYTE bPatch = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; memcpy( (void*)dwAddress, (void*)bPatch, 7); this piece of my code was working fine till now - it is causing ACCESS VIOLATION and I can't figure out why. edited: nvm, it was all about memory protection.
Help with my error log: NeuzUnique access violation
01/29/2011 - Flyff Private Server - 0 Replies
How can I fix this error? It pops when logging with my char. 2011/ 1/29 11:30:31 Feb 22 2010 05:50:57 1 rCnt=1 NeuzUnique.exe caused an EXCEPTION_ACCESS_VIOLATION in module NeuzUnique.exe at 001B:0066E686 - Registers EAX=09F2DF00 EBX=7FFDE000 ECX=09F2DFFE EDX=09F2DFFE ESI=00000000
Access violation at address 00000000
07/19/2009 - Grand Chase - 5 Replies
Every time I run the ryu engine with the correct setting I get the problem, Access violation at address 00000000. Read of address 00000000. PLEASE help me.



All times are GMT +2. The time now is 01:01.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.