Buenas a todos,
a ver que me siento un poco como que tengo el pez pero sigo sin saber pescar.
He buscado "all references text strings" lo que el programa dice al convertir un archivo:
ASCII "You have %d time to evaluate this product, you may purchase a full version from...
Aparece esa y otra: ASCII "Thank you for choosing our product."
Voy a esa línea y veo:
0041BAB2 |. 68 D8316500 PUSH doc2anyO.006531D8 ; ASCII "Thank you for choosing our product."
y justo encima:
0041BA92 |. E8 C9E0FFFF CALL doc2anyO.00419B60
0041BA97 |. 83C4 04 ADD ESP,4
0041BA9A |. 85C0 TEST EAX,EAX
0041BA9C 74 21 JE SHORT doc2anyO.0041BABF
0041BA9E |. 68 48E73201 PUSH doc2anyO.0132E748
0041BAA3 |. C705 50D83201 >MOV DWORD PTR DS:[132D850],1
0041BAAD |. E8 DEF8FFFF CALL doc2anyO.0041B390
el call de BAAD (irónicamente,jeje) escribe el valor correcto de la clave de registro.
(Por cierto WriteProfileString lo escribe en el win.ini y no en el registro! Win7 ya no cuenta con win.ini ?¿?¿)
Si subimos está el JE y el TEST y antes el CALL doc2anyO.00419B60
Si NOPeo ese 74 21 ya no me salta la parte buena y todo funciona bien, me quita hasta la marca de agua de publicidad.
Y aquí empiezan mis dudas:
a CALL doc2anyO.00419B60 se le llama: Local calls from 0041BA92, 0041C7AF
¿la segunda llamada para qué es? Aparentemente no afecta pero no me fío...
Otra cosa:
es mejor que NOPear hacer que la rutina de CALL doc2anyO.00419B60
haga MOV EAX,1
RETN
Si no lo he entendido mal el TEST EAX, EAX hace un AND pero no altera más que los flags, léase comprueba si EAX es 0.
JE salta si FZ = 0
así que si pongo un 1 en EAX con el TEST, FZ se queda a 0 y JE no salta.
es correcto ?
Ale voy a seguir, si alguien quiere perder un rato explicándome alguna de estas cosas se lo agradeceré.
Voy a buscarme otro programa para volver a tropezar y tostaros a dudas
Saludos !!