C++ Dll İnjector

ravex

Ultra Member
Katılım
30 Tem 2019
Konular
217
Mesajlar
656
Tepkime puanı
384
Konum
Turkey
RC Point
0
Merhabalar Bugün Sizlere C++ Dll İnjectorun Kodlarını Paylaşacağım
İlk Önce Yeni Bir Cpp Uzantısı Ekliyoruz Örnek:dllinjector
Bunu Kaynak Dosyalarını Sağ Tıklayıp Yeni Öğe Ekle Diyerek Ekleyebilirizz
Şimdi dllinjector.cpp şu kodları yazıyoruz
Kod:
#include <iostream>

#include <direct.h>
#include <windows.h>
#include <tlhelp32.h>
using namespace std;


char* GetCurrentDir()
{
    char*   szRet = (char*)malloc(MAX_PATH);


    _getcwd(szRet, MAX_PATH);

    return szRet;

}

LPCTSTR SzToLPCTSTR(char* szString)
{
    LPTSTR lpszRet;
    size_t size = strlen(szString)+1;

    lpszRet = (LPTSTR)malloc(MAX_PATH);
    mbstowcs_s(NULL, lpszRet,size,szString, _TRUNCATE);

    return lpszRet;

}


void WaitForProcessToAppear (LPCTSTR lpcszProc, DWORD dwDelay)
{
    HANDLE          hSnap;
    PROCESSENTRY32  peProc;
    BOOL            bAppeared = FALSE;


    while(!bAppeared)
    {
        if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)) != INVALID_HANDLE_VALUE)
        {

            peProc.dwSize = sizeof(PROCESSENTRY32);
            if(Process32First(hSnap, &peProc))
                while(Process32Next(hSnap, &peProc)  && !bAppeared)
                    if(!lstrcmp(lpcszProc, peProc.szExeFile))
                        bAppeared = TRUE;

        }
        CloseHandle (hSnap);
        Sleep(dwDelay);

    }

}

DWORD GetProcessIdByName(LPCTSTR lpcszProc)
{
    HANDLE          hSnap;
    PROCESSENTRY32  peProc;
    DWORD           dwRet = -1;


    if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)) != INVALID_HANDLE_VALUE)
    {

        peProc.dwSize = sizeof(PROCESSENTRY32);
        if(Process32First(hSnap, &peProc))
            while(Process32Next (hSnap, &peProc))
                if(!lstrcmp(lpcszProc, peProc.szExeFile))
                    dwRet = peProc.th32ProcessID;
    }
    CloseHandle (hSnap);

    return dwRet;

}

BOOL InjectDll(DWORD dwPid, char* szDllPath)
{
    DWORD   dwMemSize;
    HANDLE  hProc;
    LPVOID  lpRemoteMem, lpLoadLibrary;
    BOOL    bRet = FALSE;

    if((hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_CREATE_THREAD, FALSE, dwPid)) != NULL)
    {
        dwMemSize = strlen(szDllPath)+1;
        if((lpRemoteMem = VirtualAllocEx (hProc, NULL, dwMemSize, MEM_COMMIT, PAGE_READWRITE)) != NULL)
            if(WriteProcessMemory(hProc, lpRemoteMem, (LPCVOID)szDllPath, dwMemSize,NULL))
            {
                lpLoadLibrary = GetProcAddress(GetModuleHandleA("kernel32.dll"),"LoadLibraryA");
                if(CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE) lpLoadLibrary, lpRemoteMem, 0, NULL) != NULL)
                    bRet = TRUE;

            }

    }
    CloseHandle (hProc);

    return bRet;

}

int main()
{
    char    szProc[MAX_PATH], szDll[MAX_PATH];
    char*   szDllPath = (char*)malloc(MAX_PATH);
    LPTSTR  lpszProc = NULL;

    for(;;)
    {
        cout << "Process: ";
        cin >> szProc;
        cout << "DLL: ";
        cin >> szDll;
        szDllPath = GetCurrentDir();
        strcat_s(szDllPath, MAX_PATH, "\\");
        strcat_s(szDllPath, MAX_PATH, szDll);
        cout << "Waiting  For Process...." << endl;
        WaitForProcessToAppear(SzToLPCTSTR(szProc), 100);
        if(InjectDll(GetProcessIdByName(SzToLPCTSTR(szProc)), szDllPath))
            cout << "Injection Sucsesful . ! / By x60 " << endl;
        else
            cout << "Injection Failled . ! / By x60" << endl;
        cout << "\n";

    }

    return 0;
}
İşlem Bu Kadar İyi Forumlar​
 
Son düzenleme:
Üst