En primer lugar un saludo a tod@s.
Comentaros que llevo tiempo siguiendo las interesantes aportaciones de este foro. Aunque me considero en estos temas un opositor a aprendiz, sin demasiado tiempo para dedicarle al estudio. El periodo de vacaciones del verano pasado continué mis estudios practicando con el desempaquetado de un programa. Estas vacaciones me había propuesto vencer sus limitaciones, pero llevo 4 días encallado. Hecha mi presentación voy a describir mi problema.
Una vez desempacado el trial decido estudiar sus limitaciones.
El programa permite uso full durante el período de 90 días. Pasada la fecha solo posibilita el uso de un reducido número de funciones.
Inicialmente cuando se carga aparece una NAG informativa que nos indica la fecha máxima del uso en modo full. Es decir, la comparación de fechas ya se ha realizado. Al aceptar la NAG informativa aparece otra ventana preguntando que base de datos queremos cargar. Aparecen un par de bases de ejemplo una vacía y otra con datos, son archivos con extensión .fdb (base de datos firebird, ...)
Mi teoría es que compara la fecha del archivo .fdb o alguna clave de registro, con la fecha del sistema.
He intentado con:
GetSystemTime
SystemTimeToFileTime
GetSystemTimeAsFileTime
FileTimeToLocalFileTime
FileTimeToDosDateTime: Con esta API para al escoger el .fdb, pero a partir de ahí me marea y me pasa por alto la comparación.
Ahí tenéis el programa y su dump: http://www.megaupload.com/?d=Y25QMRFI
Espero podáis echarme una mano antes que se acaben mis vacaciones, gracias por anticipado.
Hola:
A mí personalmente, me gusta hallar la call que provoca la nagscreen y lo consigo mediante el método llamado "a lo retro".Este método consiste en colocar un breakpoint en el Olly (BP DestroyWindow) antes de cerrar esa nag.Cuando la cierras Olly detiene la ejecución justo cuando entra en el procedimiento de borrar la nag.Seguidamente de doy a ALT+F9 y me deja parado una instrucción después de la call para sacar la nag cojonera.A partir de ahí hay ir observando hacia atrás, en el código, y colocar breakpoints en los lugares sospechosos que te llevan a la esa call maldita.Reiniciar Olly e ir observando que sucede a partir de esos BP's y si es preciso retroceder más en el código para descubrir donde descuenta los días.A veces es tan simple, como ver una resta a 5A (90 decimal).
De todos modos, existen bastantes escritos sobre las nags por aquí:
*http://ricardonarvaja.info/WEB/CURSO NUEVO/TEORIAS NUMERADAS/*:
816-Quitando nagscreen en vb.zip
838-COMO_ELIMINAR_NAGS_EN_PROGRAMAS_DELPHI.rar
834-Registrando Secutity Task Manager por ZiKaTRiZ.rar
323-Desempacado y quitando la nag de Soldat v1.21 (ASPr v1.2).rar
932-Parcheando y quitando NagS a un EXE por CaR19.rar
1012-Teoria sobre como eliminar un NAG con nada mas mirrar la pila.rar
177-COMO HACER UN LOADER SENCILLO QUE PULSE BOTONES PARA ELIMINAR NAGS.rar
115-OLLY_Contra_NAG_Parte_III.zip
200-Como realizar un injerto para eliminar una nag simulando que se presiona el boton .rar
100-OLLY_Contra_NAG_Parte_II.rar
095-OLLY Contra Las NAG Parte I por Arapumk.rar
*http://ricardonarvaja.info/WEB/OTROS/AKIRA TODO/*:
35.Estudio completo de Nag Screen.rar
Suerte,
Mintaka
PD:A ver si se despierta el amigo Tena y te da sus consejos.
Primero dar las gracias a Mintaka por su interés en ayudarme.
Una vez finalizado el repaso a los tutoriales sobre la destrucción de NAGs , la conclusión es que me ha ayudado a confirmar mas mi sospecha.
El ocultar (jumpear) la NAG inicial, confirma que la fecha de final de periodo que en ella aparece no es significativa, solo informativa. Es decir, al jumpear la NAG el programa ya no compara la de fecha para mostrarla y por lo tanto la fecha que aparecía en ella solo se comparaba para mostrarla de manera informativa. Esto verifica que la fecha de NAG informativa no interviene en la validación de fechas .
En cambio, la segunda NAG que aparece en la cual nos ofrece la posibilidad de escoger la base de datos (archivo .fdb) a cargar, es la que en alguno de sus CALLs previos se encarga de comparar la fecha con alguna clave de registro, o con la fecha del sistema.
He intentado con:
RegQueryValueExA
RegCreateKeyExA: A través de esta API he descubierto que pasados los 90 días modifica una clave situada en "HKEY_CURRENT_USER\Software\Microsoft\MSInfo" esta clave durante el periodo full contienen el valor 0, y finalizado el periodo lo cambia a 1. Una vez modificado el valor el programa oculta el acceso a parte las funciones del modo full del programa. Dejando al programa solo con las funciones free.
RegSetValueExA
RegOpenKeyExA
RegClosedKeyExA
Sigo perdido, pero luchando! :)
Preparado para nuevas sugerencias solo me quedan 5 días de vacaciones. :-(
Una ayudita! Thanks.
que tal compaéros
pues yo no se mucho (casi nada) de esto pero me interesa mucho el ver que con el olly se pueda hacer en base a break points que algun programa (trial) se pueda ejecutar como full
es posible?? :huh:
Hola peke2305,
En este caso en concreto el programa tiene parte gratuito y otra parte a prueba temporal de 90 días. Se instala con todas las funciones disponibles y una vez superado el período de evaluación dejan de funcionar las funciones de evaluación y solo permanecen activas las funciones gratuitas.
Si un programa no trae todas las funciones, entonces no hay nada que hacer en ingeniería inversa, ya que no podemos activar unas funciones que no están en el programa. En ese caso estaríamos hablando de programar en Olly las funciones que faltan en lenguaje ensamblador(ASM), tarea fuera de toda lógica teniendo en cuenta el numero de lenguajes de alto nivel que disponemos para programar.
Espero que mi explicación no te confunda mas. Sino seguro que los maestros lo enfocaran mejor.
Sigo todavía en juego. Por ahora he topado con un salto que evita entrar en el CALL que modifica el registro de sistema comentado en el post anterior, me he acercado a la zona con el API RegSetValueExA. Pero sigo a oscuras en el tema de la comparación de fechas. Alguna sugerencia, please!
Cita de: nemus en 31 Agosto 2010, 22:21 PM
.......
RegCreateKeyExA: A través de esta API he descubierto que pasados los 90 días modifica una clave situada en "HKEY_CURRENT_USER\Software\Microsoft\MSInfo" esta clave durante el periodo full contienen el valor 0, y finalizado el periodo lo cambia a 1. Una vez modificado el valor el programa oculta el acceso a parte las funciones del modo full del programa. Dejando al programa solo con las funciones free.
RegSetValueExA
RegOpenKeyExA
RegClosedKeyExA
Sigo perdido, pero luchando! :)
Preparado para nuevas sugerencias solo me quedan 5 días de vacaciones. :-(
Una ayudita! Thanks.[/size]
Bueno.¿Qué tal si averiguas en que parte del código intenta cambiar ese valor a 1?.
Y sabiéndolo, ¿porqué no cambiar ese valor 1 que quiere ponerle, por un cero?.
He intentado bajarme el programa y me dice que:
El archivo al que está intentando acceder está temporalmente desactivadoAnimo que estás más cerca.
Cita de: Mintaka en 1 Septiembre 2010, 22:03 PM
Bueno.¿Qué tal si averiguas en que parte del código intenta cambiar ese valor a 1?.
Y sabiéndolo, ¿porqué no cambiar ese valor 1 que quiere ponerle, por un cero?.
He intentado bajarme el programa y me dice que:
El archivo al que está intentando acceder está temporalmente desactivado
La Nag inicial y la parte de escritura de la clave del registro esta arreglado.
El programa arranca sin la nag informativa y solo me pregunta que archivo de datos quiero cargar. Cuando el archivo de datos .fdb elegido tenia fecha posterior a la permitida entonces es cuando escribía el 1 en la susodicha clave de registro. Al jumpear el momento de escritura en la clave, el programa detecta la fecha incorrecta pero no puede escribir en el registro el valor 1, por tanto el programa permite el uso full dentro del período permitido con un archivo de datos con fecha fuera de los limites permitido.
Sigue quedando la limitación por fecha, si esta limitación la hubiera solucionado en primera posición, el resto de limitaciones no aparecerían. Estoy en el estudio de los métodos de como oculta la fecha.
Por cierto, a mi si que me funciona la descarga del archivo que contiene el programa y el dump desempacado.
Si tienes tiempo y ganas echale un vistazo, mientras lo intentaré acabar.
Saludos.
Me estoy volviendo loco! Pensaba que estaba cerca y la cosa se ha complicado. Al invertir un salto me ha bloqueado nuevamente el programa, y no se que registro me ha modificado. He restaurado el registro y he vuelto al estado anterior.
Si instaláis el programa con la fecha actual sale una nag indicando que el programa esta fuera de fechas y se cierra.
En cambio se deja instalar con fecha aproximada a junio/2009. Entonces permite 90 días full. Mi objetivo era conseguir que el programa estuviera siempre en período de prueba.
Estoy sin ideas. :-[
Domingo noche empiezo a trabajar, y adéu a las vacaciones. :-(
Una ayudita no estaría mal, venga no me hagáis suplicar mas. :-)
Thanks.
En que esta hecho el EXE??
Cita de: MCKSys Argentina en 3 Septiembre 2010, 19:58 PM
En que esta hecho el EXE??
Estaba empaquetado con Yoda's Protector
y desempaquetado Borland C++ for Win32 1999
Gracias.
Si está en BCC puedes usar Dede para ver código y así descubrir dónde está el tema.
De última, puedes hacer un .map y cargarlo en Olly. Mejora mucho la Vision del proggie :)
Saludos!
aqui os pongo enlace de descarga de la ultima versión free, para que no os de problemas de fechas de instalación, etc.; además esta versión no tiene packer y esta compilada en Borland C++ 1999 (y pesa 23,67 MB para la descarga) http://www.mediafire.com/?do3ts90rhdd0yod, el periodo de prueba dice es de 60 dias, desde su instalación, con el limite de que solo se puede utiizar hasta 15/02/11.
miren este código:
en el valor que se hay en [ECX+AC] tenemos el indicativo o puntero de la versión, siendo 0 la de evaluación, 1 Lite, 2 Profesional, 4 Studio, 8 Enterprise, 10 Consultant
009B444D |. 83B9 AC000000>CMP DWORD PTR [ECX+AC],0 ; el valor en dicha direccion identifica la versión a mostrar
009B4454 |. 0F85 F7000000 JNZ 009B4551 ; salta para versiones superiores a la de evaluacion
009B445A |. 66:C745 B4 38>MOV WORD PTR [EBP-4C],38
009B4460 |. BA 9367E300 MOV EDX,00E36793 ; ASCII " 2009 Free"
009B4465 |. 8D45 F0 LEA EAX,DWORD PTR [EBP-10]
009B4468 |. E8 3B633E00 CALL 00D9A7A8
009B446D |. FF45 C0 INC DWORD PTR [EBP-40]
009B4470 |. 8D55 F0 LEA EDX,DWORD PTR [EBP-10]
009B4473 |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B4476 |. E8 0D653E00 CALL 00D9A988
009B447B |. FF4D C0 DEC DWORD PTR [EBP-40]
009B447E |. 8D45 F0 LEA EAX,DWORD PTR [EBP-10]
009B4481 |. BA 02000000 MOV EDX,2
009B4486 |. E8 B9643E00 CALL 00D9A944
009B448B |. FF75 0C PUSH DWORD PTR [EBP+C] ; /Arg1
009B448E |. E8 DDFAFFFF CALL @TSiglopro@GetPermetreAvaluacio$qv ; \@TSiglopro@GetPermetreAvaluacio$qv
009B4493 |. 59 POP ECX
009B4494 |. 84C0 TEST AL,AL
009B4496 |. 74 75 JE SHORT 009B450D
009B4498 |. 66:C745 B4 44>MOV WORD PTR [EBP-4C],44
009B449E |. 68 A267E300 PUSH 00E367A2 ; ASCII "(Evaluation Mode)"
009B44A3 |. 8D45 EC LEA EAX,DWORD PTR [EBP-14]
009B44A6 |. E8 0D08A5FF CALL 00404CB8
009B44AB |. 50 PUSH EAX ; |Arg1
009B44AC |. FF45 C0 INC DWORD PTR [EBP-40] ; |
009B44AF |. BA A067E300 MOV EDX,00E367A0 ; |
009B44B4 |. 8B0D F02FEF00 MOV ECX,DWORD PTR [EF2FF0] ; |ramat.@TIdioma@AppIdioma
009B44BA |. 8B01 MOV EAX,DWORD PTR [ECX] ; |
009B44BC |. B9 F80B0000 MOV ECX,0BF8 ; |
009B44C1 |. E8 36A42100 CALL @TIdioma@GetText$qqrpxcit1 ; \@TIdioma@GetText$qqrpxcit1
009B44C6 |. 8D55 EC LEA EDX,DWORD PTR [EBP-14]
009B44C9 |. 52 PUSH EDX
009B44CA |. 8D45 E8 LEA EAX,DWORD PTR [EBP-18]
009B44CD |. E8 E607A5FF CALL 00404CB8
009B44D2 |. 8BC8 MOV ECX,EAX
009B44D4 |. FF45 C0 INC DWORD PTR [EBP-40]
009B44D7 |. B8 9E67E300 MOV EAX,00E3679E
009B44DC |. 5A POP EDX
009B44DD |. E8 366C3E00 CALL 00D9B118
009B44E2 |. 8D55 E8 LEA EDX,DWORD PTR [EBP-18]
009B44E5 |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B44E8 |. E8 9B643E00 CALL 00D9A988
009B44ED |. FF4D C0 DEC DWORD PTR [EBP-40]
009B44F0 |. 8D45 E8 LEA EAX,DWORD PTR [EBP-18]
009B44F3 |. BA 02000000 MOV EDX,2
009B44F8 |. E8 47643E00 CALL 00D9A944
009B44FD |. FF4D C0 DEC DWORD PTR [EBP-40]
009B4500 |. 8D45 EC LEA EAX,DWORD PTR [EBP-14]
009B4503 |. BA 02000000 MOV EDX,2
009B4508 |. E8 37643E00 CALL 00D9A944
009B450D |> 66:C745 B4 50>MOV WORD PTR [EBP-4C],50
009B4513 |. 8D55 FC LEA EDX,DWORD PTR [EBP-4]
009B4516 |. 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009B4519 |. E8 56643E00 CALL 00D9A974
009B451E |. 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009B4521 |. 66:C745 B4 5C>MOV WORD PTR [EBP-4C],5C
009B4527 |. 50 PUSH EAX
009B4528 |. FF4D C0 DEC DWORD PTR [EBP-40]
009B452B |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B452E |. BA 02000000 MOV EDX,2
009B4533 |. E8 0C643E00 CALL 00D9A944
009B4538 |. 58 POP EAX
009B4539 |. 66:C745 B4 50>MOV WORD PTR [EBP-4C],50
009B453F |. FF45 C0 INC DWORD PTR [EBP-40]
009B4542 |. 8B55 A4 MOV EDX,DWORD PTR [EBP-5C]
009B4545 |. 64:8915 00000>MOV DWORD PTR FS:[0],EDX
009B454C |. E9 76020000 JMP 009B47C7
009B4551 |> 8B4D 0C MOV ECX,DWORD PTR [EBP+C]
009B4554 |. 83B9 AC000000>CMP DWORD PTR [ECX+AC],0
009B455B |. 75 44 JNZ SHORT 009B45A1
009B455D |. 66:C745 B4 68>MOV WORD PTR [EBP-4C],68
009B4563 |. 8D55 FC LEA EDX,DWORD PTR [EBP-4]
009B4566 |. 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009B4569 |. E8 06643E00 CALL 00D9A974
009B456E |. 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009B4571 |. 66:C745 B4 74>MOV WORD PTR [EBP-4C],74
009B4577 |. 50 PUSH EAX
009B4578 |. FF4D C0 DEC DWORD PTR [EBP-40]
009B457B |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B457E |. BA 02000000 MOV EDX,2
009B4583 |. E8 BC633E00 CALL 00D9A944
009B4588 |. 58 POP EAX
009B4589 |. 66:C745 B4 68>MOV WORD PTR [EBP-4C],68
009B458F |. FF45 C0 INC DWORD PTR [EBP-40]
009B4592 |. 8B55 A4 MOV EDX,DWORD PTR [EBP-5C]
009B4595 |. 64:8915 00000>MOV DWORD PTR FS:[0],EDX
009B459C |. E9 26020000 JMP 009B47C7
009B45A1 |> 8B4D 0C MOV ECX,DWORD PTR [EBP+C]
009B45A4 |. F681 AC000000>TEST BYTE PTR [ECX+AC],10
009B45AB |. 74 36 JE SHORT 009B45E3
009B45AD |. 66:C745 B4 80>MOV WORD PTR [EBP-4C],80
009B45B3 |. BA B467E300 MOV EDX,00E367B4 ; ASCII " Consultant"
009B45B8 |. 8D45 E4 LEA EAX,DWORD PTR [EBP-1C]
009B45BB |. E8 E8613E00 CALL 00D9A7A8
009B45C0 |. FF45 C0 INC DWORD PTR [EBP-40]
009B45C3 |. 8D55 E4 LEA EDX,DWORD PTR [EBP-1C]
009B45C6 |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B45C9 |. E8 BA633E00 CALL 00D9A988
009B45CE |. FF4D C0 DEC DWORD PTR [EBP-40]
009B45D1 |. 8D45 E4 LEA EAX,DWORD PTR [EBP-1C]
009B45D4 |. BA 02000000 MOV EDX,2
009B45D9 |. E8 66633E00 CALL 00D9A944
009B45DE |. E9 74010000 JMP 009B4757
009B45E3 |> 8B4D 0C MOV ECX,DWORD PTR [EBP+C]
009B45E6 |. F681 AC000000>TEST BYTE PTR [ECX+AC],8
009B45ED |. 74 36 JE SHORT 009B4625
009B45EF |. 66:C745 B4 8C>MOV WORD PTR [EBP-4C],8C
009B45F5 |. BA C067E300 MOV EDX,00E367C0 ; ASCII " Enterprise"
009B45FA |. 8D45 E0 LEA EAX,DWORD PTR [EBP-20]
009B45FD |. E8 A6613E00 CALL 00D9A7A8
009B4602 |. FF45 C0 INC DWORD PTR [EBP-40]
009B4605 |. 8D55 E0 LEA EDX,DWORD PTR [EBP-20]
009B4608 |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B460B |. E8 78633E00 CALL 00D9A988
009B4610 |. FF4D C0 DEC DWORD PTR [EBP-40]
009B4613 |. 8D45 E0 LEA EAX,DWORD PTR [EBP-20]
009B4616 |. BA 02000000 MOV EDX,2
009B461B |. E8 24633E00 CALL 00D9A944
009B4620 |. E9 32010000 JMP 009B4757
009B4625 |> 8B4D 0C MOV ECX,DWORD PTR [EBP+C]
009B4628 |. F681 AC000000>TEST BYTE PTR [ECX+AC],4
009B462F |. 74 36 JE SHORT 009B4667
009B4631 |. 66:C745 B4 98>MOV WORD PTR [EBP-4C],98
009B4637 |. BA CC67E300 MOV EDX,00E367CC ; ASCII " Studio"
009B463C |. 8D45 DC LEA EAX,DWORD PTR [EBP-24]
009B463F |. E8 64613E00 CALL 00D9A7A8
009B4644 |. FF45 C0 INC DWORD PTR [EBP-40]
009B4647 |. 8D55 DC LEA EDX,DWORD PTR [EBP-24]
009B464A |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B464D |. E8 36633E00 CALL 00D9A988
009B4652 |. FF4D C0 DEC DWORD PTR [EBP-40]
009B4655 |. 8D45 DC LEA EAX,DWORD PTR [EBP-24]
009B4658 |. BA 02000000 MOV EDX,2
009B465D |. E8 E2623E00 CALL 00D9A944
009B4662 |. E9 F0000000 JMP 009B4757
009B4667 |> 8B4D 0C MOV ECX,DWORD PTR [EBP+C]
009B466A |. F681 AC000000>TEST BYTE PTR [ECX+AC],2
009B4671 |. 74 36 JE SHORT 009B46A9
009B4673 |. 66:C745 B4 A4>MOV WORD PTR [EBP-4C],0A4
009B4679 |. BA D467E300 MOV EDX,00E367D4 ; ASCII " Professional"
009B467E |. 8D45 D8 LEA EAX,DWORD PTR [EBP-28]
009B4681 |. E8 22613E00 CALL 00D9A7A8
009B4686 |. FF45 C0 INC DWORD PTR [EBP-40]
009B4689 |. 8D55 D8 LEA EDX,DWORD PTR [EBP-28]
009B468C |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B468F |. E8 F4623E00 CALL 00D9A988
009B4694 |. FF4D C0 DEC DWORD PTR [EBP-40]
009B4697 |. 8D45 D8 LEA EAX,DWORD PTR [EBP-28]
009B469A |. BA 02000000 MOV EDX,2
009B469F |. E8 A0623E00 CALL 00D9A944
009B46A4 |. E9 AE000000 JMP 009B4757
009B46A9 |> 8B4D 0C MOV ECX,DWORD PTR [EBP+C]
009B46AC |. F681 AC000000>TEST BYTE PTR [ECX+AC],1
009B46B3 |. 74 33 JE SHORT 009B46E8
009B46B5 |. 66:C745 B4 B0>MOV WORD PTR [EBP-4C],0B0
009B46BB |. BA E267E300 MOV EDX,00E367E2 ; ASCII " Lite"
009B46C0 |. 8D45 D4 LEA EAX,DWORD PTR [EBP-2C]
009B46C3 |. E8 E0603E00 CALL 00D9A7A8
009B46C8 |. FF45 C0 INC DWORD PTR [EBP-40]
009B46CB |. 8D55 D4 LEA EDX,DWORD PTR [EBP-2C]
009B46CE |. 8D45 FC LEA EAX,DWORD PTR [EBP-4]
009B46D1 |. E8 B2623E00 CALL 00D9A988
009B46D6 |. FF4D C0 DEC DWORD PTR [EBP-40]
009B46D9 |. 8D45 D4 LEA EAX,DWORD PTR [EBP-2C]
009B46DC |. BA 02000000 MOV EDX,2
009B46E1 |. E8 5E623E00 CALL 00D9A944
009B46E6 |. EB 6F JMP SHORT 009B4757
La cuestión es encontrar en el primer sitio que a la direccion e [ECX+AC] de referencia se le pasa el valor 0 para pasarle el valor de la versión que nos interese tener, y con esto se acaba el asunto de los 60 del periodo de evaluación, pero nos queda el escoyo de saltarnos la fecha del 15/02/11 para seguir utilizando el programa a partir de dicha fecha.
Cita de: nemus en 3 Septiembre 2010, 18:41 PM
En cambio se deja instalar con fecha aproximada a junio/2009. Entonces permite 90 días full. Mi objetivo era conseguir que el programa estuviera siempre en período de prueba.
Estoy sin ideas. :-[
Domingo noche empiezo a trabajar, y adéu a las vacaciones. :-(
Una ayudita no estaría mal, venga no me hagáis suplicar mas. :-)
Thanks.
Te mandé un MP nemus.
Mintaka
Cita de: MCKSys Argentina en 4 Septiembre 2010, 16:14 PM
Si está en BCC puedes usar Dede para ver código y así descubrir dónde está el tema.
De última, puedes hacer un .map y cargarlo en Olly. Mejora mucho la Vision del proggie :)
Saludos!
Probé en su día reemplazar las etiquetas con el .map, pero no mejoro demasiado.
Gracias ¿Otra idea?Cita de: Mintaka en 4 Septiembre 2010, 17:19 PM
Te mandé un MP nemus.
Mintaka
Perdona no me había enterado del MP.
¿Estas seguro que el archivo que me has enviado es el modificado? No se salta la NAG inicial, no carga bases de datos fuera de fecha (activándose el bit de la clave de registro MSNetOLE5), y cuando lo arranco fuera de periodo solo funcionan las funciones free. Es decir, hace lo que tiene que hacer el programa cuando pasa de fecha, seguir funcionando con las funciones free.
De todas las maneras muy agradecido por el intento, y mirate si me enviaste el archivo correcto que debe ser eso.
Salut!Cita de: LSL en 4 Septiembre 2010, 17:00 PM
aqui os pongo enlace de descarga de la ultima versión free, para que no os de problemas de fechas de instalación, etc.; además esta versión no tiene packer y esta compilada en Borland C++ 1999 (y pesa 23,67 MB para la descarga) http://www.mediafire.com/?do3ts90rhdd0yod, el periodo de prueba dice es de 60 dias, desde su instalación, con el limite de que solo se puede utiizar hasta 15/02/11.
miren este código:
en el valor que se hay en [ECX+AC] tenemos el indicativo o puntero de la versión, siendo 0 la de evaluación, 1 Lite, 2 Profesional, 4 Studio, 8 Enterprise, 10 Consultant
009B444D |. 83B9 AC000000>CMP DWORD PTR [ECX+AC],0 ; el valor en dicha direccion identifica la versión a mostrar
009B4454 |. 0F85 F7000000 JNZ 009B4551 ; salta para versiones superiores a la de evaluacion
La cuestión es encontrar en el primer sitio que a la direccion e [ECX+AC] de referencia se le pasa el valor 0 para pasarle el valor de la versión que nos interese tener, y con esto se acaba el asunto de los 60 del periodo de evaluación, pero nos queda el escoyo de saltarnos la fecha del 15/02/11 para seguir utilizando el programa a partir de dicha fecha.
En la versión 2007 esta la misma sección:00A28234 |. 83BA 98000000 >CMP DWORD PTR DS:[EDX+98],0
00A2823B |. 75 75 JNZ SHORT ramat.00A282B2
00A2823D |. 66:C745 B0 200>MOV WORD PTR SS:[EBP-50],20
00A28243 |. BA 26E6DE00 MOV EDX,ramat.00DEE626 ; ASCII " 2007 Free"
00A28248 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00A2824B |. E8 70612A00 CALL ramat.00CCE3C0
00A28250 |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A28253 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
00A28256 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A28259 |. E8 AE632A00 CALL ramat.00CCE60C
00A2825E |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A28261 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00A28264 |. BA 02000000 MOV EDX,2
00A28269 |. E8 5A632A00 CALL ramat.00CCE5C8
00A2826E |. 66:C745 B0 2C0>MOV WORD PTR SS:[EBP-50],2C
00A28274 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
00A28277 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00A2827A |. E8 79632A00 CALL ramat.00CCE5F8
00A2827F |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00A28282 |. 66:C745 B0 380>MOV WORD PTR SS:[EBP-50],38
00A28288 |. 50 PUSH EAX
00A28289 |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A2828C |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A2828F |. BA 02000000 MOV EDX,2
00A28294 |. E8 2F632A00 CALL ramat.00CCE5C8
00A28299 |. 58 POP EAX
00A2829A |. 66:C745 B0 2C0>MOV WORD PTR SS:[EBP-50],2C
00A282A0 |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A282A3 |. 8B55 A0 MOV EDX,DWORD PTR SS:[EBP-60]
00A282A6 |. 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00A282AD |. E9 34030000 JMP ramat.00A285E6
00A282B2 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
00A282B5 |. 83B9 98000000 >CMP DWORD PTR DS:[ECX+98],5
00A282BC |. 0F85 8C000000 JNZ ramat.00A2834E
00A282C2 |. 66:C745 B0 440>MOV WORD PTR SS:[EBP-50],44
00A282C8 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
00A282CB |. E8 D4BC9DFF CALL ramat.00403FA4
00A282D0 |. 50 PUSH EAX
00A282D1 |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A282D4 |. BA 31E6DE00 MOV EDX,ramat.00DEE631 ; ASCII " Betatester"
00A282D9 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
00A282DC |. E8 DF602A00 CALL ramat.00CCE3C0
00A282E1 |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A282E4 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
00A282E7 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A282EA |. 59 POP ECX
00A282EB |. E8 30632A00 CALL ramat.00CCE620
00A282F0 |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
00A282F3 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00A282F6 |. E8 FD622A00 CALL ramat.00CCE5F8
00A282FB |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00A282FE |. 66:C745 B0 500>MOV WORD PTR SS:[EBP-50],50
00A28304 |. 50 PUSH EAX
00A28305 |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A28308 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
00A2830B |. BA 02000000 MOV EDX,2
00A28310 |. E8 B3622A00 CALL ramat.00CCE5C8
00A28315 |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A28318 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
00A2831B |. BA 02000000 MOV EDX,2
00A28320 |. E8 A3622A00 CALL ramat.00CCE5C8
00A28325 |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A28328 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A2832B |. BA 02000000 MOV EDX,2
00A28330 |. E8 93622A00 CALL ramat.00CCE5C8
00A28335 |. 58 POP EAX
00A28336 |. 66:C745 B0 440>MOV WORD PTR SS:[EBP-50],44
00A2833C |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A2833F |. 8B55 A0 MOV EDX,DWORD PTR SS:[EBP-60]
00A28342 |. 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00A28349 |. E9 98020000 JMP ramat.00A285E6
00A2834E |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
00A28351 |. 83B9 A8000000 >CMP DWORD PTR DS:[ECX+A8],0
00A28358 |. 75 44 JNZ SHORT ramat.00A2839E
00A2835A |. 66:C745 B0 5C0>MOV WORD PTR SS:[EBP-50],5C
00A28360 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
00A28363 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00A28366 |. E8 8D622A00 CALL ramat.00CCE5F8
00A2836B |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00A2836E |. 66:C745 B0 680>MOV WORD PTR SS:[EBP-50],68
00A28374 |. 50 PUSH EAX
00A28375 |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A28378 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A2837B |. BA 02000000 MOV EDX,2
00A28380 |. E8 43622A00 CALL ramat.00CCE5C8
00A28385 |. 58 POP EAX
00A28386 |. 66:C745 B0 5C0>MOV WORD PTR SS:[EBP-50],5C
00A2838C |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A2838F |. 8B55 A0 MOV EDX,DWORD PTR SS:[EBP-60]
00A28392 |. 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00A28399 |. E9 48020000 JMP ramat.00A285E6
00A2839E |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
00A283A1 |. F681 A8000000 >TEST BYTE PTR DS:[ECX+A8],8
00A283A8 |. 74 36 JE SHORT ramat.00A283E0
00A283AA |. 66:C745 B0 740>MOV WORD PTR SS:[EBP-50],74
00A283B0 |. BA 3DE6DE00 MOV EDX,ramat.00DEE63D ; ASCII " Enterprise"
00A283B5 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
00A283B8 |. E8 03602A00 CALL ramat.00CCE3C0
00A283BD |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A283C0 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
00A283C3 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A283C6 |. E8 41622A00 CALL ramat.00CCE60C
00A283CB |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A283CE |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
00A283D1 |. BA 02000000 MOV EDX,2
00A283D6 |. E8 ED612A00 CALL ramat.00CCE5C8
00A283DB |. E9 96010000 JMP ramat.00A28576
00A283E0 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
00A283E3 |. F681 A8000000 >TEST BYTE PTR DS:[ECX+A8],4
00A283EA |. 74 36 JE SHORT ramat.00A28422
00A283EC |. 66:C745 B0 800>MOV WORD PTR SS:[EBP-50],80
00A283F2 |. BA 49E6DE00 MOV EDX,ramat.00DEE649 ; ASCII " Studio"
00A283F7 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
00A283FA |. E8 C15F2A00 CALL ramat.00CCE3C0
00A283FF |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A28402 |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
00A28405 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A28408 |. E8 FF612A00 CALL ramat.00CCE60C
00A2840D |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A28410 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
00A28413 |. BA 02000000 MOV EDX,2
00A28418 |. E8 AB612A00 CALL ramat.00CCE5C8
00A2841D |. E9 54010000 JMP ramat.00A28576
00A28422 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
00A28425 |. F681 A8000000 >TEST BYTE PTR DS:[ECX+A8],2
00A2842C |. 74 36 JE SHORT ramat.00A28464
00A2842E |. 66:C745 B0 8C0>MOV WORD PTR SS:[EBP-50],8C
00A28434 |. BA 51E6DE00 MOV EDX,ramat.00DEE651 ; ASCII " Professional"
00A28439 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
00A2843C |. E8 7F5F2A00 CALL ramat.00CCE3C0
00A28441 |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A28444 |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
00A28447 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A2844A |. E8 BD612A00 CALL ramat.00CCE60C
00A2844F |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A28452 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
00A28455 |. BA 02000000 MOV EDX,2
00A2845A |. E8 69612A00 CALL ramat.00CCE5C8
00A2845F |. E9 12010000 JMP ramat.00A28576
00A28464 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
00A28467 |. F681 A8000000 >TEST BYTE PTR DS:[ECX+A8],1
00A2846E |. 74 36 JE SHORT ramat.00A284A6
00A28470 |. 66:C745 B0 980>MOV WORD PTR SS:[EBP-50],98
00A28476 |. BA 5FE6DE00 MOV EDX,ramat.00DEE65F ; ASCII " Lite"
00A2847B |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00A2847E |. E8 3D5F2A00 CALL ramat.00CCE3C0
00A28483 |. FF45 BC INC DWORD PTR SS:[EBP-44]
00A28486 |. 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
00A28489 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00A2848C |. E8 7B612A00 CALL ramat.00CCE60C
00A28491 |. FF4D BC DEC DWORD PTR SS:[EBP-44]
00A28494 |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00A28497 |. BA 02000000 MOV EDX,2
00A2849C |. E8 27612A00 CALL ramat.00CCE5C8
00A284A1 |. E9 D0000000 JMP ramat.00A28576
00A284A6 |> 8D4D A0 LEA ECX,DWORD PTR SS:[EBP-60]
00A284A9 |. 51 PUSH ECX
00A284AA |. 6A 00 PUSH 0
00A284AC |. 6A 00 PUSH 0
00A284AE |. 6A 00 PUSH 0
00A284B0 |. 6A 01 PUSH 1
00A284B2 |. 68 988F4000 PUSH ramat.00408F98 ; Entry address
Me pongo a mirarlo por ahí.
Así da gusto aprender. Thanks por colaborar en mi causa.
Vuelta al estudio, a partir de hoy me toca trabajar las tardes-noche, durmiendo algo por las noches :xD. Vamos ver si aprovecho estos días.
Anduve rastreando la posición de memoria [ECX+AC], en la versión nueva que ha posteado LSL.
Tambien decir que si alguien anduvo trasteando con la versión que colgué, la situación es diferente debido a que son dos valores a seguir, los de los apuntadores [EDX+98] y [ECX+A8] . Para no liarnos voy a seguir con la nueva versión ya que el objetivo de trabajar con la vieja versión fue la comprensión del desempacado Yodas Protector.
Con los datos facilitados por LSL:Citaraqui os pongo enlace de descarga de la ultima versión free, para que no os de problemas de fechas de instalación, etc.; además esta versión no tiene packer y esta compilada en Borland C++ 1999 (y pesa 23,67 MB para la descarga) http://www.mediafire.com/?do3ts90rhdd0yod, el periodo de prueba dice es de 60 dias, desde su instalación, con el limite de que solo se puede utiizar hasta 15/02/11.
miren este código:
en el valor que se hay en [ECX+AC] tenemos el indicativo o puntero de la versión, siendo 0 la de evaluación, 1 Lite, 2 Profesional, 4 Studio, 8 Enterprise, 10 Consultant
009B444D |. 83B9 AC000000>CMP DWORD PTR [ECX+AC],0 ; el valor en dicha direccion identifica la versión a mostrar
009B4454 |. 0F85 F7000000 JNZ 009B4551 ; salta para versiones superiores a la de evaluacion
La cuestión es encontrar en el primer sitio que a la direccion e [ECX+AC] de referencia se le pasa el valor 0 para pasarle el valor de la versión que nos interese tener, y con esto se acaba el asunto de los 60 del periodo de evaluación, pero nos queda el escoyo de saltarnos la fecha del 15/02/11 para seguir utilizando el programa a partir de dicha fecha.
He intentado seguir los apuntadores a ese valor de memoria, pero varia la dirección de memoria apuntada, es decir que no me sirve poner un breakpoint(BP) on Memory en el byte correspondiente, tampoco me sirve poner un hardware BP. ¿Algún consejo ?
Gracias.
Hola nemus, en la dirección de memoria donde te apunta [ECX+AC], en mi ordenador es [02326DD0] le pones un BP Hardware, on write Dword.
reinicias Ctrl+F2, y ejecutas con F9, ahora te debe parar en
00D76491 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR [ESI]
aqui no le hagas caso, sigues con F9
despues en
009B2E38 |. 8D45 CC LEA EAX,DWORD PTR [EBP-34]
ahí en la instrucción anterior te ha puesto la direccion de referencia a cero, con
009B2E30 |. 33D2 XOR EDX,EDX
009B2E32 |. 8990 AC000000 MOV DWORD PTR [EAX+AC],EDX
aquí por ahora tampoco le hagas caso, pues despues va a poner a cero de nuevo en el siguiente acceso, que es en
009B4269 |. 8990 AC000000 MOV DWORD PTR [EAX+AC],EDX
ahora aquí
009B4267 |. 33D2 XOR EDX,EDX
009B4269 |. 8990 AC000000 MOV DWORD PTR [EAX+AC],EDX
es donde tienes que ingeniartelas para mover a la dirección que apunta [EAX+AC] el valor de la versión que te interese (pudiendo ser como verás mas abajo los valores 10,8,4,2,1).
P.d. tienes todo este trozo de código para reprogramar con objeto de obtener el objetivo,
009B4267 |. 33D2 XOR EDX,EDX
009B4269 |. 8990 AC000000 MOV DWORD PTR [EAX+AC],EDX
009B426F |> 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B4272 |. F681 AC000000 04 TEST BYTE PTR [ECX+AC],4
009B4279 |. 74 51 JE SHORT 009B42CC ; salta
la cuestión es MOV DWORD PTR [EAX+AC],4 (me parece que el valor 4 de Studio es mas completa que la 2 de Professional), y saltar siempre a 009b42CC, con JMP SHORT 009B42CC
el resto de codigo existente no importa NOPearlo pues solo se utiliza para comparar y que se produzca el salto condicional, y en tu caso te conviene ahí saltar siempre.
....
Con esto solucionas el periodo trial de 60 dias, pero esta version free tiene otro limite de uso hasta el 15/02/11 :silbar:, tendrás que localizar la comparación de fechas y ...
LSL:
Ante nada agradecerte el esfuerzo en guiarme entre la penumbra
Sigamos:Cita de: LSL en 18 Septiembre 2010, 07:05 AM
Hola nemus, en la dirección de memoria donde te apunta [ECX+AC], en mi ordenador es [02326DD0] le pones un BP Hardware, on write Dword.
Mi problema es que no para en el BP Hardware, on write Dword, ya que si inicialmente la dirección de memoria apuntada en [ECX+AC], en mi ordenador es [021A1304].
Citar
009B444D |. 83B9 AC000000>CMP DWORD PTR DS:[ECX+AC],0
----------------------------------------------------------------------------
DS:[021A1304]=00000000
ramat.@TSiglopro@GetTitolExtes$qv+0CD
Pero al reiniciar el programa (Ctrl+F2), no para en Bp Hardware, debido a que en [ECX+AC], su dirección de memoria apuntada es diferente [021A1304]Citar
009B444D |. 83B9 AC000000>CMP DWORD PTR DS:[ECX+AC],0
-----------------------------------------------------------------------------
DS:[021A1304]=00000000
ramat.@TSiglopro@GetTitolExtes$qv+0CD
Supongo que debido a los innumerables ensayos, habré activado alguna protección. He restaurado el registro de windows, incluso he restaurado el estado. Pero sigue cambiandome la dirección apuntada.
Seguiré mirando, a ver si doy con ello.
Saludos.
quiero entender que cada vez que reinicias y paras en el BP de la dirección 009B444D, en la ventana de información te dice que [ECX+AC] apunta a la
DS:[021A1304]=00000000
y que le pones el BPH en dicha dirección, pero no para al correr el programa de nuevo.
Me imagino que sabes poner los hardware breakpoint on write, pero por si acaso lo explico.
para poner en esa dirección el BPH on write, sobre esa linea de información
-------------------------------------------------
DS:[021A1304]=00000000
ramat.@TSiglopro@GetTitolExtes$qv+0CD
-------------------------------------------------
pinchas con el click derecho, y seleccionas "Follow address in Dump", ahora en la ventana del Dump (abajo a la izquierda), se ha posicionado sobre la dirección del Dump en memoria 021A1304, y en esa ventana del Dump seleccionas los 4 pares de bytes 00 00 00 00 existentes en dicha dirección, una vez seleccionados, clic derecho y Breakpoint > Hardware, on write > Dword,
comprueba de que realmente se ha puesto el BPH, mira en el Menu Debug -> Hardware breakpoint, para ver si está, vaya ser que tengas mas de 4 y tendrás que borrarlos y dejar solo este.
Cita de: LSL en 20 Septiembre 2010, 00:32 AM
quiero entender que cada vez que reinicias y paras en el BP de la dirección 009B444D, en la ventana de información te dice que [ECX+AC] apunta a la
DS:[021A1304]=00000000
Cada vez que reinicio y paro en la dirección 009B444D del desensamblador [ECX+AC] apunta a una dirección diferente.
Ejemplo:
(arranco, cargo el programa en olly y para en BP 009B444D)
[ECX+AC]: apunta a DS:[02ADFF34]=00000000 ramat.@TSiglopro@GetTitolExtes$qv+0CD
En la dirección apuntada de memoria[02ADFF34], marco los 4 primeros bytes(dword):"00000000", botón derecho del ratón y en el menú selecciono Breakpoint---Hardware, on write ---Dword
Verificación del posicionamiento del breakpoint Hardware, on write: Debug --- Hardware Breakpoints, allí aparece Base:"02ADFF34", Size:"4", Stop on:"Write". Es decir, la posición deseada, sus 4 bytes y en modo de paro solo cuando la memoria sea escrita.
Reinicio la carga en olly con Ctrl+F2, para en Entry Point, sigo con Run(F9) y para otra vez en en el BP 009B444D
[ECX+AC]: apunta a DS:03016DD0=00000000
ramat.@TSiglopro@GetTitolExtes$qv+0CD
Así sucesivamente, cambia la memoria apuntada cada vez que reinicio la carga del programa.
Por consiguiente, si cambia la dirección de memoria asignada, el BP Hardware no hace su función ya que apunta a una dirección no usada.
Deduzco que se me ha activado alguna protección especial al cargar una base de datos de la versión anterior. La copia pesa 1,5 mb, la podeis descargar de: http://www.megaupload.com/?d=AKL3RRT3
Para cargar una copia de seguridad de la base de datos "extensión.fbk ": Archivo --- Restaurar copiar de seguridad
La recuperación de la copia de seguridad crea una base de datos "extensión.fdb" en el directorio:
XP: C:\Documents and Settings\All Users\Datos de programa\Ag****\P*******\2009\Databases
VISTA:C:\Users\All Users\Ag****\P*******\2009\Databases
Tomad vuestras precauciones con el programa, copias de registro, punto de restauración, control de archivos nuevos o modificados, ... Pienso que debe crear o modificar algún archivo con el cual debe comparar algo. Una vez cargada la nueva base de datos es funcional pero en modo gratuito. Hay que reiniciar el programa para ver como cambia a modo Free. El tiempo de prueba se ha agotado y se ha activado la versión free. Desapareciendo entre ellas muchas funciones como por ejemplo:
Archivo --- Crear copiar de seguridad
Archivo --- Restaurar copiar de seguridad
Desaparecen varios accessos de la interface del programa como: "Economia", "Handled", ...
No he encontrado la vuelta atrás todavía, pero llegará.
Saludos.
pues restaurada la base de datos de referencia, los BPH me siguen saliendo bien en las mismas direcciones en las que apunta siempre, si detecta en la base de datos restaurada que el periodo de evalua ha caducado y sale con la versión free, aunque solo lleve unos dias con el programa instalado.
buscado porqué deshabilita ciertas opciones, traceando he llegado hasta la siguiente función, donde se encuentra la madre del cordero, aunque este sea un programa para cerdilandia. ;D
009BB8F4 >/$ 55 PUSH EBP
009BB8F5 |. 8BEC MOV EBP,ESP
009BB8F7 |. 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009BB8FA |. 8378 08 01 CMP DWORD PTR [EAX+8],1
009BB8FE |. 75 04 JNZ SHORT 009BB904
009BB900 |. B0 01 MOV AL,1
009BB902 |. 5D POP EBP
009BB903 |. C3 RETN
009BB904 |> 8B55 08 MOV EDX,DWORD PTR [EBP+8]
009BB907 |. 837A 08 FF CMP DWORD PTR [EDX+8],-1
009BB90B |. 75 1E JNZ SHORT 009BB92B
009BB90D |. FF75 08 PUSH DWORD PTR [EBP+8] ; /Arg1
009BB910 |. E8 BB010000 CALL @TComptaDB@Read$qv ; \@TComptaDB@Read$qv
009BB915 |. 59 POP ECX
009BB916 |. 3D FA000000 CMP EAX,0FA
009BB91B |. 7C 0E JL SHORT 009BB92B
009BB91D |. 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009BB920 |. C741 08 01000>MOV DWORD PTR [ECX+8],1
009BB927 |. B0 01 MOV AL,1
009BB929 |. 5D POP EBP
009BB92A |. C3 RETN
009BB92B |> FF75 08 PUSH DWORD PTR [EBP+8] ; /Arg1
009BB92E |. E8 A9000000 CALL @TComptaDB@ReadMarcaFi$qv ; \@TComptaDB@ReadMarcaFi$qv
009BB933 |. 59 POP ECX
009BB934 84C0 TEST AL,AL
009BB936 |. 74 0E JE SHORT 009BB946
009BB938 |. 8B55 08 MOV EDX,DWORD PTR [EBP+8]
009BB93B |. C742 08 01000>MOV DWORD PTR [EDX+8],1
009BB942 |. B0 01 MOV AL,1
009BB944 |. 5D POP EBP
009BB945 |. C3 RETN
009BB946 |> 33C0 XOR EAX,EAX
009BB948 |. 5D POP EBP
009BB949 \. C3 RETN
si AL sale con 1 oculta ciertas opciones. (es un lujo para la vista tenerlo todo habilitado).
y si lo acompañas de lo comentado anteriormente
009B4267 |. 33D2 XOR EDX,EDX
009B4269 C780 AC000000 04000000 MOV DWORD PTR [EAX+AC],4
009B4273 90 NOP
009B4274 90 NOP
009B4275 90 NOP
009B4276 90 NOP
009B4277 90 NOP
009B4278 90 NOP
009B4279 EB 51 JMP SHORT 009B42CC
verás el resultado.
Elegante, elegante! :o :o
Con solo modificar 5 lineas, has conseguido en esta versión lo que necesite tropecientos JMP en la versión anterior para ver algo de luz. Y como no, con los JMPs llegaron las excepciones (Ctrl+F9) ;D, muy chapucero pero por las pruebas que realicé parecía funcional. La oscuridad la controle como explique anteriormente controlando la escritura de la clave MSNetOLE5. No dejando que el programa encendiera su bit.
Con tu enfoque y la nueva versión me he enloquecido debido al Hardware BP saltarin que me ha salido. Para darme una satisfacción he instalado un XP en la maquina virtual, instalando la nueva versión del programa. Con XP y nueva instalación el saltarin se ha tranquilizado. Supongo que alguna otra protección habré activado para que me suceda esto en Vista. :-\
Realizada las modificaciones que me has enseñado, el programa funciona a la perfección y sin excepciones (Ctrl+F9) ;-)
Si no es mucha molestia me gustaría me explicases como llegaste a descubrir el apartado:
Cita de: LSL en 21 Septiembre 2010, 03:42 AM
buscado porqué deshabilita ciertas opciones, traceando he llegado hasta la siguiente función, donde se encuentra la madre del cordero, aunque este sea un programa para cerdilandia. ;D
009BB8F4 >/$ 55 PUSH EBP
009BB8F5 |. 8BEC MOV EBP,ESP
009BB8F7 |. 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009BB8FA |. 8378 08 01 CMP DWORD PTR [EAX+8],1
009BB8FE |. 75 04 JNZ SHORT 009BB904
009BB900 |. B0 01 MOV AL,1
009BB902 |. 5D POP EBP
...
si AL sale con 1 oculta ciertas opciones. (es un lujo para la vista tenerlo todo habilitado).
------------------------------------------------------------------
Comparando, he visto que existen algunas partes importantes ocultas:
*Fichero --- Opciones Configuración:
+- Configuración
Validación de datos (mostrado)
Ordenador de Mano (oculto)
Seguimiento Actividad (mostrado)
Filtros (oculto)
*Informes --- Centro de Informes: Debajo del botón abrir faltan varios botones "Diseño, Nuevo y Nuevo Planning"
-------------------------------------------------------------------
¿Para mostrar las opciones ocultas seria elegante nopear los siguientes saltos?
00A66E51 |. 74 66 JE SHORT ramat.00A66EB9
00A66E53 |. 6A 00 PUSH 0
00A66E55 |. 6A 00 PUSH 0
00A66E57 |. 6A 16 PUSH 16
00A66E59 |. 66:C785 44FFF>MOV WORD PTR SS:[EBP-BC],8C
00A66E62 |. 68 9321E800 PUSH ramat.00E82193 ; ASCII "Ordinador Ma"
...
00A66F97 |. /74 66 JE SHORT ramat.00A66FFF
...
00A67077 |. /0F84 CC000000 JE ramat.00A67149
...
00A676B2 |. /74 66 JE SHORT ramat.00A6771A
...
00A67726 |. /74 66 JE SHORT ramat.00A6778E
...
Por cierto, tomad precauciones con el saltarin (sigo en su búsquedal).
LSL: gracias por tu tiempo y enseñanza.
Cita de: nemus en 21 Septiembre 2010, 13:13 PM
------------------------------------------------------------------
Comparando, he visto que existen algunas partes importantes ocultas:
*Fichero --- Opciones Configuración:
+- Configuración
Validación de datos (mostrado)
Ordenador de Mano (oculto)
Seguimiento Actividad (mostrado)
Filtros (oculto)
*Informes --- Centro de Informes: Debajo del botón abrir faltan varios botones "Diseño, Nuevo y Nuevo Planning"
-------------------------------------------------------------------
¿Para mostrar las opciones ocultas seria elegante nopear los siguientes saltos?
00A66E51 |. 74 66 JE SHORT ramat.00A66EB9
00A66E53 |. 6A 00 PUSH 0
00A66E55 |. 6A 00 PUSH 0
00A66E57 |. 6A 16 PUSH 16
00A66E59 |. 66:C785 44FFF>MOV WORD PTR SS:[EBP-BC],8C
00A66E62 |. 68 9321E800 PUSH ramat.00E82193 ; ASCII "Ordinador Ma"
...
00A66F97 |. /74 66 JE SHORT ramat.00A66FFF
...
00A67077 |. /0F84 CC000000 JE ramat.00A67149
...
00A676B2 |. /74 66 JE SHORT ramat.00A6771A
...
00A67726 |. /74 66 JE SHORT ramat.00A6778E
...
Por cierto, tomad precauciones con el saltarin (sigo en su búsquedal).
LSL: gracias por tu tiempo y enseñanza.
Las gracias no se merecen, estamos para ayudarnos siempre que podamos.
lo de nopear los saltos, siempre que sea el resultado definitivo tambien quedan "elegantes", pero si para que se produzca ese salto, previamente hay una comparación que es producto del resultado que devuelve una función llamada por un call, quizas es mas conveniente entrar en ese call y modificar el codigo de la función para que siempre nos devuelva el valor deseado por ejemplo en AL, EAX, una constante, etc, que normamente es la que se compara a la vuelta para que se produzca el salto condicional. Con esto quizas solo con cambiar un byte ó unos cuantos, en vez de nopear un moton de saltos por todo el programa, por que hay programas que llaman a una misma función cientos de veces. (es cuestión de buscar siempre que con un solo disparo caigan mas de un pajaro).
Pequeño retroceso :-\, con la restauración de la base de datos, o con los NOPs añadidos citados en los anteriores mensajes, o por algún contador de apertura del programa, lo cierto es que han desaparecido algunas partes del menú:
Los NOPs añadidos son (personalmente, creo que no son culpables de activar la nueva protección):Cita de: nemus en 21 Septiembre 2010, 13:13 PM
¿Para mostrar las opciones ocultas seria elegante nopear los siguientes saltos?
00A66E51 |. 74 66 JE SHORT ramat.00A66EB9
...
00A66F97 |. /74 66 JE SHORT ramat.00A66FFF
...
00A67077 |. /0F84 CC000000 JE ramat.00A67149
...
00A676B2 |. /74 66 JE SHORT ramat.00A6771A
...
00A67726 |. /74 66 JE SHORT ramat.00A6778E
...
Han desaparecido del menú "Ficheros":
---------------------------
Reconstruir Base de Datos (Visible)
Crear Copia Seguridad (Invisible)
Recuperar Copias Seguridad (Invisible)
----------------------------
También han desaparecido en "Informes --- Centro de Informes":
Debajo del botón "Abrir" faltan los botones "Diseño, Nuevo y Nuevo Planning"
¿Alguna sugerencia? no consigo que aparezca ni el menú, ni los botones.
Siguiendo con el tema de la desaparición de apartados en el menú principal del programa he observado que se produce al superar la fecha límite del periodo de pruebas (60 días).
Con la solución a la limitación de 60 días presentada por LSL, la cual proporciona una usabilidad del 90% de las funciones de la versión FULL, nos encontramos que algunas de las partes como la visibilidad total del menú no se superan.
He intentado superar la limitación de la ocultación del menú:
Rastreando el API SetMenu, que me parece es la encargada de mostrar el menú en el programa. Presuponía que pudiera haber varios menús dependiendo del estado del programa. No ha habido resultados satisfactorios.
Una ayudita, otro enfoque, please.
Thanks.
1.
009B40E1 |> 84C0 TEST AL,AL
009B40E3 |. 0F95C0 SETNE AL
009B40E6 |. 83E0 01 AND EAX,1
.modificado
009B40E1 |> \84C0 TEST AL,AL
009B40E3 |. 0F94C0 SETE AL
009B40E6 |. 83E0 01 AND EAX,1
2.
00B08CCA |. 84C0 TEST AL,AL
00B08CCC |. 74 27 JE SHORT 00B08CF5
00B08CCE |. 8B4D FC MOV ECX,DWORD PTR [EBP-4]
.modificado
00B08CCA |. 84C0 TEST AL,AL
00B08CCC |. EB 27 JMP SHORT 00B08CF5
00B08CCE |. 8B4D FC MOV ECX,DWORD PTR [EBP-4]
3.
009B4269 8990 AC000000 MOV DWORD PTR [EAX+AC],EDX
009B426F 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B4272 F681 AC000000 04 TEST BYTE PTR [ECX+AC],4
009B4279 74 51 JE SHORT 009B42CC
.modificado
009B4269 C780 AC000000 04000000 MOV DWORD PTR [EAX+AC],4
009B4273 90 NOP
009B4274 90 NOP
009B4275 90 NOP
009B4276 90 NOP
009B4277 90 NOP
009B4278 90 NOP
009B4279 90 51 JMP SHORT 009B42CC
4.
00415DB6 |. DFE0 FSTSW AX
00415DB8 |. 9E SAHF
00415DB9 0F97C0 SETA AL
00415DBC |. 83E0 01 AND EAX,1
.modificado
00415DB6 |. DFE0 FSTSW AX
00415DB8 |. 9E SAHF
00415DB9 33C0 XOR EAX,EAX
00415DBB 90 NOP
00415DBC |. 83E0 01 AND EAX,1
5.
009B3F79 |. 80B8 C8000000 00 CMP BYTE PTR [EAX+C8],0
009B3F80 75 04 JNZ SHORT 009B3F86
009B3F82 |. 33C0 XOR EAX,EAX
.modificado
009B3F79 |. 80B8 C8000000 00 CMP BYTE PTR [EAX+C8],0
009B3F80 EB 04 JMP SHORT 009B3F86
009B3F82 |. 33C0 XOR EAX,EAX
6.
009BB8FA 8378 08 01 CMP DWORD PTR [EAX+8],1
009BB8FE 75 04 JNZ SHORT 009BB904
009BB900 B0 01 MOV AL,1
.modificado
009BB8FA 8378 08 01 CMP DWORD PTR [EAX+8],1
009BB8FE 90 NOP
009BB8FF 90 NOP
009BB900 B0 00 MOV AL,0
7.
00A6CF15 84C0 TEST AL,AL
00A6CF17 |. 74 40 JE SHORT 00A6CF59
00A6CF19 |. 8B4D FC MOV ECX,DWORD PTR [EBP-4]
00A6CF1C |. 8B81 4C030000 MOV EAX,DWORD PTR [ECX+34C]
.modificado
00A6CF15 84C0 TEST AL,AL
00A6CF17 |. EB 40 JMP SHORT 00A6CF59
00A6CF19 |. 8B4D FC MOV ECX,DWORD PTR [EBP-4]
00A6CF1C |. 8B81 4C030000 MOV EAX,DWORD PTR [ECX+34C]
8.
009B47DB 0F95C0 SETNE AL
009B47DE 83E0 01 AND EAX,1
.modificado
009B47DB 33C0 XOR EAX,EAX
009B47DD 40 INC EAX
009B47DE 90 NOP
009B47DF 90 NOP
009B47E0 90 NOP
9.
00A795E2 |. 84C0 TEST AL,AL
00A795E4 |. 74 0A JE SHORT 00A795F0
00A795E6 |. B2 01 MOV DL,1
.modificado
00A795E2 |. 84C0 TEST AL,AL
00A795E4 EB 0A JMP SHORT 00A795F0
00A795E6 |. B2 01 MOV DL,1
@LSL: Si sigues asi, vas a crear tu propia version del ejecutable!
:xD :xD :xD
de full, está pasando ha pasado a ¡¡¡requetefull!!!
;D
@LSL: Muy a mi pesar, observando las molestias que te estas tomando con este post para ayudarme y enseñarme, siento comunicarte que en las últimas modificaciones presentadas se han solucionado algunos apartados, pero han empeorado otros:
Apartados solucionados:
Aparecen de nuevo los botones "Diseño, Nuevo, y Nuevo Planning" en: Informes --- Centro de Informes.
Aparecen las opciones ocultas del menú: Opciones --- Configuración: Ordenador de Mano, ...
Apartados empeorados:
En el menú principal ha desaparecido el apartado:
"... Animales Granja Informes ..."
y con ello las funciones de su submenú, entre estas funciones destacaría "Entrada Eventos". La cual tiene un acceso directo en la barra de iconos, icono también desaparecido a raíz de las últimas modificaciones. El icono del acceso se encuentra situado entre:
" ... Engorde Entrada Eventos Informes ... "
Apartados que siguen sin solucionarse:
Pasado el período de prueba (60 días) desaparecen del menú:
Fichero ---
Reconstruir Base de Datos
Crear Copia Seguridad
Recuperar Copias Seguridad
Pasado la fecha máxima de uso (15/2/2011) no arranca el programa.
Saludos,
:) Betatester :)
Debido a la cuantía de limitaciones y marcas de protección del programa. Creo importante recapitular para priorizar la solución de las limitaciones:
Recapitulando:
El programa tiene 3 estadios de vida:
A. Modo Evaluación (FULL 90%):
1. Entra en este estadio, el primer día que se instala cualquier versión del programa activandose el
Modo Evaluación y permanece en el hasta entrar en Modo Gratuito.
B. Modo Gratuito (FULL 15%),
1. Abandona el Modo Evaluación y entra al Modo Gratuito a partir de la restauración de una copia
de seguridad de una anterior versión y permanece en el hasta entrar en Modo Cierre.
2. Abandona el Modo Evaluación y entra al estadio Gratuito a partir de los 60 días de la instalación del
programa y permanece en el hasta entrar en Modo Cierre.
C. Modo Cierre (FULL 0%),
1. Abandona el estadio Gratuito y entra al estadio Cierre a partir de superar la fecha máxima de uso,
el día 16/2/2011.
Intentando aplicar Lógica Inversa:
1. Evitar entrar en Modo Gratuito. El programa entra al Modo Gratuito cuando ocurren uno de los dos
sucesos siguientes:
1.1. Cuando se carga una base de datos creada mediante la copia de seguridad de una anterior versión
del programa.
1.2. Cuando pasan 60 días de la instalación del programa.
Enfoques a las limitaciones del Modo Gratuito:
1.1. Restaurada y cargada una base de datos de la versión anterior. Se barajan varios enfoques para
su solución:
1.1.1. Obligando a cargar al programa su versión mas completa. La que se identifica como Studio. Con
este enfoque el programa habrá cambiado al Modo Gratuito y la limitación de este modo
consiste en ocultar gran parte de funciones. Algunas de las funciones de esta versión permanecen
ocultas en este modo. Sera necesario activarlas aparte. (ver solución. 1.1.1.)
1.1.2. Detectar la comparación de fechas mientras se realiza la restauración de la base de datos y evitar
el salto de estadio a Modo Gratuito. En este caso el programa permanecería en Modo
Evaluación con la mayoría de sus funciones visibles. (Quizá la mejor opción, pero mas difícil
de conseguir).
2. Evitar entrar en Modo Cierre. Es decir, evitar que se cierre el programa. Esto ocurre:
2.1. Cuando el programa se carga con fecha igual o superior a 16/2/2011
Enfoques a las limitaciones del Modo Cierre:
2.1.1. Detectar la comparación de fechas y y evitar el salto de estadio a Modo Cierre.
2.1.2. Cargar en Modo Gratuito (fecha anterior al 16/2/2011), y a partir de la comparación de fechas
anotar los saltos correctos que realiza en su función inmediata, para luego adelantar la fecha a
16/2/2011 y modificar los saltos que no se avengan con los anotados anteriormente. (ver solución.
2.1.2)
3. Activar algunas opciones ocultas y solo visibles para la versión Profesional para ser 100% FULL. Decir que
cuando se carga la versión Profesional el programa carga menor numero de funciones que con la versión
Studio. Pero la versión profesional trae algunas funciones aparte que se pueden activar para la versión
Studio. (ver solución. 3.1.1.)
Intentando aplicar Ingeniería Inversa (Soluciones):
1.1.1. @LSL:
Obligar a cargar al programa la versión mas completa
009B4267 |. 33D2 XOR EDX,EDX
009B4269 |. 8990 AC000000 MOV DWORD PTR [EAX+AC],EDX
009B426F |> 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B4272 |. F681 AC000000 04 TEST BYTE PTR [ECX+AC],4
009B4279 74 51 JE SHORT 009B42CC
modificar
009B4267 |. 33D2 XOR EDX,EDX
009B4269 C780 AC000000 04000000 MOV DWORD PTR [EAX+AC],4
009B4273 90 NOP
009B4274 90 NOP
009B4275 90 NOP
009B4276 90 NOP
009B4277 90 NOP
009B4278 90 NOP
009B4279 EB 51 JMP SHORT 009B42CC
@LSL:
Muestra parte de los iconos ocultados por el Modo Gratuito
009BB900 |. B0 01 MOV AL,1 modificar 009BB900 |. B0 00 MOV AL,0
009BB927 |. B0 01 MOV AL,1 modificar 009BB927 |. B0 00 MOV AL,0
009BB942 |. B0 01 MOV AL,1 modificar 009BB942 |. B0 00 MOV AL,0
Otra Opción:
009BB8FE |. 75 04 JNZ SHORT 009BB904
009BB900 |. B0 01 MOV AL,1
modificar
009BB8FE |. 90 NOP
009BB900 |. B0 00 MOV AL,0
@LSL:
Muestra Botones de Informes---Centro Informes: (Abrir, Diseño, Nuevo, Nuevo Planing)
009B40E3 |. 0F95C0 SETNE AL modificar 009B40E3 |. 0F94C0 SETE AL
00405AA5 |. 74 30 JE SHORT 00405AD7 modificar 00405AA5 |. EB 30 JMP SHORT 00405AD7
@nemus:
Muestra las opcions de: Opciones – Configuración
00A66E51 |. 74 66 JE SHORT 00A66EB9 modificar 00A66E51 |. 75 66 JNZ SHORT 00A66EB9
00A66F97 |. 74 66 JE SHORT 00A66FFF modificar 00A66F97 |. 75 66 JNZ SHORT 00A66FFF
00A67077 |. 0F84 CC000000 JE 00A67149 modificar 00A67077 |. 0F85 CC000000 JNZ 00A67149
00A676B2 |. 74 66 JE SHORT 00A6771A modificar 00A676B2 |. 75 66 JNZ SHORT 00A6771A
00A67726 |. 74 66 JE SHORT 00A6778E modificar 00A67726 |. 75 66 JNZ SHORT 00A6778E
@nemus:
Muestra las pestañas de: Informes --- Centro de Informes
0064C6C3 |. 74 66 JE SHORT 0064C70F modificar 0064C6C3 |. EB 4A JMP SHORT 0064C70F
2.1.2. @nemus
Evita entrar en Modo Cierre
009B3949 |. 0F84 2601000 JE 009B3A75
modificar
009B3949 |. E9 27010000 JMP 009B3A75
009B394E |. 90 NOP
009B3D34 |. 0F85 C2000000 JNZ 009B3DFC
modificar
009B3D34 |. E9 C3000000 JMP 009B3DFC
009B3D39 |. 90 NOP
00406BC9 |. 90 0F8D 8B010000 JGE 00406D5A
modificar
00406BC9 |. E9 8C010000 JMP 00406D5A
00406BCE |. 90 NOP
3.1.1. @nemus:
Muestra otros informes de la versión profesional
0040EB97 JNZ 0040ECE0
modificar
0040EB97 |. /E9 44010000 JMP 0040ECE0 ramat.0040ECE0
0040EB9C |? |90 NOP
Recapitulando ...
Tiene mas cirujia que la graciela alfano :))))
Cita de: LSL en 30 Septiembre 2010, 00:25 AM
1.
009B40E1 |> 84C0 TEST AL,AL
009B40E3 |. 0F95C0 SETNE AL
009B40E6 |. 83E0 01 AND EAX,1
.modificado
009B40E1 |> \84C0 TEST AL,AL
009B40E3 |. 0F94C0 SETE AL
009B40E6 |. 83E0 01 AND EAX,1
2.
00B08CCA |. 84C0 TEST AL,AL
00B08CCC |. 74 27 JE SHORT 00B08CF5
00B08CCE |. 8B4D FC MOV ECX,DWORD PTR [EBP-4]
.modificado
00B08CCA |. 84C0 TEST AL,AL
00B08CCC |. EB 27 JMP SHORT 00B08CF5
00B08CCE |. 8B4D FC MOV ECX,DWORD PTR [EBP-4]
3.
009B4269 8990 AC000000 MOV DWORD PTR [EAX+AC],EDX
009B426F 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B4272 F681 AC000000 04 TEST BYTE PTR [ECX+AC],4
009B4279 74 51 JE SHORT 009B42CC
.modificado
009B4269 C780 AC000000 04000000 MOV DWORD PTR [EAX+AC],4
009B4273 90 NOP
009B4274 90 NOP
009B4275 90 NOP
009B4276 90 NOP
009B4277 90 NOP
009B4278 90 NOP
009B4279 90 51 JMP SHORT 009B42CC
4.
00415DB6 |. DFE0 FSTSW AX
00415DB8 |. 9E SAHF
00415DB9 0F97C0 SETA AL
00415DBC |. 83E0 01 AND EAX,1
.modificado
00415DB6 |. DFE0 FSTSW AX
00415DB8 |. 9E SAHF
00415DB9 33C0 XOR EAX,EAX
00415DBB 90 NOP
00415DBC |. 83E0 01 AND EAX,1
5.
009B3F79 |. 80B8 C8000000 00 CMP BYTE PTR [EAX+C8],0
009B3F80 75 04 JNZ SHORT 009B3F86
009B3F82 |. 33C0 XOR EAX,EAX
.modificado
009B3F79 |. 80B8 C8000000 00 CMP BYTE PTR [EAX+C8],0
009B3F80 EB 04 JMP SHORT 009B3F86
009B3F82 |. 33C0 XOR EAX,EAX
6.
009BB8FA 8378 08 01 CMP DWORD PTR [EAX+8],1
009BB8FE 75 04 JNZ SHORT 009BB904
009BB900 B0 01 MOV AL,1
.modificado
009BB8FA 8378 08 01 CMP DWORD PTR [EAX+8],1
009BB8FE 90 NOP
009BB8FF 90 NOP
009BB900 B0 00 MOV AL,0
7.
00A6CF15 84C0 TEST AL,AL
00A6CF17 |. 74 40 JE SHORT 00A6CF59
00A6CF19 |. 8B4D FC MOV ECX,DWORD PTR [EBP-4]
00A6CF1C |. 8B81 4C030000 MOV EAX,DWORD PTR [ECX+34C]
.modificado
00A6CF15 84C0 TEST AL,AL
00A6CF17 |. EB 40 JMP SHORT 00A6CF59
00A6CF19 |. 8B4D FC MOV ECX,DWORD PTR [EBP-4]
00A6CF1C |. 8B81 4C030000 MOV EAX,DWORD PTR [ECX+34C]
8.
009B47DB 0F95C0 SETNE AL
009B47DE 83E0 01 AND EAX,1
.modificado
009B47DB 33C0 XOR EAX,EAX
009B47DD 40 INC EAX
009B47DE 90 NOP
009B47DF 90 NOP
009B47E0 90 NOP
9.
00A795E2 |. 84C0 TEST AL,AL
00A795E4 |. 74 0A JE SHORT 00A795F0
00A795E6 |. B2 01 MOV DL,1
.modificado
00A795E2 |. 84C0 TEST AL,AL
00A795E4 EB 0A JMP SHORT 00A795F0
00A795E6 |. B2 01 MOV DL,1
Cita de: tena en 3 Octubre 2010, 04:12 AM
Tiene mas cirujia que la graciela alfano :))))
:laugh: :laugh: :laugh:
es que se trata de tener lo bueno de 5 versiones de titis en una sola, y eso requiere de mucha cirujia, >:D
@betatester ;D
a las que ya tienes claro añade estas
00405A95 |. E8 92F75A00 CALL @TSiglopro@GetLicense$qv
00405A9A |. 50 PUSH EAX ; |Arg1
00405A9B |. E8 E8E55A00 CALL @TSiglopro@IsModule$q7TModule ; \@TSiglopro@IsModule$q7TModule
00405AA0 |. 83C4 08 ADD ESP,8
00405AA3 |. 84C0 TEST AL,AL
00405AA5 |. 74 30 JE SHORT 00405AD7
.modificado
00405A95 |. E8 92F75A00 CALL @TSiglopro@GetLicense$qv
00405A9A |. 50 PUSH EAX ; |Arg1
00405A9B |. E8 E8E55A00 CALL @TSiglopro@IsModule$q7TModule ; \@TSiglopro@IsModule$q7TModule
00405AA0 |. 83C4 08 ADD ESP,8
00405AA3 |. 84C0 TEST AL,AL
00405AA5 |. EB 30 JMP SHORT 00405AD7
solucionado el menu Granja y el acceso directo en la barra de iconos de Entrada Eventos.
00406BBB 8945 B4 MOV DWORD PTR [EBP-4C],EAX ; eax=dias que restan hasta el 15/02/2011
00406BBE C745 98 1E000000 MOV DWORD PTR [EBP-68],1E ; compara dias que restan hasta 15/02/2011 con 30
00406BC5 837D B4 1E CMP DWORD PTR [EBP-4C],1E
00406BC9 0F8D 8B010000 JGE 00406D5A ; salta si los dias que faltan es igual o superior a 30
00406BCF |. E8 58E65A00 CALL @TSiglopro@GetLicense$qv
00406BD4 |. 83B8 AC000000 00 CMP DWORD PTR [EAX+AC],0
00406BDB |. 0F85 BF000000 JNZ 00406CA0
00406BE1 |. 66:C745 C8 0800 MOV WORD PTR [EBP-38],8
00406BE7 |. 8D45 F0 LEA EAX,DWORD PTR [EBP-10]
00406BEA |. E8 C9E0FFFF CALL 00404CB8
00406BEF |. 50 PUSH EAX
00406BF0 |. FF45 D4 INC DWORD PTR [EBP-2C]
00406BF3 |. 68 0F97DE00 PUSH 00DE970F ; ASCII "The Free version license must be renewed each year. You have %d days left. Please go to www.***********.com and download the new revision"
.modificado
00406BB6 |. E8 ADFFFFFF CALL 00406B68
00406BBB 8945 B4 MOV DWORD PTR [EBP-4C],EAX ; eax=dias que restan hasta el 15/02/2011
00406BBE C745 98 1E000>MOV DWORD PTR [EBP-68],1E
00406BC5 > 837D B4 1E CMP DWORD PTR [EBP-4C],1E ; compara dias que restan hasta 15/02/2011 con 30
00406BC9 > E9 8C010000 JMP 00406D5A ; saltar siempre sin importar si los dias que faltan ó pasan es igual o superior a 30
00406BCE 90 NOP
00406BCF |. E8 58E65A00 CALL @TSiglopro@GetLicense$qv
00406BD4 |. 83B8 AC000000>CMP DWORD PTR [EAX+AC],0
00406BDB |. 0F85 BF000000 JNZ 00406CA0
00406BE1 |. 66:C745 C8 08>MOV WORD PTR [EBP-38],8
00406BE7 |. 8D45 F0 LEA EAX,DWORD PTR [EBP-10]
00406BEA |. E8 C9E0FFFF CALL 00404CB8
00406BEF |. 50 PUSH EAX
00406BF0 |. FF45 D4 INC DWORD PTR [EBP-2C]
00406BF3 |. 68 0F97DE00 PUSH 00DE970F ; ASCII "The Free version license must be renewed each year. You have %d days left. Please go to www.***********.com and download the new revision"
Con esto evitamos caducidad al 15/02/2011 y creo que tambien evita la desaparición de algunos menú, que se perdian despues del periodo de prueba.
009B3D32 |. 84C0 TEST AL,AL
009B3D34 0F85 C2000000 JNZ 009B3DFC ; saltar
009B3D3A |. 8D4D A0 LEA ECX,DWORD PTR [EBP-60]
.modificado
009B3D32 |. 84C0 TEST AL,AL
009B3D34 E9 C3000000 JMP 009B3DFC ; saltar
009B3D39 90 NOP
009B3D3A |. 8D4D A0 LEA ECX,DWORD PTR [EBP-60]
Con esto evitamos que al comportarse como versión registrada se crea que tiene licencia despues del periodo de prueba, para que no la compruebe.
creo que ya solo falta una más para que no se pierda la opcion backup y restore del menu...
:silbar:
El que faltaba para el duro.
009B3FA9 . E8 76AAA5FF CALL 0040EA24
009B3FAE . 8845 FF MOV BYTE PTR [EBP-1],AL
009B3FB1 807D FF 00 CMP BYTE PTR [EBP-1],0
009B3FB5 . 74 1C JE SHORT 009B3FD3
009B3FB7 . 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B3FBA . 80B9 90000000 00 CMP BYTE PTR [ECX+90],0
009B3FC1 . 75 10 JNZ SHORT 009B3FD3
009B3FC3 . 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009B3FC6 . FF70 7C PUSH DWORD PTR [EAX+7C] ; /Arg1
009B3FC9 . E8 26790000 CALL @TComptaDB@IsFi$qv ; \@TComptaDB@IsFi$qv
009B3FCE . 59 POP ECX
009B3FCF . 84C0 TEST AL,AL
009B3FD1 . 74 04 JE SHORT 009B3FD7
009B3FD3 > 33C0 XOR EAX,EAX
009B3FD5 EB 05 JMP SHORT 009B3FDC
009B3FD7 > B8 01000000 MOV EAX,1
009B3FDC > 8BE5 MOV ESP,EBP
009B3FDE . 5D POP EBP
009B3FDF . C3 RETN
.modificado
009B3FA9 . E8 76AAA5FF CALL 0040EA24
009B3FAE . 8845 FF MOV BYTE PTR [EBP-1],AL
009B3FB1 807D FF 00 CMP BYTE PTR [EBP-1],0
009B3FB5 . 74 1C JE SHORT 009B3FD3
009B3FB7 . 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B3FBA . 80B9 90000000 00 CMP BYTE PTR [ECX+90],0
009B3FC1 . 75 10 JNZ SHORT 009B3FD3
009B3FC3 . 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009B3FC6 . FF70 7C PUSH DWORD PTR [EAX+7C] ; /Arg1
009B3FC9 . E8 26790000 CALL @TComptaDB@IsFi$qv ; \@TComptaDB@IsFi$qv
009B3FCE . 59 POP ECX
009B3FCF . 84C0 TEST AL,AL
009B3FD1 . 74 04 JE SHORT 009B3FD7
009B3FD3 > 33C0 XOR EAX,EAX
009B3FD5 90 90 NOP NOP
009B3FD7 > B8 01000000 MOV EAX,1
009B3FDC > 8BE5 MOV ESP,EBP
009B3FDE . 5D POP EBP
009B3FDF . C3 RETN
creo que deberia ser uno de los primeros a cicatrizar, y quizás necesite la titi menos arreglos, que a los maestros les gusta las cosas bien hechas ... ;D
Este apartado:
Cita de: LSL en 30 Septiembre 2010, 00:25 AM
1.
009B40E1 |> 84C0 TEST AL,AL
009B40E3 |. 0F95C0 SETNE AL
009B40E6 |. 83E0 01 AND EAX,1
.modificado
009B40E1 |> \84C0 TEST AL,AL
009B40E3 |. 0F94C0 SETE AL
009B40E6 |. 83E0 01 AND EAX,1
junto con este otro:
Cita de: LSL en 3 Octubre 2010, 13:41 PM
00405A95 |. E8 92F75A00 CALL @TSiglopro@GetLicense$qv
00405A9A |. 50 PUSH EAX ; |Arg1
00405A9B |. E8 E8E55A00 CALL @TSiglopro@IsModule$q7TModule ; \@TSiglopro@IsModule$q7TModule
00405AA0 |. 83C4 08 ADD ESP,8
00405AA3 |. 84C0 TEST AL,AL
00405AA5 |. 74 30 JE SHORT 00405AD7
.modificado
00405A95 |. E8 92F75A00 CALL @TSiglopro@GetLicense$qv
00405A9A |. 50 PUSH EAX ; |Arg1
00405A9B |. E8 E8E55A00 CALL @TSiglopro@IsModule$q7TModule ; \@TSiglopro@IsModule$q7TModule
00405AA0 |. 83C4 08 ADD ESP,8
00405AA3 |. 84C0 TEST AL,AL
00405AA5 |. EB 30 JMP SHORT 00405AD7
Se encargan de mostrar nuevamente los botones de la ventana: Informes --- Centro Informes (Diseño, Nuevo, Nuevo Planning). Añadido a la recapitulación.
En cambio, esta parte "Not found":
Cita de: LSL en 3 Octubre 2010, 13:41 PM
00406BBB 8945 B4 MOV DWORD PTR [EBP-4C],EAX ; eax=dias que restan hasta el 15/02/2011
00406BBE C745 98 1E000000 MOV DWORD PTR [EBP-68],1E ; compara dias que restan hasta 15/02/2011 con 30
00406BC5 837D B4 1E CMP DWORD PTR [EBP-4C],1E
00406BC9 0F8D 8B010000 JGE 00406D5A ; salta si los dias que faltan es igual o superior a 30
00406BCF |. E8 58E65A00 CALL @TSiglopro@GetLicense$qv
00406BD4 |. 83B8 AC000000 00 CMP DWORD PTR [EAX+AC],0
00406BDB |. 0F85 BF000000 JNZ 00406CA0
00406BE1 |. 66:C745 C8 0800 MOV WORD PTR [EBP-38],8
00406BE7 |. 8D45 F0 LEA EAX,DWORD PTR [EBP-10]
00406BEA |. E8 C9E0FFFF CALL 00404CB8
00406BEF |. 50 PUSH EAX
00406BF0 |. FF45 D4 INC DWORD PTR [EBP-2C]
00406BF3 |. 68 0F97DE00 PUSH 00DE970F ; ASCII "The Free version license must be renewed each year. You have %d days left. Please go to www.***********.com and download the new revision"
.modificado
00406BB6 |. E8 ADFFFFFF CALL 00406B68
00406BBB 8945 B4 MOV DWORD PTR [EBP-4C],EAX ; eax=dias que restan hasta el 15/02/2011
00406BBE C745 98 1E000>MOV DWORD PTR [EBP-68],1E
00406BC5 > 837D B4 1E CMP DWORD PTR [EBP-4C],1E ; compara dias que restan hasta 15/02/2011 con 30
00406BC9 > E9 8C010000 JMP 00406D5A ; saltar siempre sin importar si los dias que faltan ó pasan es igual o superior a 30
00406BCE 90 NOP
00406BCF |. E8 58E65A00 CALL @TSiglopro@GetLicense$qv
00406BD4 |. 83B8 AC000000>CMP DWORD PTR [EAX+AC],0
00406BDB |. 0F85 BF000000 JNZ 00406CA0
00406BE1 |. 66:C745 C8 08>MOV WORD PTR [EBP-38],8
00406BE7 |. 8D45 F0 LEA EAX,DWORD PTR [EBP-10]
00406BEA |. E8 C9E0FFFF CALL 00404CB8
00406BEF |. 50 PUSH EAX
00406BF0 |. FF45 D4 INC DWORD PTR [EBP-2C]
00406BF3 |. 68 0F97DE00 PUSH 00DE970F ; ASCII "The Free version license must be renewed each year. You have %d days left. Please go to www.***********.com and download the new revision"
Con esto evitamos caducidad al 15/02/2011 y creo que tambien evita la desaparición de algunos menú, que se perdian despues del periodo de prueba.
009B3D32 |. 84C0 TEST AL,AL
009B3D34 0F85 C2000000 JNZ 009B3DFC ; saltar
009B3D3A |. 8D4D A0 LEA ECX,DWORD PTR [EBP-60]
.modificado
009B3D32 |. 84C0 TEST AL,AL
009B3D34 E9 C3000000 JMP 009B3DFC ; saltar
009B3D39 90 NOP
009B3D3A |. 8D4D A0 LEA ECX,DWORD PTR [EBP-60]
Con esto evitamos que al comportarse como versión registrada se crea que tiene licencia despues del periodo de prueba, para que no la compruebe.
De todas maneras no le des mas vueltas a la parte fin de fecha, esta solucionada en el apartado 2.1.2. de la recapitulación.
Evita entrar en Modo Cierre 009B3949 |. 0F84 2601000 JE 009B3A75
modificar
009B3949 |. E9 27010000 JMP 009B3A75
009B394E |. 90 NOP
009B3D34 |. 0F85 C2000000 JNZ 009B3DFC
modificar
009B3D34 |. E9 C3000000 JMP 009B3DFC
009B3D39 |. 90 NOP
Explicación:
La detección de la fecha 16/2/2011 empieza en este primer CALL 009B5188 que es donde dicha fecha se carga en el Stack:
009B392A . E8 59180000 CALL 009B5188 \@TSiglopro@GetDtAtur$qv
009B392F . 59 POP ECX
009B3930 . DD9D F4FEFFFF FSTP QWORD PTR SS:[EBP-10C] ; Extrae fecha en un dato real de la FPU
009B3936 . 8D95 F4FEFFFF LEA EDX,DWORD PTR SS:[EBP-10C] ; Guarda en EDX la dirección de la (fecha máxima)
009B393C . 8D85 00FFFFFF LEA EAX,DWORD PTR SS:[EBP-100] ; Guarda en EAX la creo que la (fechaSistema)
009B3942 . E8 5924A6FF CALL 00415DA0 ; En este CALL se produce la comparación.
00415DA0 /$ 55 PUSH EBP
00415DA1 |. 8BEC MOV EBP,ESP
00415DA3 |. 83C4 F8 ADD ESP,-8
00415DA6 |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
00415DA9 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00415DAC |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00415DAF |. DD00 FLD QWORD PTR DS:[EAX] ; Guarda en FPU(ST0) el valor pila[EAX]=fechaSistema
00415DB1 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
00415DB4 |. DC1A FCOMP QWORD PTR DS:[EDX] ; Compara ST0 con el valor pila[EDX]=16/2/2011
00415DB6 |. DFE0 FSTSW AX ; Almacena el resultado de la comparación en AX
00415DB8 |. 9E SAHF ; Enciende las banderas o bits de (FPU) C"acarreo", A"paridad", Z"cero" ...
00415DB9 |. 0F97C0 SETA AL ; Escribe el bit resultado TRUE/FALSE de la comparación en AL
00415DBC |. 83E0 01 AND EAX,1
00415DBF |. 59 POP ECX
00415DC0 |. 59 POP ECX
00415DC1 |. 5D POP EBP
00415DC2 \. C3 RETN ;regresar del CALL
009B3947 . 84C0 TEST AL,AL
009B3949 |. 0F84 2601000 JE 009B3A75 ; Modificar para evitar la comparación de fechas
...009B3D34 |. 0F85 C2000000 JNZ 009B3DFC ; Modificado por Observación del comportamiento en Modo Gratuito; Es decir, anteriormente al salto alguna comparación realiza.
@LSL: Voy a betatestear tu último post. ;D
Siguiendo la recapitulación (siempre cargando BD versión anterior). El programa no me pasa por este salto que me muestras.
Cita de: LSL en 3 Octubre 2010, 19:11 PM
:silbar:
009B3FA9 . E8 76AAA5FF CALL 0040EA24
009B3FAE . 8845 FF MOV BYTE PTR [EBP-1],AL
009B3FB1 807D FF 00 CMP BYTE PTR [EBP-1],0
009B3FB5 . 74 1C JE SHORT 009B3FD3
009B3FB7 . 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B3FBA . 80B9 90000000 00 CMP BYTE PTR [ECX+90],0
009B3FC1 . 75 10 JNZ SHORT 009B3FD3
009B3FC3 . 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009B3FC6 . FF70 7C PUSH DWORD PTR [EAX+7C] ; /Arg1
009B3FC9 . E8 26790000 CALL @TComptaDB@IsFi$qv ; \@TComptaDB@IsFi$qv
009B3FCE . 59 POP ECX
009B3FCF . 84C0 TEST AL,AL
009B3FD1 . 74 04 JE SHORT 009B3FD7
009B3FD3 > 33C0 XOR EAX,EAX
009B3FD5 EB 05 JMP SHORT 009B3FDC
009B3FD7 > B8 01000000 MOV EAX,1
009B3FDC > 8BE5 MOV ESP,EBP
009B3FDE . 5D POP EBP
009B3FDF . C3 RETN
.modificado
009B3FA9 . E8 76AAA5FF CALL 0040EA24
009B3FAE . 8845 FF MOV BYTE PTR [EBP-1],AL
009B3FB1 807D FF 00 CMP BYTE PTR [EBP-1],0
009B3FB5 . 74 1C JE SHORT 009B3FD3
009B3FB7 . 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B3FBA . 80B9 90000000 00 CMP BYTE PTR [ECX+90],0
009B3FC1 . 75 10 JNZ SHORT 009B3FD3
009B3FC3 . 8B45 08 MOV EAX,DWORD PTR [EBP+8]
009B3FC6 . FF70 7C PUSH DWORD PTR [EAX+7C] ; /Arg1
009B3FC9 . E8 26790000 CALL @TComptaDB@IsFi$qv ; \@TComptaDB@IsFi$qv
009B3FCE . 59 POP ECX
009B3FCF . 84C0 TEST AL,AL
009B3FD1 . 74 04 JE SHORT 009B3FD7
009B3FD3 > 33C0 XOR EAX,EAX
009B3FD5 90 90 NOP NOP
009B3FD7 > B8 01000000 MOV EAX,1
009B3FDC > 8BE5 MOV ESP,EBP
009B3FDE . 5D POP EBP
009B3FDF . C3 RETN
El estado por ahora és 97% requetefull. Falta activar: Fichero --- Crear Copias Seguridad y Recuperar Copias Seguridad. (backup y restore).
pues a mi cuando le cambio la fecha al PC superior a 15/01/2011 como no le ponga en la dirección
00406BC9 0F8D 8B010000 JGE 00406D5A
un JMP
me sale este aviso de los dias que faltan hasta el 15/02/2011 ó los que me he pasado, para obtener el codigo de licencia
---------------------------
Por ci tec Studio 2009
---------------------------
Debe renovar su Código Licencia. Usted dispone de -231 días. Por favor, vaya a www.********.com y en su Espacio Cliente haga clic en 'Obtener Código Licencia'
---------------------------
OK
---------------------------
a mi con el NOP NOP en la dirección 009B3FD5 que te inidicaba en el penúltimo post anterior me ha vuelto a activar el periodo de evalucación, con la consiguiente aparición de las opciones de menu Fichero --- Crear Copias Seguridad y Recuperar Copias Seguridad. (backup y restore).
009B3FD3 > 33C0 XOR EAX,EAX
009B3FD5 90 90 NOP NOP
009B3FD7 > B8 01000000 MOV EAX,1
Mira en el menu Fichero, que la primera de las opciones es ·Activar Edición Evaluación (Demo)·, pincha en ella y entonces pasarás por el código en 009B3FD5 que debidamente NOPeado siempre dará por verdadero que sigue en periodo de Evaluación con todas las opciones de dicho periodo habilitadas.
Y por eso te decia que en combinación con otras cuantas de modificaciones que ya tienes localizadas, tendrás la versión requetefull para una larga temporada. (o eso espero, porque el programador se lo ha currado con tantas versiones, comparaciones y limitaciones).
;-) Otro salto de maestro, si señor funciona como tu dices:Cita de: LSL en 4 Octubre 2010, 16:21 PM
a mi con el NOP NOP en la dirección 009B3FD5 que te inidicaba en el penúltimo post anterior me ha vuelto a activar el periodo de evalucación, con la consiguiente aparición de las opciones de menu Fichero --- Crear Copias Seguridad y Recuperar Copias Seguridad. (backup y restore).
009B3FD3 > 33C0 XOR EAX,EAX
009B3FD5 90 90 NOP NOP
009B3FD7 > B8 01000000 MOV EAX,1
Mira en el menu Fichero, que la primera de las opciones es ·Activar Edición Evaluación (Demo)·, pincha en ella y entonces pasarás por el código en 009B3FD5 que debidamente NOPeado siempre dará por verdadero que sigue en periodo de Evaluación con todas las opciones de dicho periodo habilitadas.
Mirare como rehacer toda esta carnicería a partir de este salto. Intentaré transformarlo en un degüello menos sangriento. Lo posteo en breve. Tengooo que dormir y no me dejas. ;-) ;-)
Me olvide anotar el salto de la susodicha nag en la recopilación.
Cita de: LSL en 4 Octubre 2010, 16:12 PM
pues a mi cuando le cambio la fecha al PC superior a 15/01/2011 como no le ponga en la dirección
00406BC9 0F8D 8B010000 JGE 00406D5A
un JMP
me sale este aviso de los dias que faltan hasta el 15/02/2011 ó los que me he pasado, para obtener el codigo de licencia
---------------------------
Debe renovar su Código Licencia. Usted dispone de -231 días. Por favor, vaya a www.********.com y en su Espacio Cliente haga clic en 'Obtener Código Licencia'
---------------------------
OK
---------------------------
Anotado en la recopilación
2.1.2. Evita entrar en Modo Cierre
Durante el degüello me he fijado que este salto, muestra Botones de: Informes---Centro Informes: (Abrir, Diseño, Nuevo, Nuevo Planing), pero por otro lado oculta botones de: Animales --- Grupo/Lote: (Nuevo Grupo, Añadir Evento, Editar Evento ...), aparte de crear conflictos de escritura en: Granja --- Entrada de Eventos:Un Evento.
Cita de: LSL en 30 Septiembre 2010, 00:25 AM
1.
009B40E1 |> 84C0 TEST AL,AL
009B40E3 |. 0F95C0 SETNE AL
009B40E6 |. 83E0 01 AND EAX,1
.modificado
009B40E1 |> \84C0 TEST AL,AL
009B40E3 |. 0F94C0 SETE AL
009B40E6 |. 83E0 01 AND EAX,1
Siguiendo tus pasos he omitido esta modificación y la he cambiado por este otra:
009B40FD |. 75 0B JNZ SHORT
009B410A modificar
009B40FD |. EB 00 JMP SHORT
009B40FF
parece que la misma función la utiliza tanto para activar como desactivar cosas, por lo que entonces es mejor modificar el salto condicional a la vuelta del resultado de la función, lo que pasa que de esta forma tienes que poner un BP en cada función de las ya localizadas y testear cada opción del programa para arreglar todos los saltos que sean necesarios segun convengan.
RECOPILACIÓN FINAL en pruebas
1 @LSL:
Obligar a cargar al programa la versión mas completa
009B4267 |. 33D2 XOR EDX,EDX
009B4269 |. 8990 AC000000 MOV DWORD PTR [EAX+AC],EDX
009B426F |> 8B4D 08 MOV ECX,DWORD PTR [EBP+8]
009B4272 |. F681 AC000000 04 TEST BYTE PTR [ECX+AC],4
009B4279 74 51 JE SHORT 009B42CC
modificar
009B4267 |. 33D2 XOR EDX,EDX
009B4269 C780 AC000000 04000000 MOV DWORD PTR [EAX+AC],4
009B4273 90 NOP
009B4274 90 NOP
009B4275 90 NOP
009B4276 90 NOP
009B4277 90 NOP
009B4278 90 NOP
009B4279 EB 51 JMP SHORT 009B42CC
2 @nemus:
Evita entrar en Modo Cierre
009B3949 |. 0F84 2601000 JE 009B3A75
modificar
009B3949 |. E9 27010000 JMP 009B3A75
009B394E |. 90 NOP
009B3D34 |. 0F85 C2000000 JNZ 009B3DFC
modificar
009B3D34 |. E9 C3000000 JMP 009B3DFC
009B3D39 |. 90 NOP
00406BC9 |. 90 0F8D 8B010000 JGE 00406D5A
modificar
00406BC9 |. E9 8C010000 JMP 00406D5A
00406BCE |. 90 NOP
3 @nemus:
Permite mantener visibles funciones del modo Evaluación
009B40FD |. 75 0B JNZ SHORT 009B410A modificar 009B40FD |. EB 00 JMP SHORT 009B40FF
4 @LSL:
Obligar a entrar al Modo Evaluación
009B3FD5 EB 05 JMP SHORT 009B3FDC modificar 009B3FD5 90 90 NOP NOP
5 @LSL:
Muestra del Menu el apartado: Granja
00405AA5 |. 74 30 JE SHORT 00405AD7 modificar 00405AA5 |. EB 30 JMP SHORT 00405AD7
Betatesteando ... Requetefull
nemus mira tus MP, para testear. ;)
Cita de: LSL en 7 Octubre 2010, 09:29 AM
nemus mira tus MP, para testear. ;)
Muy bonito: free
Activadas las funciones: Instalaciones y Web Benchmarking.
Funcional: Por ahora, RequeteFull.
Observación: Insignificante pequeño retraso sobre el archivo de Recopilación Final. Supongo que debido a la comprobación de algunos calls que en la Recopilación final se saltan con JMPs.
Seguire probando unos dias mas y lo comento.
Saludos.