Comparacion por imagenes, duda ;D.

Iniciado por Amerikano|Cls, 14 Diciembre 2008, 04:07 AM

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

Amerikano|Cls

Hola jeje, otra vez molestando yo, solo tengo una pequeña inquietud, y es por ejemplo como puedo saber yo con Olly si un programita hecho en VB que tiene el siguiente code:

Código (vb) [Seleccionar]
if(picture1.picture = picture2.picture) then

algo
algo
algo
F1ACA
end if


Como me doy cuenta yo en olly que se esta comparando la propiedad picture y no otra como caption, backolor, etc, etc? El unico avamce que he tenido fue que cree dos app en vb, cada una con dos controles picture, un commandButton, y dos control image, que es el que tiene cargada una imagen cualquiera.

En el evento load del form esta lo siguiente:

Código (vb) [Seleccionar]
picture1.picture = image1.picture
picture2.picture = image2.picture


Es decir que cada control tiene ya una imagen distinta :P, y el code del command es el siguiente:

Código (vb) [Seleccionar]
if(picture1.picture = picture2.picture) then
msgbox "son iguales"
else
msgbox "no son iguales"
end if


Bueno el command lo que hace es comparar si tienen la misma imagen, ahora, el otro programita hace lo mismo pero los dos controles images poseen la misma imagen, y dara como resultado "son iguales" contrario al otro. Traceando con Olly obtuve esto (para el caso que son iguales):

Código (asm) [Seleccionar]

0042FB9A   .  8B45 E4         MOV EAX,DWORD PTR SS:[EBP-1C] ;Mueve el valor susodicho XD (0D05099D)
0042FB9D   .  53              PUSH EBX
0042FB9E   .  53              PUSH EBX
0042FB9F   .  8D4D BC         LEA ECX,DWORD PTR SS:[EBP-44]
0042FBA2   .  50              PUSH EAX
0042FBA3   .  51              PUSH ECX
0042FBA4   .  8995 3CFFFFFF   MOV DWORD PTR SS:[EBP-C4],EDX
0042FBAA   .  FFD6            CALL ESI
0042FBAC   .  83C4 10         ADD ESP,10
0042FBAF   .  50              PUSH EAX
0042FBB0   .  FFD7            CALL EDI
0042FBB2   .  8B8D 3CFFFFFF   MOV ECX,DWORD PTR SS:[EBP-C4]
0042FBB8   .  33D2            XOR EDX,EDX
0042FBBA   .  3BC1            CMP EAX,ECX ;Lo compara con el del otro control (ambos son "0D05099D")
0042FBBC   .  8D45 DC         LEA EAX,DWORD PTR SS:[EBP-24]



y mas abajo hay esto:

Código (asm) [Seleccionar]
0042FBFA   .  66:3BFB         CMP DI,BX ;(DI=FFFF, BX=0000)
0042FBFD   .  894D A4         MOV DWORD PTR SS:[EBP-5C],ECX
0042FC00   .  8945 9C         MOV DWORD PTR SS:[EBP-64],EAX
0042FC03   .  894D B4         MOV DWORD PTR SS:[EBP-4C],ECX
0042FC06   .  8945 AC         MOV DWORD PTR SS:[EBP-54],EAX
0042FC09   .  894D C4         MOV DWORD PTR SS:[EBP-3C],ECX
0042FC0C   .  8945 BC         MOV DWORD PTR SS:[EBP-44],EAX
0042FC0F   .  74 43           JE SHORT Iguales.0042FC54 ; en este caso no saltaria y daria "Son iguales"
0042FC11   .  8D55 8C         LEA EDX,DWORD PTR SS:[EBP-74]
0042FC14   .  8D4D CC         LEA ECX,DWORD PTR SS:[EBP-34]
0042FC17   .  C745 94 7CF5420>MOV DWORD PTR SS:[EBP-6C],Iguales.0042F57C             ;  UNICODE "Son iguales"
0042FC1E   .  C745 8C 0800000>MOV DWORD PTR SS:[EBP-74],8
0042FC25   .  FF15 7C104000   CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDup>]            ;  MSVBVM60.__vbaVarDup
0042FC2B   .  8D55 9C         LEA EDX,DWORD PTR SS:[EBP-64]



Bueno eso fue lo que logre, interceptar los valores que segun esto podrian ser las referencias a la propiedad picture (es una teoria nada mas), ya que con el otro ejemplo son distintos y dan diferente, pero como sabre yo generalmente de que propiedad se trata, ya que no son comparaciones tan directas como la propiedad .text de un campo, o algo asi por el estilo, ya que esto podria enredarnos mucho.

Salu2 y gracias de antemano.

AmeRiK@nO




Mi blog:
http://amerikanocls.blogspot.com

Shaddy

Pues siguiendo las pautas de la Ing Inversa, puedes ir traceando inversamente para ver que es lo que hacía la comparación de CMP DI, BX o algo así que he visto, ver donde toma los valores y verás las "variables" que contienen ese picture, normalmente las estructuras suelen tener un puntero que indican donde están y luego una especie de estructura de bytes, no siempre aprovechada al máximo pero si se rigen por unos datos, es cuestión de probar y mirar, tal y como lo haces :).

Saludos.
"Si buscas resultados diferentes, no hagas siempre lo mismo" (Albert Einstein)

http://abssha.reversingcode.com
http://www.reversingcode.com

Amerikano|Cls

Ok shaddy gracias por la respuesta, de todas formas tocara revisar a fondo y ver diferencias para poder llegar a algo  :rolleyes:.

salu2  ;D

amerikano




Mi blog:
http://amerikanocls.blogspot.com

KJD

Tambien lo que suele hacer es obtener el hash de cada imagen o tambien, convertir la imagent en una cadena Base64 y despues comparar dos cadenas de texto, eso si, para imagenees medianas a chicas porque muy grandes se vuelve algo lenta la rutina. :rolleyes:
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???