Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
Cita:
Supongo que tu pregunta iba por ahí ??
seguro que si, por ahi mismo va mi pregunta, solo que quiero lograr hacer esto desde un .EXE solamente, sin DLL, pero con un programa que no sea en Consola,

porque tus cógido funcionan perfectamente en un Porgrama hecho para Consola, pero cuano lo pruebo/modifico para un programa con ventana etc... es decir, un programa con ambiente gráfico no funciona nada,

¿por que compadre?, ¿como logro esto usando básicamente tu código?

gracias de antemano,

saludos!
Responder Con Cita
  #2  
Antiguo 27-10-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por aeff Ver Mensaje
porque tus cógido funcionan perfectamente en un Porgrama hecho para Consola, pero cuano lo pruebo/modifico para un programa con ventana etc... es decir, un programa con ambiente gráfico no funciona nada,

¿por que compadre?, ¿como logro esto usando básicamente tu código?
Bueno, siento discrepar, pero la inyección funciona de cualquier modo.
Otra cosa es que te refieras a que quieres introducir un medio ejecutable con sus ventanas y todo dentro de un proceso. Para eso tendrías que estar jugando con manejadores de ventana, etc, etc, etc.....
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #3  
Antiguo 27-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
mira aqui el código del que te hablé usando un programa con "interfáz gráfica":
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

const
CM_MANDA_TECLA  = WM_USER + $1000;
CM_MANDA_SHOW   = WM_USER + $1001;


implementation

{$R *.DFM}

function Main(dwEntryPoint: Pointer): longword; stdcall;
Var Zeta : String;
Msg : TMsg;
     Procedure M_Tecla;
     Begin
      MessageBox(0, 'Esto Funciona de Maravilla, MARAVILLOSAMENTE', 'M_Tecla', 0);
     End;

     Procedure M_Show;
     Begin
     Zeta := 'Esto Form ha sido llamado mediante el envio de un mensaje y cerramos el proceso';
     MessageBox(0, PChar(Zeta), 'M_Show', 0);
     End;
var
x: integer;
begin


  //si en vez de ExitThread, ponemos ExitProcess, no solo nos descargaria el archivo
  //si no que también terminaría el proceso en el que estamos inyectados
    while GetMessage(Msg,0,0,0) do
    begin



    Case MSg.message Of
    CM_MANDA_SHOW:
        M_Show;
    CM_MANDA_TECLA:
        Begin
        M_Tecla;
        ExitProcess(0);
        End;
    End; //Case
    End; //While


//  ExitThread(0);
  ExitProcess(0);

  Result := 0;
  //PostThreadMessage
end;

procedure Inject(ProcessHandle: longword; EntryPoint: pointer);
var
  Module, NewModule: Pointer;
  Size, BytesWritten, TID: longword;
begin
  Module := Pointer(GetModuleHandle(nil));
  Size := PImageOptionalHeader(Pointer(integer(Module) + PImageDosHeader(Module)._lfanew + SizeOf(dword) + SizeOf(TImageFileHeader))).SizeOfImage;
  VirtualFreeEx(ProcessHandle, Module, 0, MEM_RELEASE);
  NewModule := VirtualAllocEx(ProcessHandle, Module, Size, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  WriteProcessMemory(ProcessHandle, NewModule, Module, Size, BytesWritten);
  CreateRemoteThread(ProcessHandle, nil, 0, EntryPoint, Module, 0, TID);

  Sleep(2000);
  MessageBox(0, 'Mando Mensaje CM_MANDA_SHOW', 'Inject', 0);
  PostThreadMessage(TID,CM_MANDA_SHOW,0,0);
  Sleep(3000);
  PostThreadMessage(TID,CM_MANDA_TECLA,0,0);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  ProcessHandle, PID: longword;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin

  CreateProcess(nil, 'notepad', nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo);

  Sleep(500);

  GetWindowThreadProcessId(FindWindow('Notepad', nil), @PID);
  ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  Inject(ProcessHandle, @Main);
  CloseHandle(ProcessHandle);

end;

end.

al pulsar el único botón que situo en el formulario para inyectar el proceso no lo logra,
¿por que?, he probado hacer miles de modificaciones pero no doy con la correcta para esto

¿sabes algo de lo que hablo compadre?
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
ataques de inyección de sql hogol SQL 5 17-10-2011 23:00:37
Inyeccion de sql richy08 PHP 0 19-10-2007 01:08:41
Inyección de cabeceras en función mail() kayetano PHP 4 02-01-2007 20:48:28
evitar inyeccion de html reevil PHP 2 21-12-2006 03:26:08
[Alerta] Inyección SQL remota en MySQL 4 y 5 vtdeleon Noticias 0 04-06-2006 20:31:17


La franja horaria es GMT +2. Ahora son las 02:17:07.


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