Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - chuky666

#1
Ingeniería Inversa / Re: Modificar el .EXE
21 Febrero 2011, 23:55 PM
Nada compañero, no hay manera de localizar esa comparación a la que te refieres.  De todas formas sospecho (puedo estar equivocado) que el programa no está completamente activado de la forma que has hecho, ya que es un poco "peculiar". Me explico, los serial que introduces el servidor no te indica si es correcto o no, simplemente te dice activacion correcta y reinicia el programa. Si está eliminada la NAG screen del principio no tienes forma de comprobar que está correctamente activado hasta que llegue al límite de 200 transacciones que te volverá a salir la dichosa NAG. Si está correctamente activado la NAG del principio no debería salir aún sin estar crackeada.

El tute de EreKoSe que indico apuromafo explica un poco todo esto.

Salu2 y gracias de nuevo
#2
Ingeniería Inversa / Re: Modificar el .EXE
21 Febrero 2011, 13:45 PM
@43H4FH44H45H4CH49H56H45H:

Gracias por la ayuda, pero no consigo localizar la comparación a la que haces referencia.

En este punto (004c6167) es donde se conecta al servidor con todos los parámetros y hace la consulta. ¿Está muy alejada de aquí la función esa?



Cómo deduces que esa es la comparación clave y no otra de las muchas que hay?
¿Hay alguna pista o indicador?¿Tiene algún significado ese "1" y ":"?

¿El traceo lo haces con F8, CTRL-F9, o tienes que entrar en algunas de las llamadas siguientes con F7 (que hay un montón)?

Saludos y muchas gracias de nuevo.
#3
Ingeniería Inversa / Re: Modificar el .EXE
20 Febrero 2011, 12:45 PM
@43H4FH44H45H4CH49H56H45H:

¿Cómo localizas la función que valida la respuesta? Supongo que lo harás con el Olly, ¿no? Si es así qué pasos das desde que pasa el string en 004c167?


¿Por cierto, podría subir el tute completo a CLS?


Saludos y gracias
#4
Dentro de esta rutina después de cargar en EDX nuestro serial (mediante el CALL 8562E4) hace una llamada a otra rutina más sencilla que también hace una serie de operaciones similares (en las que está involucrado nuestro serial), es ésta:

Código (asm) [Seleccionar]
005DBCDC  /$  55            PUSH EBP                                 ; PersonalFinances.005DBCDC(guessed Arg1,Arg2)
005DBCDD  |.  8BEC          MOV EBP,ESP
005DBCDF  |.  53            PUSH EBX
005DBCE0  |.  56            PUSH ESI
005DBCE1  |.  8B75 0C       MOV ESI,DWORD PTR SS:[ARG.2]
005DBCE4  |.  8B55 08       MOV EDX,DWORD PTR SS:[ARG.1]
005DBCE7  |.  8B4A 28       MOV ECX,DWORD PTR DS:[EDX+28]
005DBCEA  |.  8B41 04       MOV EAX,DWORD PTR DS:[ECX+4]
005DBCED  |.  EB 1C         JMP SHORT 005DBD0B
005DBCEF  |>  8BD0          /MOV EDX,EAX
005DBCF1  |.  66:8B1E       |MOV BX,WORD PTR DS:[ESI]
005DBCF4  |.  66:3B5A 0C    |CMP BX,WORD PTR DS:[EDX+0C]
005DBCF8  |.  0F97C2        |SETA DL
005DBCFB  |.  83E2 01       |AND EDX,00000001
005DBCFE  |.  84D2          |TEST DL,DL
005DBD00  |.  74 05         |JE SHORT 005DBD07
005DBD02  |.  8B40 08       |MOV EAX,DWORD PTR DS:[EAX+8]
005DBD05  |.  EB 04         |JMP SHORT 005DBD0B
005DBD07  |>  8BC8          |MOV ECX,EAX
005DBD09  |.  8B00          |MOV EAX,DWORD PTR DS:[EAX]
005DBD0B  |>  8078 0F 00    |CMP BYTE PTR DS:[EAX+0F],0
005DBD0F  |.^ 74 DE         \JE SHORT 005DBCEF
005DBD11  |.  8BC1          MOV EAX,ECX
005DBD13  |.  5E            POP ESI
005DBD14  |.  5B            POP EBX
005DBD15  |.  5D            POP EBP
005DBD16  \.  C3            RETN


¿Alguién le ve algún sentido?

En la rutina anterior después de hacer varias operaciones hace una comparación (005DB0CD) y hay varios casos posibles, ¿que situaciones representan?

Saludos y gracias de nuevo
#5
Buenas de nuevo, he estado investigando un poco más el tema y esto es lo que he encontrado:

1) He encontrado una serie de cadenas de texto un poco curiosas (puede que no sean nada):

ASCII "CFxEbcO3L97KueEyods0xOO4j9x9knUtIc5SQl7NvroJxs8PD9tOhaP48FtKrNDHGAkIxnlY3R1OGGtAT0mA36dcOx1WnJMKh58KIbw2liNWLAyGOBtKzEPYq7OuJVjnK7qs1HnFCyLeCjT97HW9N24hXMBaMjkMgW3wt5DPX75mJySLxUYapIugXsw7l5HraJ0aAhGFZh5KnLr1ZXH7jNW4aai2ecGdvecvd3Im2n1gM"...

UNICODE "WERTYUPASDFGHKZXCVBNM23456789weryupasdfghkzxcvbnm"
UNICODE "GIVEAWAYOFTHEDAYXXXXPFH7K"
UNICODE "hmXsC8mWHsCc6eggh9h5PFH7K"
ASCII "-PFH8K"
ASCII "-PFH9K"
ASCII "c9adbf8d-9980-450c-8f92-e8320eb609f4"

2) los mensajes del fichero de texto se cargan en memoria a partir de la dirección 16e0000 y cuando se va a mostrar uno (estoy no estoy seguro de que sea siempre asi) se copia a la dirección 17c1dfc (por lo menos eso ocurre con el mensaje "parece una licencia de Personal Finances Home")

3) Lo de buscar la variable de conteo lo veo un poco complicado MCKSys. Además el número de transacciones es variable, a veces es a 273, a veces a 297... es un poco raro)

4) Buscando las APIs CreateFileW y CreateFileA (gracias MCKSys), colocando BP, teniendo como referencia la clave de prueba que introduzco (56814) y traceando un poco he localizado dos rutinas que creo que comprueban mi número. Una desde 5daf6f a 5db459 y otra desde 581b1e a 581cc3. La primera la hace si ya hemos introducido un serial previamente y se ha generado el fichero key.dat (supongo que es la comprobación inicial que hace el programa). La segunda la hace justo después de introducir el serial y antes de mostrar el mensaje "parece una licencia de Personal Finances Home". En ámbas la llamada CALL 8562e4 carga en el registro EDX nuestro serial.

4) He analizado un poco las rutinas y creo que hacen la comprobación de la siguiente forma: (usan un bucle que se repite en función de la longitud del número introducido)

Mí serial: 56814
ronda 1- elimina la primera cifra para hacer unas operaciones (6814)
ronda 2 - elimina las 2 primeras cifras (814)
ronda 3 - elimina las 3 primeras cifras (14)
-------
ultima ronda

La rutina me parece un poco complicada de entender en detalle así que si alguien puede echarle un vistazo y orientarme un poco se lo agradecería.

Esta es la rutina:

CPU Disasm
Address   Hex dump          Command                                  Comments
Código (asm) [Seleccionar]
005DAF6F  |> /8BFE          /MOV EDI,ESI
005DAF71  |. |57            |PUSH EDI                                ; /Arg2
005DAF72  |. |8D45 CC       |LEA EAX,[LOCAL.13]                      ; |
005DAF75  |. |50            |PUSH EAX                                ; |Arg1 => OFFSET LOCAL.13
005DAF76  |. |E8 E9AF2700   |CALL 00855F64                           ; \PersonalFinances.00855F64
005DAF7B  |. |83C4 08       |ADD ESP,8
005DAF7E  |. |8D45 CC       |LEA EAX,[LOCAL.13]
005DAF81  |. |E8 5EB32700   |CALL 008562E4
005DAF86  |. |03FF          |ADD EDI,EDI
005DAF88  |. |8D8D E6FEFFFF |LEA ECX,[LOCAL.71+2]
005DAF8E  |. |037D CC       |ADD EDI,DWORD PTR SS:[LOCAL.13]
005DAF91  |. |83C7 FE       |ADD EDI,-2
005DAF94  |. |66:8B17       |MOV DX,WORD PTR DS:[EDI]
005DAF97  |. |66:8995 E6FEF |MOV WORD PTR SS:[LOCAL.71+2],DX
005DAF9E  |. |66:C785 44FFF |MOV WORD PTR SS:[LOCAL.47],0C
005DAFA7  |. |51            |PUSH ECX                                ; /Arg2
005DAFA8  |. |8D4D D0       |LEA ECX,[LOCAL.12]                      ; |
005DAFAB  |. |51            |PUSH ECX                                ; |Arg1 => OFFSET LOCAL.12
005DAFAC  |. |E8 2B0D0000   |CALL 005DBCDC                           ; \PersonalFinances.005DBCDC
005DAFB1  |. |83C4 08       |ADD ESP,8
005DAFB4  |. |8985 E0FEFFFF |MOV DWORD PTR SS:[LOCAL.72],EAX
005DAFBA  |. |8B85 E0FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.72]
005DAFC0  |. |8985 38FEFFFF |MOV DWORD PTR SS:[LOCAL.114],EAX
005DAFC6  |. |8B55 F8       |MOV EDX,DWORD PTR SS:[LOCAL.2]
005DAFC9  |. |8995 DCFEFFFF |MOV DWORD PTR SS:[LOCAL.73],EDX
005DAFCF  |. |8B8D DCFEFFFF |MOV ECX,DWORD PTR SS:[LOCAL.73]
005DAFD5  |. |898D 28FEFFFF |MOV DWORD PTR SS:[LOCAL.118],ECX
005DAFDB  |. |8B85 28FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.118]
005DAFE1  |. |3B85 38FEFFFF |CMP EAX,DWORD PTR SS:[LOCAL.114]
005DAFE7  |. |0F94C2        |SETE DL
005DAFEA  |. |83E2 01       |AND EDX,00000001
005DAFED  |. |84D2          |TEST DL,DL
005DAFEF  |. |75 27         |JNE SHORT 005DB018
005DAFF1  |. |8B8D 38FEFFFF |MOV ECX,DWORD PTR SS:[LOCAL.114]
005DAFF7  |. |898D D8FEFFFF |MOV DWORD PTR SS:[LOCAL.74],ECX
005DAFFD  |. |8B85 D8FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.74]
005DB003  |. |66:8B50 0C    |MOV DX,WORD PTR DS:[EAX+0C]
005DB007  |. |66:3B95 E6FEF |CMP DX,WORD PTR SS:[LOCAL.71+2]
005DB00E  |. |0F97C1        |SETA CL
005DB011  |. |83E1 01       |AND ECX,00000001
005DB014  |. |84C9          |TEST CL,CL
005DB016  |. |74 1D         |JE SHORT 005DB035
005DB018  |> |8B45 F8       |MOV EAX,DWORD PTR SS:[LOCAL.2]
005DB01B  |. |8DBD 10FEFFFF |LEA EDI,[LOCAL.124]
005DB021  |. |8985 D4FEFFFF |MOV DWORD PTR SS:[LOCAL.75],EAX
005DB027  |. |8B95 D4FEFFFF |MOV EDX,DWORD PTR SS:[LOCAL.75]
005DB02D  |. |8995 18FEFFFF |MOV DWORD PTR SS:[LOCAL.122],EDX
005DB033  |. |EB 06         |JMP SHORT 005DB03B
005DB035  |> |8DBD 30FEFFFF |LEA EDI,[LOCAL.116]
005DB03B  |> |8B07          |MOV EAX,DWORD PTR DS:[EDI]
005DB03D  |. |8985 00FEFFFF |MOV DWORD PTR SS:[LOCAL.128],EAX
005DB043  |. |8B47 04       |MOV EAX,DWORD PTR DS:[EDI+4]
005DB046  |. |8985 04FEFFFF |MOV DWORD PTR SS:[LOCAL.127],EAX
005DB04C  |. |8B57 08       |MOV EDX,DWORD PTR DS:[EDI+8]
005DB04F  |. |8995 08FEFFFF |MOV DWORD PTR SS:[LOCAL.126],EDX
005DB055  |. |8B4D F8       |MOV ECX,DWORD PTR SS:[LOCAL.2]
005DB058  |. |898D D0FEFFFF |MOV DWORD PTR SS:[LOCAL.76],ECX
005DB05E  |. |8B8D D0FEFFFF |MOV ECX,DWORD PTR SS:[LOCAL.76]
005DB064  |. |898D F8FDFFFF |MOV DWORD PTR SS:[LOCAL.130],ECX
005DB06A  |. |8B85 08FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.126]
005DB070  |. |3B85 F8FDFFFF |CMP EAX,DWORD PTR SS:[LOCAL.130]
005DB076  |. |0F94C2        |SETE DL
005DB079  |. |83E2 01       |AND EDX,00000001
005DB07C  |. |84D2          |TEST DL,DL
005DB07E  |. |74 3D         |JE SHORT 005DB0BD
005DB080  |. |66:C785 44FFF |MOV WORD PTR SS:[LOCAL.47],0F0
005DB089  |. |BA 42179200   |MOV EDX,OFFSET 00921742
005DB08E  |. |8D45 90       |LEA EAX,[LOCAL.28]
005DB091  |. |E8 6EB02700   |CALL 00856104
005DB096  |. |FF85 50FFFFFF |INC DWORD PTR SS:[LOCAL.44]
005DB09C  |. |8D55 90       |LEA EDX,[LOCAL.28]
005DB09F  |. |8D83 84000000 |LEA EAX,[EBX+84]
005DB0A5  |. |E8 E6B02700   |CALL 00856190                           ; [PersonalFinances.00856190
005DB0AA  |. |FF8D 50FFFFFF |DEC DWORD PTR SS:[LOCAL.44]
005DB0B0  |. |8D45 90       |LEA EAX,[LOCAL.28]
005DB0B3  |. |BA 02000000   |MOV EDX,2
005DB0B8  |. |E8 ABB02700   |CALL 00856168
005DB0BD  |> |0FB78D E6FEFF |MOVZX ECX,WORD PTR SS:[LOCAL.71+2]
005DB0C4  |. |018D E8FEFFFF |ADD DWORD PTR SS:[LOCAL.70],ECX
005DB0CA  |. |8B4B 78       |MOV ECX,DWORD PTR DS:[EBX+78]
005DB0CD  |. |83F9 04       |CMP ECX,4                               ; Switch (cases 0..4, 6 exits)
005DB0D0  |. |0F87 F2020000 |JA 005DB3C8
005DB0D6  |. |FF248D DDB05D |JMP DWORD PTR DS:[ECX*4+5DB0DD]
005DB0DD  |. |F1B05D00      |DD 005DB0F1
005DB0E1  |. |80B15D00      |DD 005DB180
005DB0E5  |. |18B25D00      |DD 005DB218
005DB0E9  |. |ACB25D00      |DD 005DB2AC
005DB0ED  |. |32B35D00      |DD 005DB332
005DB0F1  |> |83FE 08       |CMP ESI,8                               ; Case 0 of switch PersonalFinances.5DB0CD
005DB0F4  |. |0F8F CE020000 |JG 005DB3C8
005DB0FA  |. |66:C785 44FFF |MOV WORD PTR SS:[LOCAL.47],0FC
005DB103  |. |66:8B85 E6FEF |MOV AX,WORD PTR SS:[LOCAL.71+2]
005DB10A  |. |66:8985 CEFEF |MOV WORD PTR SS:[LOCAL.77+2],AX
005DB111  |. |33D2          |XOR EDX,EDX
005DB113  |. |8955 8C       |MOV DWORD PTR SS:[LOCAL.29],EDX
005DB116  |. |8D45 8C       |LEA EAX,[LOCAL.29]
005DB119  |. |BA 01000000   |MOV EDX,1
005DB11E  |. |E8 29B22700   |CALL 0085634C
005DB123  |. |8985 C8FEFFFF |MOV DWORD PTR SS:[LOCAL.78],EAX
005DB129  |. |6A 01         |PUSH 1                                  ; /Arg2 = 1
005DB12B  |. |8B8D C8FEFFFF |MOV ECX,DWORD PTR SS:[LOCAL.78]         ; |
005DB131  |. |51            |PUSH ECX                                ; |Arg1 => [LOCAL.78]
005DB132  |. |E8 2DAE2700   |CALL 00855F64                           ; \PersonalFinances.00855F64
005DB137  |. |83C4 08       |ADD ESP,8
005DB13A  |. |8B85 C8FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.78]
005DB140  |. |E8 9FB12700   |CALL 008562E4
005DB145  |. |8B95 C8FEFFFF |MOV EDX,DWORD PTR SS:[LOCAL.78]
005DB14B  |. |8D45 C8       |LEA EAX,[LOCAL.14]
005DB14E  |. |66:8BBD CEFEF |MOV DI,WORD PTR SS:[LOCAL.77+2]
005DB155  |. |8B0A          |MOV ECX,DWORD PTR DS:[EDX]
005DB157  |. |8D55 8C       |LEA EDX,[LOCAL.29]
005DB15A  |. |66:8939       |MOV WORD PTR DS:[ECX],DI
005DB15D  |. |FF85 50FFFFFF |INC DWORD PTR SS:[LOCAL.44]
005DB163  |. |E8 3CB02700   |CALL 008561A4                           ; [PersonalFinances.008561A4
005DB168  |. |FF8D 50FFFFFF |DEC DWORD PTR SS:[LOCAL.44]
005DB16E  |. |8D45 8C       |LEA EAX,[LOCAL.29]
005DB171  |. |BA 02000000   |MOV EDX,2
005DB176  |. |E8 EDAF2700   |CALL 00856168
005DB17B  |. |E9 48020000   |JMP 005DB3C8
005DB180  |> |83FE 05       |CMP ESI,5                               ; Case 1 of switch PersonalFinances.5DB0CD
005DB183  |. |0F8E 3F020000 |JLE 005DB3C8
005DB189  |. |83FE 0F       |CMP ESI,0F
005DB18C  |. |0F8F 36020000 |JG 005DB3C8
005DB192  |. |66:C785 44FFF |MOV WORD PTR SS:[LOCAL.47],108
005DB19B  |. |66:8B8D E6FEF |MOV CX,WORD PTR SS:[LOCAL.71+2]
005DB1A2  |. |66:898D C6FEF |MOV WORD PTR SS:[LOCAL.79+2],CX
005DB1A9  |. |33C9          |XOR ECX,ECX
005DB1AB  |. |894D 88       |MOV DWORD PTR SS:[LOCAL.30],ECX
005DB1AE  |. |8D45 88       |LEA EAX,[LOCAL.30]
005DB1B1  |. |BA 01000000   |MOV EDX,1
005DB1B6  |. |E8 91B12700   |CALL 0085634C
005DB1BB  |. |8985 C0FEFFFF |MOV DWORD PTR SS:[LOCAL.80],EAX
005DB1C1  |. |6A 01         |PUSH 1                                  ; /Arg2 = 1
005DB1C3  |. |8B8D C0FEFFFF |MOV ECX,DWORD PTR SS:[LOCAL.80]         ; |
005DB1C9  |. |51            |PUSH ECX                                ; |Arg1 => [LOCAL.80]
005DB1CA  |. |E8 95AD2700   |CALL 00855F64                           ; \PersonalFinances.00855F64
005DB1CF  |. |83C4 08       |ADD ESP,8
005DB1D2  |. |8B85 C0FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.80]
005DB1D8  |. |E8 07B12700   |CALL 008562E4
005DB1DD  |. |8B95 C0FEFFFF |MOV EDX,DWORD PTR SS:[LOCAL.80]
005DB1E3  |. |66:8B85 C6FEF |MOV AX,WORD PTR SS:[LOCAL.79+2]
005DB1EA  |. |8B0A          |MOV ECX,DWORD PTR DS:[EDX]
005DB1EC  |. |8D55 88       |LEA EDX,[LOCAL.30]
005DB1EF  |. |66:8901       |MOV WORD PTR DS:[ECX],AX
005DB1F2  |. |8D45 C8       |LEA EAX,[LOCAL.14]
005DB1F5  |. |FF85 50FFFFFF |INC DWORD PTR SS:[LOCAL.44]
005DB1FB  |. |E8 A4AF2700   |CALL 008561A4                           ; [PersonalFinances.008561A4
005DB200  |. |FF8D 50FFFFFF |DEC DWORD PTR SS:[LOCAL.44]
005DB206  |. |8D45 88       |LEA EAX,[LOCAL.30]
005DB209  |. |BA 02000000   |MOV EDX,2
005DB20E  |. |E8 55AF2700   |CALL 00856168
005DB213  |. |E9 B0010000   |JMP 005DB3C8
005DB218  |> |83FE 05       |CMP ESI,5                               ; Case 2 of switch PersonalFinances.5DB0CD
005DB21B  |. |7E 09         |JLE SHORT 005DB226
005DB21D  |. |83FE 0F       |CMP ESI,0F
005DB220  |. |0F8E A2010000 |JLE 005DB3C8
005DB226  |> |66:C785 44FFF |MOV WORD PTR SS:[LOCAL.47],114
005DB22F  |. |66:8B8D E6FEF |MOV CX,WORD PTR SS:[LOCAL.71+2]
005DB236  |. |66:898D BEFEF |MOV WORD PTR SS:[LOCAL.81+2],CX
005DB23D  |. |33C9          |XOR ECX,ECX
005DB23F  |. |894D 84       |MOV DWORD PTR SS:[LOCAL.31],ECX
005DB242  |. |8D45 84       |LEA EAX,[LOCAL.31]
005DB245  |. |BA 01000000   |MOV EDX,1
005DB24A  |. |E8 FDB02700   |CALL 0085634C
005DB24F  |. |8985 B8FEFFFF |MOV DWORD PTR SS:[LOCAL.82],EAX
005DB255  |. |6A 01         |PUSH 1                                  ; /Arg2 = 1
005DB257  |. |8B8D B8FEFFFF |MOV ECX,DWORD PTR SS:[LOCAL.82]         ; |
005DB25D  |. |51            |PUSH ECX                                ; |Arg1 => [LOCAL.82]
005DB25E  |. |E8 01AD2700   |CALL 00855F64                           ; \PersonalFinances.00855F64
005DB263  |. |83C4 08       |ADD ESP,8
005DB266  |. |8B85 B8FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.82]
005DB26C  |. |E8 73B02700   |CALL 008562E4
005DB271  |. |8B95 B8FEFFFF |MOV EDX,DWORD PTR SS:[LOCAL.82]
005DB277  |. |66:8B85 BEFEF |MOV AX,WORD PTR SS:[LOCAL.81+2]
005DB27E  |. |8B0A          |MOV ECX,DWORD PTR DS:[EDX]
005DB280  |. |8D55 84       |LEA EDX,[LOCAL.31]
005DB283  |. |66:8901       |MOV WORD PTR DS:[ECX],AX
005DB286  |. |8D45 C8       |LEA EAX,[LOCAL.14]
005DB289  |. |FF85 50FFFFFF |INC DWORD PTR SS:[LOCAL.44]
005DB28F  |. |E8 10AF2700   |CALL 008561A4                           ; [PersonalFinances.008561A4
005DB294  |. |FF8D 50FFFFFF |DEC DWORD PTR SS:[LOCAL.44]
005DB29A  |. |8D45 84       |LEA EAX,[LOCAL.31]
005DB29D  |. |BA 02000000   |MOV EDX,2
005DB2A2  |. |E8 C1AE2700   |CALL 00856168
005DB2A7  |. |E9 1C010000   |JMP 005DB3C8
005DB2AC  |> |66:C785 44FFF |MOV WORD PTR SS:[LOCAL.47],120          ; Case 3 of switch PersonalFinances.5DB0CD
005DB2B5  |. |66:8B8D E6FEF |MOV CX,WORD PTR SS:[LOCAL.71+2]
005DB2BC  |. |66:898D B6FEF |MOV WORD PTR SS:[LOCAL.83+2],CX
005DB2C3  |. |33C9          |XOR ECX,ECX
005DB2C5  |. |894D 80       |MOV DWORD PTR SS:[LOCAL.32],ECX
005DB2C8  |. |8D45 80       |LEA EAX,[LOCAL.32]
005DB2CB  |. |BA 01000000   |MOV EDX,1
005DB2D0  |. |E8 77B02700   |CALL 0085634C
005DB2D5  |. |8985 B0FEFFFF |MOV DWORD PTR SS:[LOCAL.84],EAX
005DB2DB  |. |6A 01         |PUSH 1                                  ; /Arg2 = 1
005DB2DD  |. |8B8D B0FEFFFF |MOV ECX,DWORD PTR SS:[LOCAL.84]         ; |
005DB2E3  |. |51            |PUSH ECX                                ; |Arg1 => [LOCAL.84]
005DB2E4  |. |E8 7BAC2700   |CALL 00855F64                           ; \PersonalFinances.00855F64
005DB2E9  |. |83C4 08       |ADD ESP,8
005DB2EC  |. |8B85 B0FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.84]
005DB2F2  |. |E8 EDAF2700   |CALL 008562E4
005DB2F7  |. |8B95 B0FEFFFF |MOV EDX,DWORD PTR SS:[LOCAL.84]
005DB2FD  |. |66:8B85 B6FEF |MOV AX,WORD PTR SS:[LOCAL.83+2]
005DB304  |. |8B0A          |MOV ECX,DWORD PTR DS:[EDX]
005DB306  |. |8D55 80       |LEA EDX,[LOCAL.32]
005DB309  |. |66:8901       |MOV WORD PTR DS:[ECX],AX
005DB30C  |. |8D45 C8       |LEA EAX,[LOCAL.14]
005DB30F  |. |FF85 50FFFFFF |INC DWORD PTR SS:[LOCAL.44]
005DB315  |. |E8 8AAE2700   |CALL 008561A4                           ; [PersonalFinances.008561A4
005DB31A  |. |FF8D 50FFFFFF |DEC DWORD PTR SS:[LOCAL.44]
005DB320  |. |8D45 80       |LEA EAX,[LOCAL.32]
005DB323  |. |BA 02000000   |MOV EDX,2
005DB328  |. |E8 3BAE2700   |CALL 00856168
005DB32D  |. |E9 96000000   |JMP 005DB3C8
005DB332  |> |83FE 0A       |CMP ESI,0A                              ; Case 4 of switch PersonalFinances.5DB0CD
005DB335  |. |0F8E 8D000000 |JLE 005DB3C8
005DB33B  |. |66:C785 44FFF |MOV WORD PTR SS:[LOCAL.47],12C
005DB344  |. |66:8B8D E6FEF |MOV CX,WORD PTR SS:[LOCAL.71+2]
005DB34B  |. |66:898D AEFEF |MOV WORD PTR SS:[LOCAL.85+2],CX
005DB352  |. |33C9          |XOR ECX,ECX
005DB354  |. |898D 7CFFFFFF |MOV DWORD PTR SS:[LOCAL.33],ECX
005DB35A  |. |8D85 7CFFFFFF |LEA EAX,[LOCAL.33]
005DB360  |. |BA 01000000   |MOV EDX,1
005DB365  |. |E8 E2AF2700   |CALL 0085634C
005DB36A  |. |8985 A8FEFFFF |MOV DWORD PTR SS:[LOCAL.86],EAX
005DB370  |. |6A 01         |PUSH 1                                  ; /Arg2 = 1
005DB372  |. |8B8D A8FEFFFF |MOV ECX,DWORD PTR SS:[LOCAL.86]         ; |
005DB378  |. |51            |PUSH ECX                                ; |Arg1 => [LOCAL.86]
005DB379  |. |E8 E6AB2700   |CALL 00855F64                           ; \PersonalFinances.00855F64
005DB37E  |. |83C4 08       |ADD ESP,8
005DB381  |. |8B85 A8FEFFFF |MOV EAX,DWORD PTR SS:[LOCAL.86]
005DB387  |. |E8 58AF2700   |CALL 008562E4
005DB38C  |. |8B95 A8FEFFFF |MOV EDX,DWORD PTR SS:[LOCAL.86]
005DB392  |. |66:8B85 AEFEF |MOV AX,WORD PTR SS:[LOCAL.85+2]
005DB399  |. |8B0A          |MOV ECX,DWORD PTR DS:[EDX]
005DB39B  |. |8D95 7CFFFFFF |LEA EDX,[LOCAL.33]
005DB3A1  |. |66:8901       |MOV WORD PTR DS:[ECX],AX
005DB3A4  |. |8D45 C8       |LEA EAX,[LOCAL.14]
005DB3A7  |. |FF85 50FFFFFF |INC DWORD PTR SS:[LOCAL.44]
005DB3AD  |. |E8 F2AD2700   |CALL 008561A4                           ; [PersonalFinances.008561A4
005DB3B2  |. |FF8D 50FFFFFF |DEC DWORD PTR SS:[LOCAL.44]
005DB3B8  |. |8D85 7CFFFFFF |LEA EAX,[LOCAL.33]
005DB3BE  |. |BA 02000000   |MOV EDX,2
005DB3C3  |. |E8 A0AD2700   |CALL 00856168
005DB3C8  |> |83FE 06       |CMP ESI,6                               ; Default case of switch PersonalFinances.5DB0CD
005DB3CB  |. |7D 79         |JGE SHORT 005DB446
005DB3CD  |. |66:C785 44FFF |MOV WORD PTR SS:[LOCAL.47],138
005DB3D6  |. |66:8B8D E6FEF |MOV CX,WORD PTR SS:[LOCAL.71+2]
005DB3DD  |. |66:898D A6FEF |MOV WORD PTR SS:[LOCAL.87+2],CX
005DB3E4  |. |33C9          |XOR ECX,ECX
005DB3E6  |. |898D 78FFFFFF |MOV DWORD PTR SS:[LOCAL.34],ECX
005DB3EC  |. |8D85 78FFFFFF |LEA EAX,[LOCAL.34]
005DB3F2  |. |BA 01000000   |MOV EDX,1
005DB3F7  |. |E8 50AF2700   |CALL 0085634C
005DB3FC  |. |8BF8          |MOV EDI,EAX
005DB3FE  |. |6A 01         |PUSH 1                                  ; /Arg2 = 1
005DB400  |. |57            |PUSH EDI                                ; |Arg1
005DB401  |. |E8 5EAB2700   |CALL 00855F64                           ; \PersonalFinances.00855F64
005DB406  |. |83C4 08       |ADD ESP,8
005DB409  |. |8BC7          |MOV EAX,EDI
005DB40B  |. |E8 D4AE2700   |CALL 008562E4
005DB410  |. |66:8B8D A6FEF |MOV CX,WORD PTR SS:[LOCAL.87+2]
005DB417  |. |8B17          |MOV EDX,DWORD PTR DS:[EDI]
005DB419  |. |8D45 C4       |LEA EAX,[LOCAL.15]
005DB41C  |. |66:890A       |MOV WORD PTR DS:[EDX],CX
005DB41F  |. |8D95 78FFFFFF |LEA EDX,[LOCAL.34]
005DB425  |. |FF85 50FFFFFF |INC DWORD PTR SS:[LOCAL.44]
005DB42B  |. |E8 74AD2700   |CALL 008561A4                           ; [PersonalFinances.008561A4
005DB430  |. |FF8D 50FFFFFF |DEC DWORD PTR SS:[LOCAL.44]
005DB436  |. |8D85 78FFFFFF |LEA EAX,[LOCAL.34]
005DB43C  |. |BA 02000000   |MOV EDX,2
005DB441  |. |E8 22AD2700   |CALL 00856168
005DB446  |> |46            |INC ESI
005DB447  |> |837D CC 00    |CMP DWORD PTR SS:[LOCAL.13],0
005DB44B  |. |74 08         |JE SHORT 005DB455
005DB44D  |. |8B4D CC       |MOV ECX,DWORD PTR SS:[LOCAL.13]
005DB450  |. |8B49 FC       |MOV ECX,DWORD PTR DS:[ECX-4]
005DB453  |. |EB 02         |JMP SHORT 005DB457
005DB455  |> |33C9          |XOR ECX,ECX
005DB457  |> |3BF1          |CMP ESI,ECX
005DB459  |.^\0F8E 10FBFFFF \JLE 005DAF6F
#6
Hola, saludos a todos y muchas gracias de antemano. Me estoy iniciando en este mundillo de la ingeniería inversa y después de leerme unos cuantos tutos y crackmes me decidí por intentar registrar este programa:

http://sp.financessoftware.com/downloads/PersonalFinancesPro.zip

Es un programa portable que no necesita instalación. No es el típico con nombre/número de serie. Sólo pide un número de serie. El problema es que no da mensaje de si es válido o no. Lo sabes al reiniciar el programa porque te vuelve a salir una ventana con el aviso de que no está registrado.

Hay otra cosa que lo diferencia de los típicos y es que si no está registrado no permite (en teoría) más de 200 transacciones. Digo en teoría porque a mí a veces me sale el límite a 270 a veces a 290 (es un poco confuso eso).

Bueno comienzo mirándolo con el PEid y veo que está compilado con Borland C++ 1999. Creo que no pinta mal la cosa.

Me voy al Olly y aqui empiezan los problemas:

1) Imposible localizar las cadenas de texto chico bueno chico malo, por lo menos en el módulo principal (dependen del idioma escogido y están almacenas en un fichero de texto en la carpeta LANG)

2) Lo intento a través de las funciones GetWindowTextA, MessageBoxA y GetDlgItemTextA pero tampoco hay suerte parece que utiliza APIs diferentes.

3) Intento tracear el programa e ir colocando BP a ver si consigo localizar la rutina "manualmente" pero se hace muy complejo (hay demasiados saltos y a la mínima me paso de la rutina de comprobación)

Alguien puede echarle un vistazo y ayudarme un poquito, o al menos orientarme sobre qué otras opciones tengo?

Saludos y gracias de nuevo


PD.:  4) He intentado otro camino: colocar un BP on WinProc para que pare al pulsar el botón del OK (202) pero tampoco ha habido suerte. Alguna idea?