elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Eliminar atajo de teclas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar atajo de teclas  (Leído 9,246 veces)
aguml


Desconectado Desconectado

Mensajes: 378



Ver Perfil
Eliminar atajo de teclas
« en: 6 Junio 2013, 15:10 pm »

¿Es posible eliminar un atajo de teclas que usa un programa para asi poder usarlo desde windows?
Me explico mejor, estoy con un programa el cual tiene como limitacion que no deja copiar y tiene como atajo para ello Ctrl+C con lo que si pulso ese atajo me sale un mensaje de chico malo pero la idea es hacer que ese atajo no exista para el programa y asi cuando haga Ctrl+C funcionará esa combinacion pero desde windows, no desde el mismo programa, esa es la idea pero no se si estoy equivocado y si el programa no lo gestiona no se puede gestionar desde el propio windows. La cosa pinta muy mal y esta es mi ultima bala jejeje.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Eliminar atajo de teclas
« Respuesta #1 en: 6 Junio 2013, 19:19 pm »

Creo que no te entendi: Quieres quitarle la hotkey al proggie? Si lo haces, como vas a pasarle el comando "copiar"?

La hotkey es solo eso: un atajo de teclado. El comando debe estar implementado en el soft. Ese es el que debes atacar (me refiero a la parte del codigo). No el trigger (teclado, mouse, etc) del mismo...

Saludos!
En línea

MCKSys Argentina

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

apuromafo CLS


Desconectado Desconectado

Mensajes: 1.441



Ver Perfil WWW
Re: Eliminar atajo de teclas
« Respuesta #2 en: 7 Junio 2013, 04:33 am »

  en que lenguaje está el soft?
, si es visual basic, puedes usar IDA, puedes usar vbdecompiler y así otros...
ollydbg sirve para depurar, pero si ese evento es un componente  o más aún es demo de los que les gusta los nag...

te lo digo de otra forma  cuando pulsamos en un setup, "siguiente" es un boton de continuar, pero dentro de los eventos en algun lugar apunta donde usará el recurso, lo define con algun push y que evento le dará, luego si se anula el push solo se anularía, en cambio atacar   al "script generador" o donde lo crea, puedes llegar a cosas aún mayor  como anular el boton o más aún olvidar el form.

me pasó en programas como historias clínicas, como armadillo(cuando intentaba registrarlo) y así otros programas, aveces lo que ves son solo consecuencias, lo que si vale esta ahi, pero cerca...  ejemplo el mismo hsn, crea un hilo que envia a detectar el depurador, anulado el hilo, no hay debugger present...

así que yo creo que si no se pilla por algún boton ni tecla, entonces a analizar un poco más y encontrar si hay algo que tenga relación con el tema...

saludos Apuromafo
En línea

Apuromafo
aguml


Desconectado Desconectado

Mensajes: 378



Ver Perfil
Re: Eliminar atajo de teclas
« Respuesta #3 en: 7 Junio 2013, 15:41 pm »

Veo que no me entendisteis jejeje. Lo primero decir que es un VB. Mi lógica es porque cuando programa en C++Builder alguna aplicación y no asigno atajos y estoy por ejemplo en un TEdit y doy a Ctrl+C ó Ctrl+V ó Ctrl+X estos atajos funcionan aunque yo no los haya asignado en mi programa por lo que me da que pensar que se encarga el propio XP de usar esos atajos siempre que mi aplicación no los use. Entonces, el programa en cuestión es DEMO, en mayúsculas porque es demo pero demo jajaja, no se puede saltar la limitación de copiar puesto que no existe código que copie ni nada, solo el código que captura el atajo y te muestra el MessageBox de chico malo y nada más.
Entonces se me ocurrió ¿que pasaría si me cargo de alguna manera la asignación del atajo en el programa en cuestión? ¿se encargará Windows de gestionar ese atajo? ¿Me permitiría así copiar lo que tenga seleccionado? ¿Que tengo que buscar en el binario para cargarme la captura y que pase el control de ese atajo directamente a Windows? Hay una especie de gestor de pulsaciones de teclas que usa para decidir que hacer por ejemplo cuando pulsas Ctrl+C, Ctrl+X, C, ... que consiste en una serie de saltos condicionales. Para saber si cuando pulsaste una tecla tenias pulsada la tecla Ctrl compara un valor que no se bien de donde lo saca con 2 y si es 2 es que estaba pulsada la tecla control, para mayusculas da 1, y si no esta pulsada ninguna de esas 2 da cero. Si llegas a la comparacion de la C vemos que compara la tecla pulsada con 0x43 y si es asi sigue sin saltar y luego compara un valor que se obtiene de alguna manera que no llegué a ver con 0x2 y si coincide no salta y te muestra el chico malo de que no puedes copiar y si no coincide salta a otro sitio donde te muestra un menú de colores. Probé a nopear el Call que muestra al chico malo pero no sirve de nada porque no muestra el mensaje pero sigue sin copiar nada. Ese es el plan y espero poder decir como Anibal Smith "Me gusta que los planes salgan bien" jejeje.

PD: si no se puede eliminar el atajo pero si se pudiera sustituir por ejemplo por Ctrl+L pues tambien valdría si con ello consigo que copie jejeje.

Os adjunto un pequeño ejemplo que he programado en el que no podréis copiar el contenido del TEdit con Ctrl+C porque yo lo asigno a otra cosa y si podréis pegar, cortar... todas las combinaciones de teclas de XP porque no las tengo asignadas. A ver si podéis mirarlo y entre todos damos con el sitio donde el programa decide si existe atajo o no en el programa y podemos anularlo para que coja el atajo Windows XP. Yo lo he estado mirando y veo que el programa gestiona las teclas pulsadas y hay una serie de comparaciones similares a las de programa víctima con saltos condicionales y demás. Para capturar las teclas usa GetKeyPress o algo así era (ya cerré el xp y no puedo mirarlo ahora mismo)
Aquí el link de mi exe de ejemplo: http://www.mediafire.com/download/bxh5d9bqolzst5a/Project1.raro

Edito: El ejemplo ya lo he solucionado y ha funcionado perfectamente mi idea. Lo he abierto con Reshacker y sorpresa:



El valor del Shortcut pasado a hexa es 0x4043 y cargándonos esa linea ya no existe el Atajo y nos deja copiar directamente desde XP. El problema es que esto es un C++Builder 6 y el programa victima es un VB y no tiene esa estructura al verlo con Reshacker y no puedo quitar el atajo asi. Sigo en las mismas Grrrrrrrrrr.
« Última modificación: 7 Junio 2013, 17:26 pm por aguml » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Eliminar atajo de teclas
« Respuesta #4 en: 7 Junio 2013, 18:07 pm »

No estas teniendo en cuenta algo: la CLASE del control.

Si la app usa un Edit de Windows, todo el tema de "eventos" ya esta hecho, por eso lo puede handlear el SO.

Ahora, cuando el programador le "asigna" al edit un shortcut, lo que hace es redirigir la ejecuion a su propio codigo, pero no se elimina (reemplaza) el codigo del SO. Por eso funciono tu ejemplo.

En VB (al menos en VB6, .NET deberia ser peor) los edit no son los del SO. Estan definidos en el runtime de VB. En realidad son una subclase del Edit del SO, y tienen todos los "eventos" handleados por el runtime. Por eso hay veces que los mensajes para Edit del SO no funcionan de igual forma en los Edit (TextBox) de VB.

Si el proggie tiene un Edit nativo, podrias hacer lo mismo que en tu ejemplo. Sino, vas a tener que buscar la parte donde asigna la hotkey.

Para ver la clase, usa Spy++ o algo parecido.

Saludos!
En línea

MCKSys Argentina

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

aguml


Desconectado Desconectado

Mensajes: 378



Ver Perfil
Re: Eliminar atajo de teclas
« Respuesta #5 en: 7 Junio 2013, 18:28 pm »

Mmmm, hay algo que no entiendo, lo que tiene que copiar está dentro de un AfxOleControl42 pero no se como mirar eso que dices. Si no estoy equivocado, ese control en realidad es una especie de contenedor pero si miro en Spy++ o en Win Explorer veo que no hay nada dentro aunque estoy viendo que hay unos dibujos (es curioso pero los TImage, o los TShape de Builder tampoco aparecen).
Con GetWindowLongPtr puedo ver que el componente tiene estos Style:
WS_CHILD
WS_CLIPCHILDREN
WS_CLIPSIBLINGS
WS_HSCROLL
WS_VISIBLE
WS_VSCROLL

En las demás pestañas del Spy++ hay mas info pero no creo que sea muy relevante para este caso.
No quiero copiar texto sino formas y textos que puedo seleccionar haciendo clic en ellas.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Eliminar atajo de teclas
« Respuesta #6 en: 7 Junio 2013, 19:10 pm »

Quizas podrias probar usando SendMessage y esto: http://msdn.microsoft.com/en-us/library/windows/desktop/ms649011(v=vs.85).aspx

Quizas el runtime lo handlee directamente y copie el contenido del control en el clipboard...

Con probar no se pierde nada...  ;D

Saludos!
En línea

MCKSys Argentina

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

aguml


Desconectado Desconectado

Mensajes: 378



Ver Perfil
Re: Eliminar atajo de teclas
« Respuesta #7 en: 7 Junio 2013, 23:39 pm »

me pierdo con eso que indicas pero veo que usa algo como stringcbcopy y en este caso hay imagenes tambien. Ademas, sendmessage necesita el handle ¿Le sirve el hwnd del control?
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Eliminar atajo de teclas
« Respuesta #8 en: 8 Junio 2013, 04:13 am »

Ademas, sendmessage necesita el handle ¿Le sirve el hwnd del control?

Si
En línea

MCKSys Argentina

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

aguml


Desconectado Desconectado

Mensajes: 378



Ver Perfil
Re: Eliminar atajo de teclas
« Respuesta #9 en: 8 Junio 2013, 09:44 am »

No se hacer eso tío, además, ¿para eso ese programa tendría que enviar las cosas al portapapeles antes? es que no me entero de na.

Edito: he estado mirando si podia copiar al portapapeles desde mi aplicacion y he "fabricado" esto:

Código:
//La siguiente linea es necesaria para evitar el error de compilacion
//'E2015 Ambiguity between 'TBitmap' and 'Windows::TBitmap'
#define TBitmap Graphics::TBitmap

void CopyImageToClipboard(HANDLE hwnd, int Width, int Height, unsigned int CopyImageFormat, unsigned int cbFormat)
{
        //ENVIANDO UNA IMAGEN BMP AL PORTAPAPELES
        //Creamos una copia de la imágen ya escalada y la asignamos a un Handle
        HANDLE hNew = CopyImage(hwnd,
                                CopyImageFormat,
                                Width, //NULL para no escalar el ancho
                                Height, //NULL para no escalar el alto
                                LR_COPYRETURNORG);

        //Abrimos el portapapeles pasandole el hwnd de
        //nuestra aplicación
        OpenClipboard(Application->Handle);

        //Borramos el contenido del portapapeles con
        //EmptyClipboard para luego pegar la imagen
        EmptyClipboard();

        //Pegamos la imagen con el Api SetClipBoardData _
        //indicando que es un mapa de bits y le enviamos _
        //el handle de la imagen obtenido anteriormente
        SetClipboardData(cbFormat, (long*)hNew);

        //Cerramos el portapapeles usando el Api CloseClipboard
        CloseClipboard();
        //FIN DEL ENVIO
}

void PasteImageToClipboard(TBitmap *picture, unsigned int cbFormat)
{
        //COPIANDO LA IMAGEN DESDE EL PORTAPAPELES
        //Abrimos el portapapeles pasandole el hwnd de
        //nuestra aplicación
        OpenClipboard(Application->Handle);

        //Obtenemos el contenido con GetClipboardData y
        //se lo asignamos al Image2
        picture->Handle = GetClipboardData(cbFormat);

        //Cerramos el portapapeles usando el Api CloseClipboard
        CloseClipboard();
        //FIN DE LA RECEPCION
}

y asi las uso:

Código:
CopyImageToClipboard(hwnd, Form1->Image2->Width, Form1->Image2->Height, IMAGE_BITMAP, CF_BITMAP);
PasteImageToClipboard(Form1->Image2->Picture->Bitmap, CF_BITMAP);

El problema es que para que funcione necesito obtener antes el handle de la imagen que seleccione y lo mas que consigo es el handle del componente GRRRRRRRRR.
« Última modificación: 8 Junio 2013, 11:19 am por aguml » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Atajo de teclado WMP? (Reproducir)
Windows
Saberuneko 5 5,309 Último mensaje 27 Mayo 2010, 13:02 pm
por Saberuneko
[Solucionado] [Windows 7] [Atajo te] [Mute] ¿Como hacerlo sin teclas especiales?
Windows
Di~OsK 6 9,404 Último mensaje 31 Mayo 2011, 06:53 am
por Randomize
Reproductor de audio que permita crear teclas de atajo personalizadas y Output?
Software
NIGHTBIRD 2 1,986 Último mensaje 17 Abril 2012, 18:18 pm
por NIGHTBIRD
Atajo de teclado en vnc
GNU/Linux
gAb1 0 1,910 Último mensaje 22 Julio 2013, 16:35 pm
por gAb1
botones de atajo.
Dudas Generales
robbenrib 5 3,102 Último mensaje 12 Febrero 2014, 03:07 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines