elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: 4n4lDetector v1.3: herramienta de análisis estático de malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Problema al compilar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al compilar  (Leído 809 veces)
Martinss

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Problema al compilar
« en: 12 Diciembre 2006, 20:05 »

cuando intento compilar el siguiente codigo sale esto:
error C2660: 'GetProcAddress' : function does not take 1 parameters

si alguien me puede corregir  :-\

Código:
#include <windows.h>
#include <stdio.h>
#include <tlhelp32.h>
#include <shlwapi.h>

#define PROCESS_NAME "target.exe"
#define DLL_NAME "injected.dll"


//I could just use PROCESS_ALL_ACCESS but it's always best to use the absolute bare minimum of priveleges, so that your code works in as
//many circumstances as possible.
#define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ)
 
BOOL WriteProcessBYTES(HANDLE hProcess,LPVOID lpBaseAddress,LPCVOID lpBuffer,SIZE_T nSize);

BOOL LoadDll(char *procName, char *dllName);
BOOL InjectDLL(DWORD ProcessID, char *dllName);
unsigned long GetTargetProcessIdFromProcname(char *procName);

bool IsWindowsNT()
{
   // check current version of Windows
   DWORD version = GetVersion();
   // parse return
   DWORD majorVersion = (DWORD)(LOBYTE(LOWORD(version)));
   DWORD minorVersion = (DWORD)(HIBYTE(LOWORD(version)));
   return (version < 0x80000000);
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    if(IsWindowsNT())
       LoadDll(PROCESS_NAME, DLL_NAME);
    else
   MessageBox(0, "Your system does not support this method", "Error!", 0);

    return 0;
}


BOOL LoadDll(char *procName, char *dllName)
{
   DWORD ProcID = 0;

   ProcID = GetProcAddress(procName);

   if(!(InjectDLL(ProcID, dllName)))
      MessageBox(NULL, "Process located, but injection failed", "Loader", NULL);
   
   return true;
}

BOOL InjectDLL(DWORD ProcessID, char *dllName)
{
   HANDLE Proc;
   char buf[50]={0};
   LPVOID RemoteString, LoadLibAddy;

   if(!ProcessID)
      return false;

   Proc = OpenProcess(CREATE_THREAD_ACCESS, FALSE, ProcessID);

   if(!Proc)
   {
      sprintf(buf, "OpenProcess() failed: %d", GetLastError());
      MessageBox(NULL, buf, "Loader", NULL);
      return false;
   }

   LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");

   RemoteString = (LPVOID)VirtualAllocEx(Proc, NULL, strlen(DLL_NAME), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
   WriteProcessMemory(Proc, (LPVOID)RemoteString, dllName, strlen(dllName), NULL);
        CreateRemoteThread(Proc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddy, (LPVOID)RemoteString, NULL, NULL);   
   
   CloseHandle(Proc);

   return true;
}

unsigned long GetTargetProcessIdFromProcname(char *procName)
{
   PROCESSENTRY32 pe;
   HANDLE thSnapshot;
   BOOL retval, ProcFound = false;

   thSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

   if(thSnapshot == INVALID_HANDLE_VALUE)
   {
      MessageBox(NULL, "Error: unable to create toolhelp snapshot", "Loader", NULL);
      return false;
   }

   pe.dwSize = sizeof(PROCESSENTRY32);

   retval = Process32First(thSnapshot, &pe);

   while(retval)
   {
      if(StrStrI(pe.szExeFile, procName) )
      {
         ProcFound = true;
         break;
      }

      retval    = Process32Next(thSnapshot,&pe);
      pe.dwSize = sizeof(PROCESSENTRY32);
   }

   return pe.th32ProcessID;
}


En línea

Thaorius


Desconectado Desconectado

Mensajes: 1.072


Ver Perfil WWW
Re: Problema al compilar
« Respuesta #1 en: 12 Diciembre 2006, 20:10 »

La funcion GetProcAddress no tiene un solo parametro, tiene un parametro HMODULE(que te lo da LaodLibrary al cargar una dll) y el nombre de la funcion, busca la documentacion en google.

Saludos


En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
cyrux22

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: Problema al compilar
« Respuesta #2 en: 5 Marzo 2007, 20:02 »

Es como dice M@rT1n en esta parte del codigo:
Código:
BOOL LoadDll(char *procName, char *dllName)
{
   DWORD ProcID = 0;

   ProcID = GetProcAddress(procName);

   if(!(InjectDLL(ProcID, dllName)))
      MessageBox(NULL, \\\"Process located, but injection failed\\\", \\\"Loader\\\", NULL);
   
   return true;
}

te falto poner lo que si pusiste en esta otra:
Código:
   LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle(\\\"kernel32.dll\\\"), \\\"LoadLibraryA\\\");

   RemoteString = (LPVOID)VirtualAllocEx(Proc, NULL, strlen(DLL_NAME), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
   WriteProcessMemory(Proc, (LPVOID)RemoteString, dllName, strlen(dllName), NULL);
        CreateRemoteThread(Proc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddy, (LPVOID)RemoteString, NULL, NULL); 

o sea q no obtuviste el handle de la dll de la cual vas a obtener la dir de la función por eso t tira ese error
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema al compilar en C
Programación C/C++
NowhereMan 2 1,771 Último mensaje 25 Julio 2011, 13:14
por Saberuneko
triangulo problema al compilar
Programación C/C++
kaede_ 5 1,323 Último mensaje 15 Agosto 2011, 15:51
por satu
Problema al compilar
Programación C/C++
Legnak 2 1,144 Último mensaje 21 Septiembre 2011, 02:07
por Legnak
problema al compilar AYUDA
Programación C/C++
gorge2004 2 717 Último mensaje 10 Marzo 2012, 22:06
por gorge2004
NUEVO Problema Al Compilar
Programación C/C++
KanoxSmoKinG 0 204 Último mensaje 15 Marzo 2017, 19:22
por KanoxSmoKinG
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines