Autor
|
Tema: Eliminar Palabra DEMO en Programa (Leído 51,442 veces)
|
Shaddy
Desconectado
Mensajes: 722
one_bit_manipulator()
|
lógicamente si ejecutas el .exe de DOS con esos parámetros, será el mismo .exe el que tenga esa función, así que tendremos que indagar en el propio .exe de DOS que es el que se encarga de gestionar ese tipo de cosas.
Salu2..
|
|
|
En línea
|
|
|
|
guruangel
Desconectado
Mensajes: 18
|
Estuve viendo la herramienta DOS pero ademas de que me lanza un error al iniciar Olly donde me dice que esa no es una aplicacion de 32 bits pues no encontre nada interesante en el codigo...
Es decir... no hay texto llamativo como en el otro programa como DEMO o cosas asi... puro codigo y pues no se por donde buscar... Deme datos... que debo buscar y mas o menos que podria encontrar en ese programa tomando en cuenta lo que viene desde el otro programa por linea de comandos...
Espero instrucciones...
|
|
|
En línea
|
|
|
|
Shaddy
Desconectado
Mensajes: 722
one_bit_manipulator()
|
Bueno, no tienes que buscar nada de DEMO, lo que tienes que ver son los argumentos que le pasas, tienes que pasarle argumentos con OllyDBG (debug-arguments) y buscar en la memoria que hace con ellos, así verás donde escribe la cadena para que no escriba nada. Salu2 ...
|
|
|
En línea
|
|
|
|
Karman
|
bueno... estuve mirando tu programa y logré hacerlo funcionar (al parecer no quiere funcionar desde "Archivos de prog...", tonces lo copié a C y le puse un nombre de menos de 8 caracteres), la cosa es que lo que hace es muy simple, llama al segundo programa para que haga los cambios con los 2 argumentos, pero que pasa si falta uno? funciona correctamente (va en realidad vi que solo modifica unos datos pero no pone el mencionado argumento) como podes probar esto? lo abrís con el olly, y cuando va a llamar a "winexec" te vas a "Follow in Dump" de eax (el argumento a ser enviado) y eliminas el 2º argumento haciendo doble clic sobre el espacio y pones 0, te queda así:
00A66D0C 63 73 61 69 6E 74 2E 65 78 65 20 43 3A 5C 63 61 csaint.exe C:\ca 00A66D1C 6D 62 69 6F 00 44 45 4D 4F 53 54 52 41 43 49 4F mbio DEMOSTRACIO 00A66D2C 4E 5F 4E 4F 5F 46 41 4C 4C 41 5F 30 34 31 34 2D N_NO_FALLA_0414- 00A66D3C 34 33 34 38 37 31 31 4348711
y entonces que pasa si el cartel no existe?
abrís el programa con un editor hexadecimal, buscás el cartelito y cuando lo encontrás remplazás la primera letra con 00
00076a00h: FF FF FF FF 22 00 00 00 00 45 4D 4F 53 54 52 41 ; ÿÿÿÿ"....EMOSTRA 00076a10h: 43 49 4F 4E 5F 4E 4F 5F 46 41 4C 4C 41 5F 30 34 ; CION_NO_FALLA_04
y listo... cuando quiera unir el segundo argumento este va a ser nulo... prueba esto y dime que onda...
S2
|
|
« Última modificación: 15 Diciembre 2007, 04:01 am por Karman »
|
En línea
|
|
|
|
guruangel
Desconectado
Mensajes: 18
|
Hola chicos... He seguido las dos instrucciones... y el resultado es el siguiente...
Segui con el metodo de ShadowDark y cargue el segundo archivo... meti un argumento y me manda a restablecer el programa... restart y se para en un push... entonces revise hacia arriba y me aparece unos argumentos.. marcados con el numero 1... 2... etc... pero en realidad no se como usar esto de los argumentos...(recuerden que soy novato aun) asi que les dejo la parte que encontre para entonces me den instrucciones de como actuar ahora...
0F00F316 /$ 8BFF mov edi,edi 0F00F318 |. 55 push ebp 0F00F319 |. 8BEC mov ebp,esp 0F00F31B |. 57 push edi 0F00F31C |. 8B7D 08 mov edi,[arg.1] 0F00F31F |. 57 push edi ; /Arg1 0F00F320 |. E8 599D0000 call ntvdm.0F01907E ; \ntvdm.0F01907E 0F00F325 |. 0FB6C0 movzx eax,al 0F00F328 |. 48 dec eax 0F00F329 |. 48 dec eax 0F00F32A |. 74 16 je short ntvdm.0F00F342 0F00F32C |. 8B4D 10 mov ecx,[arg.3] 0F00F32F |. 8BC1 mov eax,ecx 0F00F331 |. 56 push esi 0F00F332 |. 8B75 0C mov esi,[arg.2] 0F00F335 |. C1E9 02 shr ecx,2 0F00F338 |. F3:A5 rep movs dword ptr es:[edi],dword ptr ds:[esi] 0F00F33A |. 8BC8 mov ecx,eax 0F00F33C |. 83E1 03 and ecx,3 0F00F33F |. F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi] 0F00F341 |. 5E pop esi 0F00F342 |> 5F pop edi 0F00F343 |. 5D pop ebp 0F00F344 \. C2 0C00 retn 0C 0F00F347 CC int3 0F00F348 CC int3 0F00F349 CC int3 0F00F34A CC int3 0F00F34B CC int3 0F00F34C > $ 6A 18 push 18 0F00F34E . 68 4816000F push ntvdm.0F001648 0F00F353 . E8 4CC20000 call ntvdm.0F01B5A4 0F00F358 . BF 94000000 mov edi,94 0F00F35D . 8BC7 mov eax,edi 0F00F35F . E8 3CCA0000 call ntvdm.0F01BDA0 0F00F364 . 8965 E8 mov ss:[ebp-18],esp 0F00F367 . 8BF4 mov esi,esp 0F00F369 . 893E mov ds:[esi],edi 0F00F36B . 56 push <<<<<< AQUI ES DONDE SE DETIENE esi ; /pVersionInformation 0F00F36C . FF15 2C10000F call ds:[<&KERNEL32.GetVersionExA>] ; \GetVersionExA 0F00F372 . 8B46 10 mov eax,ds:[esi+10] 0F00F375 . A3 685A060F mov ds:[F065A68],eax 0F00F37A . 8B4E 04 mov ecx,ds:[esi+4] 0F00F37D . 890D 745A060F mov ds:[F065A74],ecx 0F00F383 . 8B56 08 mov edx,ds:[esi+8] 0F00F386 . 8915 785A060F mov ds:[F065A78],edx 0F00F38C . 8B76 0C mov esi,ds:[esi+C] 0F00F38F . 81E6 FF7F0000 and esi,7FFF 0F00F395 . 8935 6C5A060F mov ds:[F065A6C],esi 0F00F39B . 83F8 02 cmp eax,2 0F00F39E . 74 0C je short ntvdm.0F00F3AC
Entonces segui con el segundo metodo de Karman... Pero me pasa lo mismo que antes... que me quita la descripcion que tenia antes en el archivo binario y me deja el espacio en blanco... pero si hace el segundo argumentos...
Espero me guien con el uso de los argumentos y como deberia de actuar... mas o menos que deberia de buscar y que otra cosa deberia hacer y en que parte del Olly... Gracias a Karman por seguir con la ayuda al igual que ShadowDark...
|
|
|
En línea
|
|
|
|
Karman
|
si te deja la descripción en blanco es por una condición del Delphi, que deriva del pascal y utiliza el sistema "primer caracter longitud del texto"... entonces al reemplazar el texto el primer carácter define la longitud... y como este es 0 no te lo muestra, en consecuencia... tendrías que modificar el archivo en DOS para que no te reemplace la longitud de la cadena... el chiste del programador fue colocar el corazón del programa en DOS que es un lenguaje muerto (está de moda hacer eso ahora... xD) ya que es difícil de debugear y desensamblar... habría que analizar lo que hace el programa en DOS...
S2
|
|
|
En línea
|
|
|
|
guruangel
Desconectado
Mensajes: 18
|
Ok... es lo que me habia hecho referencia ShadowDark... a ver... que sugerencias me das para analizar ese archivo... Segun el RDG Packer Detector 0.63 me dice que esta compilado con MiniGw Gcc V2.xx
Segun averigue eso es un programa que usa unas librerias o plugin para compilar varios lenguajes... entre los que compila no aparece el Turbo Pascal... Pero tengo entendido que eso esta realizado en Turbo Pascal...
Asi que no confio de ese detector... jejeje... Espero por mas instrucciones a ver como sigo analizando ese sistema...
|
|
|
En línea
|
|
|
|
Karman
|
tendrías que desensamblarlo con algún disassembler de DOS, que como mencioné no son muy conocidos por ser un lenguaje muy viejo.... y la verdad, en DOS no existen DLL's así que el código se reutiliza por lo que no vas a encontrar llamadas a funciones definidas... sinó a funciones locales (que hacen lo mismo que las funciones definidas) pero no están tan documentadas... una segunda opción sería crear un patcher que sepa identificar los registros de tu archivo DAT y pueda corregir el mencionado carater "inicial" que elimina la descripción....
S2
|
|
|
En línea
|
|
|
|
guruangel
Desconectado
Mensajes: 18
|
Bueno... ibamos bien hasta que dijiste eso de hacer un Parcher... jejeje... Creo que soy muy novato aun y este programa es mucho para mi... jejeje... Es decir... tengo que ir quemando etapas... y bueno.. dejame ver si consigo un programa para desensamblarlo y seguir antes de que lo abandone... Gracias... esperare por algun programa mientras sigo buscando una solucion...
|
|
|
En línea
|
|
|
|
Karman
|
para lo del patcher tendrías que saber la estructura bajo la cual se guardan los datos en el archivo, que podría ser algo así:
registro datos: num lngnomb; alfan Nombre; num cant; num mod; .. etc... fin reg;
y con esto leer el archivo modificado (el que tiene la descripción en blanco) y corregir el dato lngnomb... pero para eso tendrías que averiguar bien primero dicho registro....
S2
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Quitar la palabra DEMO de un programa
Software
|
XArthur
|
4
|
3,877
|
27 Agosto 2011, 05:38 am
por Di~OsK
|
|
|
[Solucionado][Duda] eliminar doble palabra incluyendo la primera en un texto...
Scripting
|
.:UND3R:.
|
8
|
8,036
|
3 Enero 2012, 06:12 am
por .:UND3R:.
|
|
|
Eliminar restriccion de uso de operaciones en soft demo
« 1 2 »
Ingeniería Inversa
|
augustus_ar
|
11
|
14,190
|
27 Agosto 2014, 21:40 pm
por .:UND3R:.
|
|
|
Duda con programa que imprime palabra al reves
Programación C/C++
|
Blaster
|
6
|
7,745
|
1 Julio 2013, 22:46 pm
por SrCooper
|
|
|
Eliminar una palabra que esta despues de una frase?
.NET (C#, VB.NET, ASP)
|
<housedir>
|
2
|
3,293
|
19 Agosto 2013, 03:00 am
por Eleкtro
|
|