Club Delphi  
    Paypal   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 04-01-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Lo suyo y lo limpio es liberar la memoria cuando ya no la quieres.

Saludos.
Responder Con Cita
  #2  
Antiguo 13-01-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Bueno, al final lo que estaba haciendo no me iba bien del todo ya que en unas funciones de la dll funcionaba y en otras crasheaba creo que porque como solo copio las funciones pues al ejecutarse supongo que buscaba alguna cosa de la dll y booom.
Lo estoy intentando pasar todo para usarlo con lo que pusiste y de momento para cargar la dll tengo esto:
Código PHP:
void __fastcall TFormMain::OnEntryPoint(DWORD Address)
{
   
// Inyecta la dll
   
AnsiString dll "DLLHack.dll";
   
HANDLE  hThread 0;
   
DWORD   ExitCode 0;
   
LPTHREAD_START_ROUTINE hLib;

   
// Localizo memoria en el espacio de direcciones de la víctima
   
void*  Buffer VirtualAllocEx((HANDLE)Depurador->GetHProcess(), NULLdll.Length()+1MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);

   if(
Buffer){
      if(
Depurador->WriteMemory((unsigned long)Bufferdll.c_str(), dll.Length()+1)){
         
hLib = (LPTHREAD_START_ROUTINE)Depurador->GetAddressAPIByName("Kernel32.dll""LoadLibraryA");
         if(
hLib){
            
hThread =:: CreateRemoteThread(Depurador->GetHProcess(), NULL0hLibBuffer00);
            if(
hThread){
               
WaitForSingleObject(hThreadINFINITE ); // Espero a que se cree el Thread
               
GetExitCodeThread(hThread, &ExitCode);   // Termino el Thread
               
CloseHandle(hThread);                    // Cierro el Handle hThread
            
}
         }
      }
      
// libero la memoria localizada...
      
VirtualFreeEx((HANDLE)Depurador->GetHProcess(), Buffer0MEM_RELEASE); // Libero memoria
   
}

Como corre dentro de un depurador, tengo metodos para obtener la direccion de las apis dentro del proceso y otras cosas mas.
El problema que tengo es que se queda congelado en el WaitForSingleObject aunque si lo miro con el Cheat Engine puedo ver como se ha creado el hilo. ¿que puedo hacer para solucionar eso?
Responder Con Cita
  #3  
Antiguo 13-01-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Probablemente es un problema en el depurador, intenta esto:
Código PHP:
.............................
         if(
hLib){
            
CloseHandle(CreateRemoteThread(Depurador->GetHProcess(), NULL0hLibBuffer00));
         }
........................ 

Saludos.
Responder Con Cita
  #4  
Antiguo 13-01-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
lo he solucionando injertando en el oep el push y el call loadlibrary y en la siguiente linea pongo un bp. Arranco y cuando para en el bp ya tengo la dll cargada asi que restauro los bytes originales, quito el bp y posiciono a eip en el oep y ya corre con la dll. De todos modos mañana probaré lo que me indicas a ver que pasa.
Responder Con Cita
  #5  
Antiguo 14-01-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
una cosa, al estar parado en un evento, al ejecutar el codigo anterior creo que no tendria efecto hasta que arranque ¿No? Se supone que el codigo lo ejecuto dentro del evento y mientras tanto el proceso se congela y con el todos sus hilos. Entonces si es asi el nuevo hilo estaria congelado con lo cual no se ejecutaria hasta que salga del evento ¿No? El hilo aparecia como creado con lo que se me ocurre poner un bp en la siguiente linea y en ese evento poner el waitforsingleobject. De todos modos el modo que uso ahora mismo funciona aunque es algo chapuzas pero bueno.
Responder Con Cita
  #6  
Antiguo 14-01-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Exacto, por eso quité el WaitForSingleObject.

Saludos.
Responder Con Cita
  #7  
Antiguo 14-01-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Amigo como me indicas tengo un inconveniente.
Justo despues de cargar la dll tengo que obtener una serie de punteros a las funciones de la dll y si no pongo el WaitForSingleObject no funciona.
Como yo lo hago si funciona porque como se ejecuta el LoadLibrary y luego paro en la siguiente linea pues ya puedo obtener la info de la dll sin problemas.
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
Crear Frame Dinámicamente chinchan C++ Builder 2 09-05-2008 14:07:08
Crear ODBC dinámicamente? HccSoft Conexión con bases de datos 3 18-03-2008 15:19:32
Crear form dinamicamente karocs Varios 1 15-09-2005 20:15:18
insertar dinamicamente YolandaM Varios 4 16-03-2005 10:21:41
Cambiar iconos dinamicamente Diegoval Gráficos 1 25-06-2004 15:35:04


La franja horaria es GMT +2. Ahora son las 23:52:03.


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