Delete

Iniciado por Nicolas995, 24 Diciembre 2015, 14:31 PM

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

Nicolas995

.....delete please

.:UND3R:.

#1
Debes entender sobre TranslateMessage. Tiene que ver como el programa actúa tras presionar el botón, generalmente cada botón tiene un identificador único (ensamblador .rc, c#, c, java, trabajan así, desconozco si existe algún lenguaje que no trabaje con identificadores en los botones). Ese identificador, junto con toda acción que realices en la ventana (inclusive hasta mover el mouse) llega es pasado a una función en donde se evalúa en grupo de condiciones tanto el mensaje enviado (acción) como sus parámetros (identificador u otro dependiendo del mensaje) en caso que no se cumpla la condición (por ejemplo un programa que solo tiene un botón de aceptar, y tu mueves el mouse, ese mensaje no está dentro de la programación del programa) se envía el mensaje a Windows para que este lo procese. Como simple resumen si posees el código de fuente, que lo dudo, simplemente llama a la función SendMessage:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx

en caso contrario debes hacer un injerto una vez cargado todo el programa y llamar a la función anteriormente comentada.

No sé si me he explicado bien, saludos.

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Nicolas995

...
#2
...

MCKSys Argentina

Hola!

No te entiendo bien qué quieres hacer:

1) Quieres que se ejecute "metin2panamera.bin" apenas inicias el exe?

ó

2) Quieres que se ejecute "metin2panamera.bin" una vez que se ha terminado de descargar?

Como te dijo .:UND3R:., si vas a modificar el ejecutable necesitas entender cómo funciona todo el tema de botones, mensajes, etc. de Windows.

Este programa está hecho en C/C++. La función que te ineteresa ejecutar está en 407F20.
La referencia a dicha función, se asigna en 407EBC. Imagino que en esa posición está el puntero a función que se ejecuta al hacerle click al botón.

Ahora, si miras al principio, verás un CreateDialogBoxParamW. Esa es la API que crea el formulario/ventana que ves. Y con eso ya tienes algo desde donde comenzar.

El link de .:UND3R:., te permitiría hacerle "click" al botón, desde una aplicación exterior, pero eso ya es otra historia.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Nicolas995

...
#4
...

MCKSys Argentina

Cita de: Nicolas995 en 24 Diciembre 2015, 23:09 PM
1) Quieres que se ejecute "metin2panamera.bin" apenas inicias el exe?

Exactamente eso quiero que haga , ya estuve dias buscando como hacerlo pero no encuentro la forma por que no tengo conocimiento de C++, no quiero sonar aprovechado pero si me pueden guiar como hacer eso estaré muy agradecido es muy importante para mi

Puedes hacer el que WinMain llame a la función que te interesa.

Ábrelo con IDA y verás cuál es el WinMain. Luego, puedes hacer la modificación con Olly y probar si funciona bien.

Saludos!

PD: El lenguaje en que fue escrito el programa parece ser C/C++, pero lo que ves ahora es assembly...  :P
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Nicolas995

...
#6
...

MCKSys Argentina

Cita de: Nicolas995 en 25 Diciembre 2015, 01:22 AM
me da verguneza pedir esto pero puedes hacerlo por mi porfavor llevo 2 horas intentando lo que me dijiste y buscando en google pero no logro nada u_u

En qué parte te trabas?

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


.:UND3R:.

Cita de: MCKSys Argentina en 25 Diciembre 2015, 01:58 AM
En qué parte te trabas?

Saludos!

Ayúdalo, pareciera que tiene algo de interés, yo lo ayudaría pero me limita tanto el tiempo  :-\

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

MCKSys Argentina

Cita de: .:UND3R:. en 25 Diciembre 2015, 04:36 AM
Ayúdalo, pareciera que tiene algo de interés, yo lo ayudaría pero me limita tanto el tiempo  :-\

OK, un parche rápido:

WinMain empieza en 00407880. Si cambiamos la función principal del programa por la que queremos, debería ejecutar el proggie sin problemas. En otras palabras cambiamos:

00407880 <WinMain(x,x,x,x)>     /$  55                PUSH EBP
00407881                        |.  8BEC              MOV EBP,ESP
00407883                        |.  8B45 08           MOV EAX,DWORD PTR SS:[EBP+8]
00407886                        |.  53                PUSH EBX
00407887                        |.  56                PUSH ESI
00407888                        |.  BB 01000000       MOV EBX,1
0040788D                        |.  33F6              XOR ESI,ESI
0040788F                        |.  A3 34914A00       MOV DWORD PTR DS:[4A9134],EAX
00407894                        |.  841D D0904A00     TEST BYTE PTR DS:[4A90D0],BL
0040789A                        |.  75 18             JNZ SHORT <Mt2.loc_4078B4>
0040789C                        |.  091D D0904A00     OR DWORD PTR DS:[4A90D0],EBX
004078A2                        |.  E8 59000000       CALL <Mt2.sub_407900>
004078A7                        |.  68 40C54800       PUSH <Mt2.sub_48C540>                    ; /func = <Mt2.sub_48C540>
004078AC                        |.  E8 7FEF0400       CALL <Mt2._atexit>                       ; \_atexit
004078B1                        |.  83C4 04           ADD ESP,4
004078B4 <loc_4078B4>           |>  68 D8904A00       PUSH Mt2.004A90D8                        ; <== Este PUSH rompe el stack
004078B9                            E8 62010000       CALL <Mt2.sub_407A20>                    ; <== CALL al programa principal


Nuestra función está en 407F20, entonces nos queda:

00407880 <WinMain(x,x,x,x)>     /$  55                PUSH EBP
00407881                        |.  8BEC              MOV EBP,ESP
00407883                        |.  8B45 08           MOV EAX,DWORD PTR SS:[EBP+8]
00407886                        |.  53                PUSH EBX
00407887                        |.  56                PUSH ESI
00407888                        |.  BB 01000000       MOV EBX,1
0040788D                        |.  33F6              XOR ESI,ESI
0040788F                        |.  A3 34914A00       MOV DWORD PTR DS:[4A9134],EAX
00407894                        |.  841D D0904A00     TEST BYTE PTR DS:[4A90D0],BL
0040789A                        |.  75 18             JNZ SHORT <Mt2.loc_4078B4>
0040789C                        |.  091D D0904A00     OR DWORD PTR DS:[4A90D0],EBX
004078A2                        |.  E8 59000000       CALL <Mt2.sub_407900>
004078A7                        |.  68 40C54800       PUSH <Mt2.sub_48C540>                    ; /func = <Mt2.sub_48C540>
004078AC                        |.  E8 7FEF0400       CALL <Mt2._atexit>                       ; \_atexit
004078B1                        |.  83C4 04           ADD ESP,4
004078B4 <loc_4078B4>               90                NOP                                      ; <== Este era el PUSH que rompia el stack
004078B5                            90                NOP
004078B6                            90                NOP
004078B7                            90                NOP
004078B8                            90                NOP
004078B9                            E8 62060000       CALL <Mt2.sub_407F20>                    ; <== CALL a nuestra función.


Osea, cambiamos 5 bytes; y con eso debería funcionar...  :P

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."