JNE/JE : Ein kleines, deutsches Tutorial fr Anfnger von VOiZE of iMPACT


Gleich ran an den Brei, wir wollen nichts anbrennen lassen, nicht wahr ?
Greetz und so was alles kommt noch ganz unten und auch nachzulesen in
der (hoffentlich noch) beigefgten iMPACT.NFO.

Der Programmierer schreibt Lauf-/Abbruchbedingungen fr
sein Programm.
In ASM-Code sieht das so aus :

JNE =	jump if not equal 	(springe wenn nicht gleich)
JE  =	jump if equal 		(springe wenn gleich)

_____________________________________________________________
Codes, die man wissen sollte, um im HEXeditor auch nderungen 
am Programm vornehmen zu knnen :

JNE =  	0F85 oder HEX 75
JE  =	0F84 oder HEX 74

_______________
Bsp. Programm :

nehmen wir mal an, wir geben als Registriernummer 2222 ein, 
dieser Wert geht in die Variable1.	
Der zu prfende Wert (1111) geht/steht in der Variable2.

		...
		Main () {
		 if (variable1==variable2)    	// Abfrage, ob etwas wahr ist
					  	// hier ist der "JA"-Zweig (JE/0F84/74)
			...
		 else  				// sonst mache hier weiter
		 				// "NEiN"-Zweig
			...
		 end-if
		 ...}

Was passiert also ? ...klar, die Variablen Inhalte sind nicht gleich.
Der NEiN-Zweig (JNE) wird ausgefhrt... das bedeutet, die Registrierung 
wird mit einer Meldung wie z.B. iNVALiD PASSWORD, Falscher Schlssel 
oder hnliches abgebrochen.

Bis jetzt doch echt simpel, hm ? Was gilt jetzt zu bewerkstelligen ?

Ja, wir mssen nun dem Programm lediglich mitteilen, 
da wir die richtige Registriernummer eingegeben haben ;)

Wie ? 

...man knnte (umstndlicherweise aber gut) das Programm abndern, so da der 
eigene Variablen Inhalt von Variable1 auch in die Variable2 geschoben wird...
So wren beide immer identisch...

Schneller geht es, wenn wir die Abfrage verbiegen, also abfragen, ob
denn der Variablen Inhalt von Variable1 und Variable2 nicht gleich ist.
		...
		Main () {
		 if (variable1 != variable2)	// Hier also jetzt JNE (0F85/75)
					  	// nach wie vor ist hier der 
						// "verbogene" "JA"-Zweig (JE/0F84/74)
			...
		 else  				// sonst mache hier weiter
		 				// "NEiN"-Zweig, wre nun der Weg,
						// im Falle der Gleichheit von Variable1 & 2
			...
		 end-if
		 ...}

Ihr seht sicher schon, dies ist schnell aber nicht sauber "gecrackt" !
Andere Mglichkeiten, wie obig schon angerissen sind sauberer, doch
wie hoch ist die Chance eine Gleichheit der Variablen zu erzielen ?
Rechnet das mal fr unser Beispiel mit Hilfe der Wahrscheinlichkeits-
rechnung aus :)


