Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 24
ArdiIIa Va por buen camino
A ver roman si en pocas palabras de lo hago un poco legible....
La función main, es el trozo de código que será inyectado, en él podrás introducir cualquier cosa que se te ocurra... Procedures... etc.. en este caso no hace nada en especial, sino que únicamente se pone a recibir mensajes y procesarlos...

El procedimiento inject será el encargado de:
  • Calcular la memoria necesaria para el proceso a inyectar
  • Reservar esa memoria atendiendo a los parámetros (PAGE_EXECUTE_READWRITE)....
  • Escribir en la memoria reservada el proceso (función main)
  • Y finamlente lanzar el proceso.
Adicionalmente en ese mismo proceso, lo que hace es esperar un poquito y mandar un par de mensajes de prueba al proceso YA inyectado. En este punto te aclaro que no tendría mucho sentido, y que lo he puesto a modo de ejemplo, sin embargo si es otra aplicación la que coge los parámetros de ubicación del proceso; esa otra aplicación debería ser la encargada de mandar los mensajes al proceso inyectado.
Por último y también a modo de ejemplo el programa en su ejecución lo que hace es...
  • Lanzar el Notepad
  • Buscar el handle del proceso
  • Y finamente inyecta el proceso.
Es obvio que si lo que queremos es un proceso tal como el "explorer.exe, winlogon.exe" o similar, no hemos de lanzar nada, sino simplemente buscar ahí e inyectar.
Cita:
Ok. Suena razonable. Mmm.. ¿qué pasaría si no lo ponemos? ¿Cómo es que podría interferir? ¿Acaso windows puede asignar el mismo pedazo de memoria a dos procesos?
$IMAGEBASE controla la dirección de la carga por defecto del objeto cargado, pero de hecho, señalo que el proceso de inyección busca y reserva memoria (ver VirtualAllocEx) para el proceso a inyectar, por lo cual entiendo que no hay ninguna interferencia. Es mas si se anula esa directiva, el programa funcionaría igualmente, lo que ocurre, es que precisamente este método está basado en la inyección de una DLL y en ese caso, realmente si que resultaría necesaria.

Espero aclararte algo roman.
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #2  
Antiguo 22-02-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ArdiIIa
Espero aclararte algo roman.
Hola, muchas gracias. Ahora tengo un panorama general más claro aunque desde luego tengo que meterme en cada detalle. Para empezar, ¿en qué parte del SDK puedo encontrar información acerca del FileHeader, DosHeader, OptionalHeader, etc.?

Ahora bien, lo del IMAGEBASE sigue sin quedarme claro. Tal como dices, el programa funciona aún sin él, pero entonces ¿por qué es necesario si se tratase de una dll? ¿No vale el mismo proceso del VirtualAlloc?

Cita:
Empezado por seoane
Un ejemplo tipico en ambos casos, es hacer "subclassing"
A ver, tratar de liarme con ambas técnicas al mismo tiempo va a estar de locos pero vamos allá. Según creo recordar, en los tiempos del windows de 16 bits, el subclassing era tan sencillo como hacer un

Código Delphi [-]
SetWindowLong(hWnd, GWL_WNDPROC, LongInt(@WindowProc))

con lo que sustituíamos el procedimiento de ventana de la ventana hWnd con el nuestro WindowProc. Al llegar los 32 bits, también llegó esto:

Cita:
Empezado por SDK de Windows
The SetWindowLong function fails if the window specified by the hWnd parameter does not belong to the same process as the calling thread.
con lo cual se anulaba la diversión. Sin embargo veo que usas esto mismo en tu código (de ahí copié la línea de código anterior )

Entonces, inyectamos el código en el otro proceso precisamente para ser parte de él y poder hacer el subclassing. ¿Es esto correcto o nada que ver?

Otra cosa: ¿una dll siempre se inyecta? Es decir, cuando un proceso ejecuta código de una dll, ¿Windows mapea ese código dentro del espacio del proceso?

Muchas gracias a ambos.

pd: Entonces, ¿la técnica de ArdiIIa ya nos permitiría inyectar a WinLogon e interceptar el famoso Ctrl+Alt+Supr?

// Saludos
Responder Con Cita
  #3  
Antiguo 22-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Cita:
Empezado por roman
Entonces, inyectamos el código en el otro proceso precisamente para ser parte de él y poder hacer el subclassing. ¿Es esto correcto o nada que ver?
Exacto, inyectamos el codigo precisamente para poder hacer subclassing.

Cita:
Empezado por roman
Otra cosa: ¿una dll siempre se inyecta? Es decir, cuando un proceso ejecuta código de una dll, ¿Windows mapea ese código dentro del espacio del proceso?
Pues si, para llamar a una funcion de una dll primero hay cargar esa dll dentro de la memoria del proceso. Utilizando, por ejemplo, ProcessExplorer de Sysinternal puedes ver la cantidad de librerias que tiene cargado cada proceso. Y en el caso de los hook, puedes ver como la libreria que contiene el hook aparece ahi con las demas.

Cita:
Empezado por roman
pd: Entonces, ¿la técnica de ArdiIIa ya nos permitiría inyectar a WinLogon e interceptar el famoso Ctrl+Alt+Supr?
Pues si, pero como ya he dicho antes esta tecnica me resulta un poco compleja, pero si Ardilla se ve con ganas ... La prueba de que la inyeccion de codigo funciona para interceptar el Ctr+Alt+Supr es que hay varios programas que lo consiguen de esta forma, en codeproject creo que hay algun ejemplo.

PD: No sabia roman que te interesaba el tema. Pense que era el unico por aqui que lo encontraba entretenido, pero ya veo que Ardilla y tu tambien le encontrais interesante.
Responder Con Cita
  #4  
Antiguo 22-02-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por seoane
La prueba de que la inyeccion de codigo funciona para interceptar el Ctr+Alt+Supr es que hay varios programas que lo consiguen de esta forma, en codeproject creo que hay algun ejemplo.
Pues no sé. Si tienes una referencia específica me gustaría verla porque siempre que he buscado acerca del Ctrl+Alt+Supr termino con GINA.

El tema es, desde luego, interesante, pero nunca me he metido a profundidad en las entrañas de Windows. El primer ejemplo que citaste aquí, lo vi pero no me metí a estudiarlo, pero con el segundo, que apenas hoy (ayer) ví, la cosa cambia porque, como dices, es más divertido

// Saludos
Responder Con Cita
  #5  
Antiguo 22-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Cita:
Empezado por roman
Pues no sé. Si tienes una referencia específica me gustaría verla porque siempre que he buscado acerca del Ctrl+Alt+Supr termino con GINA.
Por ejemplo este http://www.codeproject.com/win32/AntonioWinLock.asp

Código Delphi [-]
El primer ejemplo que citaste aquí, lo vi pero no me metí a estudiarlo, pero con el segundo, que apenas hoy (ayer) ví, la cosa cambia porque, como dices, es más divertido
Y seguro que podemos buscarle otras utilidades igual de divertidas
Responder Con Cita
  #6  
Antiguo 22-02-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Increible. Ese artículo ya lo había visto hace como medio año. Seguramente como no tenía ni la más remota idea de la inyección ni cómo hacerla, mi mente lo bloqueó Pues apenas tenga tiempo ya me veo estudiando su código.

// Saludos
Responder Con Cita
  #7  
Antiguo 26-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 24
ArdiIIa Va por buen camino
Sigo indagando sobre este asunto, y al margen de haber visto componentes para Delphi (dwinlock) y que por cierto ya cita roman en alguno de sus hilos, así como las librerías de Mathias Rauen que alivian mucho código, básicamente todo se basa en el famoso código GINA, pero hay un concepto que no acabo de entender...
¿Es posible que la tan afamada clase "SAS Window class" sea encontrada por FindWindow cuando el código ha sido inyectado?
Quiero decir que bajo XP y en circunstancias normales, y sin inyectar nada, esa clase no la encuentro por ningún lado... con lo cual hacerle un SetWindowLong lo veo difícil a simple vista.
¿seaone, sabes algo de este asunto?
Por cierto, el código traducido a Delphi, se puede encontrar en la web de Liu Yang LYSoft.
Solamente hay que inyectar la Dll propuesta, pero sigo con la duda de esa clase...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO

Última edición por ArdiIIa fecha: 26-02-2007 a las 14:00:39.
Responder Con Cita
  #8  
Antiguo 23-06-2010
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 17
erickahr Va por buen camino
Question Saludos

Hola a todos, perdon por mi ignorancia compañeros, intente compilar el codigo de ArdiIIa en delphi 2010 con Win 7, y me bota error 216, es cosa del S.O. o lo estoy haciendo mal?
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ctrl+alt+supr NO FUNCIONA! CITHALI ACERMA Varios 5 04-07-2006 13:45:43
Ctrl+alt+supr karocs Varios 3 28-12-2004 20:46:37
Como inhabilitar Ctrl+Supr en Rejilla de datos pinoxito OOP 2 30-07-2004 03:24:51
ocultar aplicación (Ctrl+Alt+Supr)!!! acertij022 API de Windows 8 10-04-2004 20:02:36
Alt-Ctrl-Supr: el inicio kinobi Humor 2 02-10-2003 22:03:49


La franja horaria es GMT +2. Ahora son las 17:57:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi