loader hacer loaders

Iniciado por qwerty_crack, 26 Junio 2007, 15:13 PM

0 Miembros y 1 Visitante están viendo este tema.

qwerty_crack

hola necesito saber si para hacer un loader debo hacerlo en ensamblador o otra cosa, o si puedo usar esos programas para hacer loaders, hay alguna diferencia ?

byebye

puedes usar cualquier lenguaje. tb puedes usar programas que los hacen pero si necesitas algo mas especifico pues tendrias que hacertelo tu.

Shaddy

Cita de: qwerty_crack en 26 Junio 2007, 15:13 PM
hola necesito saber si para hacer un loader debo hacerlo en ensamblador o otra cosa, o si puedo usar esos programas para hacer loaders, hay alguna diferencia ?

programarlo te dará mas alternativas, sin embargo hay un muy buen parcheador / generador de loaders, que es el dUP2, EL MEJOR sin ninguna duda, sin embargo si quieres hacer un loader yo recomiendo delphi, a mi me gusta mucho ese lenguaje porque es sencillo, ahora si, te pesará mínimo 400 kb, así que también lo puedes hacer en ensamblador.. lo que prefieras, pero todo depende de que quieras loadear..

Salu2..
"Si buscas resultados diferentes, no hagas siempre lo mismo" (Albert Einstein)

http://abssha.reversingcode.com
http://www.reversingcode.com

qwerty_crack

#3
LOADER

#include <windows.h>
#include <stdio.h>
#include <iostream.h>
#include <tlhelp32.h>

#define GAME "hl.exe"
#define DLL "Hook.dll"

bool ok;
int main()
{
int a;
HANDLE hAndle;
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32);

  while(!ok)
  {
  HANDLE hAndle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if(Process32First(hAndle,&pe))
  {
 
do
{
HANDLE hTemp=OpenProcess(PROCESS_ALL_ACCESS, 0, pe.th32ProcessID);
if(hTemp)
{

if( strcmpi(pe.szExeFile, GAME) == 0)
{
                   
       hAndle = OpenProcess(PROCESS_ALL_ACCESS, FALSE,pe.th32ProcessID);
      LPVOID     lpRemoteAddress=VirtualAllocEx(hAndle,NULL,strlen(DLL),MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);

WriteProcessMemory(hAndle, lpRemoteAddress, (LPVOID)DLL, strlen(DLL), NULL);

CreateRemoteThread(hAndle, NULL, 0,(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA"), lpRemoteAddress, 0, NULL);
ok=true;
break;
              }
                   
CloseHandle(hTemp);
      }
}
while(Process32Next(hAndle, &pe));
    }
}
   


  return 0;
}




DLL

__stdcall DllMain(HANDLE handle,DWORD message,LPVOID lpReservd)
{

switch(message)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls((HMODULE)handle);
MessageBox(NULL,"TEST","TEST",MB_OK);
//real_glBegin=(FUNC_GLBEGIN)DetourFunction((PBYTE)DetourFindFunction("OpenGL32","glBegin"),(PBYTE)myGlBegin);
//real_glViewport=(FUNC_GLVIEWPORT)DetourFunction((PBYTE)DetourFindFunction("OpenGL32","glViewport"),(PBYTE)myGlViewport);
break;
}



return TRUE;
}




#include "stdafx.h"
#include "DigiHook.h"
#include "psapi.h"
#include <windows.h>
#include <Tlhelp32.h>
#include <detours.h>
#include <string.h>
#define end1 '\n'

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CWinApp theApp;

using namespace std;

// you need psapi.lib, and detours.lib

BOOL InjectIntoProcess(TCHAR* szExeName, TCHAR* szDllName);

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
int hooked = FALSE;
cout << "Waiting to inject ..." << end1;

while (!hooked)
{
if (InjectIntoProcess( _T( "hl2.exe" ), _T( "digihook.dll" ) ) )
{
hooked = TRUE;
cout << "HL2 successfully hooked!";
}
Sleep(100);
}

cin.get();
}

return nRetCode;
}

BOOL InjectIntoProcess(TCHAR* szExeName, TCHAR* szDllName)
{
    TCHAR szProcessName[MAX_PATH];
    TCHAR szDllNameAndPath[MAX_PATH];
    DWORD aProcesses[1024], cb, cProcesses;
    HANDLE hProcess = NULL;
    HMODULE hMod = NULL;
    UINT i = 0;

    // Get the full path to the DLL for later use
    GetCurrentDirectory(MAX_PATH, szDllNameAndPath);
    wcscat_s(szDllNameAndPath, _T("\\"));
    wcscat_s(szDllNameAndPath, szDllName);

    // Get the list of process identifiers
    if(!EnumProcesses(aProcesses, sizeof(aProcesses), &cb))
        return FALSE;

    // Calculate how many process identifiers were returned
    cProcesses = cb / sizeof(DWORD);

    // Get the name and process identifier for each process
    for(i = 0; i < cProcesses; i++)
    {
        hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, aProcesses[i]);

        if(hProcess)
        {
            if(EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cb))
            {
                GetModuleBaseNameW(hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR));
            }

            if(wcscmp(wcslwr(szProcessName), szExeName) == 0)
            {
                // We found the process, inject our DLL
                if(DetourContinueProcessWithDllW(hProcess, szDllNameAndPath))
                {
                    return TRUE;
                }
            }
        }
       
        CloseHandle(hProcess);
    }
    return FALSE;
}


este es un code de un loader, lo traje de un foro de programación sobre half life y otros, hay más codes, este lo hizo un tal sinner.

byebye

parece mas un cheto que un loader. me inclino mas poer el cheto del hl que por loader.

qwerty_crack

se hehehe  ;D es pero solamente el inyector, y aparte no funciona, igual modifické el post con un code que si funciona según leí, lo que pasa es que te digo que no es el cheto porke falta el code propio del cheto, pero la finalidad si es para un cheto...