[Duda] Diferencia entre JB y JS

Iniciado por Stakewinner00, 23 Noviembre 2012, 17:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Stakewinner00

Estaba estudiando ingenieria inversa (hace poco que comenze) y me encontre con que segun mis apuntes:
EL JB se activa cuando el flag C es uno y por lo tanto si tuvieramos EAX=1 y ECX=2 el flag C saltaria y se activaria, luego en el caso del JS es lo mismo resta u valor al otro y en vez de activar el flag C se activa el S pero en realidad es exactamente lo mismo no?

Resumiendo, no se que diferéncias hay entre el JB/JNB y JS/JNS.


Gracias por su ayuda.

apuromafo CLS

te lo hare mas facil

cuando comparas 2 numeros hay 3 opciones

que sean iguales, que sean diferentes y que sean (mayor o menor)

pues eso hace, el tema es que la validacion lo hara por un flag o bandera
luego si dice

cmp eax,7  y eax es 7
je   lugar  (saltara porque es igual)
pero la bandera estara dada por 0 y 1.. si salta o no ira en eso..

pero el tema ahora es el tema del salto como tal si es JB versus JNB  (hay diferencia, pues uno saltara si son iguales y el otro si no son iguales)


lo importante es que a la fecha no he visto programas que jueguen con los flag , solo los packers

asi que suerte en todo lo que estas viendo... intenta seguir leyendo

Stakewinner00

Si lo dle JE y todo eso ya lo sabia. Lo k no se es la díferencia entre JB y JS a parte de que usan flags distintos.

Citarlo importante es que a la fecha no he visto programas que jueguen con los flag , solo los packers

Osea que no sirve de much no? XD bueno, estoy leyendo esto para tener unas baes sobre ensamblador para poder seguir aprendiendo cracking.

apuromafo CLS

#3
pues pongamos ejemplos bonitos
http://faydoc.tripod.com/cpu/jbe.htm

en cuanto a otros

, digamos que upack o otros packers cuando terminan de desempacar ahora la variable no es cero por lo tanto salta

armadillo, asprotect, buscan dar excepciones y usan saltos para jugar con el tema de la iat

y asi suma y sigue, lo importante es reconocer que son saltos y que trabajan con condiciones, a modo que en vez de estar ensamblando todo el tiempo , puedes cambiar el flag y testear si resultara parchado

saludos Apuromafo

revisa tambien el comando



CPU Disasm
Address   Hex dump          Command                                  Comments
0081EDF5     \60            PUSHAD
0081EDF6      9C            PUSHFD


CPU Disasm
Address   Hex dump          Command                                  Comments
0081EE50      61            POPAD
0081EE51      9D            POPFD
0081EE52    ^ E9 5BB5CAFF   JMP 004CA3B2

karmany

#4
JB: salta si es menor

Por ejemplo:
mov al, 4
cmp al, 7
jb ⇒ salta

mov al, 4
cmp al, 4
jb ⇒ NO salta

mov al, 4
cmp al, 2
jb ⇒ NO salta




JS: Salta si tiene signo Bandera SF = 1

Por ejemplo:
mov al, 4
sub al, 5
js ⇒ salta

mov al, 4
sub al, 4
js ⇒ NO salta

mov al, 4
sub al, 2
js ⇒ NO salta

mov al,0FC
add al,2
js ⇒ salta ya que 0FC es -4: -4 +2 = -2

mov al, 0FC
add al, 4
js ⇒  NO salta

Stakewinner00