SimpleInjector c++ code

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Who Will You Kiss
Seçkin Üye
Katılım
18 Nis 2020
Mesajlar
549
Çözümler
4
Tepki puanı
145
6 HİZMET YILI
Merhaba Dostlar Sizlere c++ SimpleInjector Kodunu Vereceğim İyi Günler .

C++:
#include <Windows.h>
#include <iostream>
#include <fstream>
#include <TlHelp32.h>
#include <string>

bool file_exists(const wchar_t* name)
{
    std::ifstream infile{ name };
    return infile.good();
}

bool process_exists(const wchar_t* name, uint32_t& pid)
{
    auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if(snapshot == INVALID_HANDLE_VALUE)
        return false;

    auto entry = PROCESSENTRY32{ sizeof(PROCESSENTRY32) };

    if(Process32First(snapshot, &entry)) {
        do {
            if(!wcscmp(entry.szExeFile, name)) {
                pid = entry.th32ProcessID;
                CloseHandle(snapshot);
                return true;
            }
        } while(Process32Next(snapshot, &entry));
    }
    CloseHandle(snapshot);
    return false;
}

bool enable_debug_privilege(HANDLE process)
{
    LUID luid;
    HANDLE token;
    TOKEN_PRIVILEGES newPrivileges;

    if(!OpenProcessToken(process, TOKEN_ADJUST_PRIVILEGES, &token))
        return false;

    if(!LookupPrivilegeValue(nullptr, SE_DEBUG_NAME, &luid))
        return false;

    newPrivileges.PrivilegeCount = 1;
    newPrivileges.Privileges[0].Luid = luid;
    newPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    return AdjustTokenPrivileges(
        token,                   
        FALSE,                     
        &newPrivileges,            
        sizeof(newPrivileges),     
        nullptr,                   
        nullptr                   
    );
}

bool process_open(uint32_t pid, HANDLE& handle)
{
    handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION |
                         PROCESS_VM_READ | PROCESS_VM_WRITE |
                         PROCESS_CREATE_THREAD, FALSE, pid);

    return handle != nullptr;
}

bool inject(HANDLE process, const wchar_t* dll)
{
    auto thread = HANDLE{ nullptr };
    auto exit_code = 0;
    auto dllpath = VirtualAllocEx(process, nullptr, 0x1000, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);

    if(!dllpath)
        goto fail;

    auto success = WriteProcessMemory(process, dllpath, dll, (wcslen(dll) + 1) * sizeof(wchar_t), nullptr);

    if(!success)
        goto fail;

    thread = CreateRemoteThread(process, nullptr, 0,
        (LPTHREAD_START_ROUTINE)LoadLibraryW, dllpath, 0, nullptr);

    if(!thread) {
        goto fail;
    }

    if(WaitForSingleObject(thread, 4000) == WAIT_OBJECT_0) {
        exit_code = 0;
        GetExitCodeThread(thread, (DWORD*)&exit_code);
    }

fail:
    if(thread)
        CloseHandle(thread);
    if(dllpath)
        VirtualFreeEx(process, dllpath, 0, MEM_RELEASE);

    return exit_code != 0;
}

int main()
{
    constexpr auto TARGET_FILE      = L"csgosimple.dll";
    constexpr auto TARGET_PROCESS   = L"csgo.exe";

    wchar_t fullpath[MAX_PATH] = { 0 };
    auto    proc_id = 0u;
    auto    proc_handle = HANDLE{ nullptr };

    enable_debug_privilege(GetCurrentProcess());

    try {
        if(!file_exists(TARGET_FILE))
            throw std::runtime_error{ "DLL not found." };

        if(!process_exists(TARGET_PROCESS, proc_id))
            throw std::runtime_error{ "Process is not running." };

        if(!process_open(proc_id, proc_handle)) {
            throw std::runtime_error{ "Failed to open process." };
        }

        _wfullpath(fullpath, TARGET_FILE, MAX_PATH);

        if(!inject(proc_handle, fullpath)) {
            throw std::runtime_error{ "Failed to inject DLL." };
        }
    } catch(const std::exception& ex) {
        std::cout << "[ERROR] " << ex.what() << '\n';
        std::cout << "Press any key to exit..." << '\n';
        std::cin.get();
        return EXIT_FAILURE;
    }

    return EXIT_SUCCESS;
}
 
Banlı Üye
Katılım
7 Nis 2019
Mesajlar
5,454
Çözümler
1,816
Tepki puanı
2,709
Ödüller
16
Yaş
26
7 HİZMET YILI
Paylaşım için sağol hocam :burnbear:
 
Banlı Üye
Katılım
7 Ağu 2020
Mesajlar
522
Tepki puanı
42
Yaş
25
5 HİZMET YILI
eyvallah işime yarar bro
 
Vasily Zaitsev
Onaylı Üye
Katılım
7 Eki 2018
Mesajlar
80
Çözümler
1
Tepki puanı
6
Ödüller
6
7 HİZMET YILI
teşekkürler. kaydediyorum.
 
1998
Seçkin Üye
Katılım
13 Kas 2016
Mesajlar
407
Çözümler
2
Tepki puanı
55
Ödüller
8
Yaş
28
9 HİZMET YILI
kod olarak değilde direk injectoru yapılı atma şansın varmı kanka
 
Onaylı Üye
Katılım
3 Eyl 2020
Mesajlar
51
Tepki puanı
1
Yaş
25
5 HİZMET YILI
Good injector finally. Thanks a lot man, you helped me a lot
 
Her şey Neşesine
Seçkin Üye
Katılım
2 Nis 2019
Mesajlar
336
Çözümler
3
Tepki puanı
36
Ödüller
6
Yaş
31
7 HİZMET YILI
köşede biyerde kalsın mutlaka lazım olur sağol
 
Onaylı Üye
Katılım
19 Ağu 2020
Mesajlar
78
Çözümler
1
Tepki puanı
5
Ödüller
1
Yaş
32
5 HİZMET YILI
This is awesome and will help me a lot. Thank you for sharing
 
Onaylı Üye
Katılım
11 Nis 2019
Mesajlar
148
Çözümler
1
Tepki puanı
8
Ödüller
7
Yaş
33
7 HİZMET YILI
I will save it and try it out exactly what I need
 
Banlı Üye
Katılım
12 May 2020
Mesajlar
50
Tepki puanı
0
Ödüller
3
Yaş
35
6 HİZMET YILI
Teşekkür ederim yararlı.
 
T H O R
Süper Üye
Katılım
12 Haz 2020
Mesajlar
644
Çözümler
2
Tepki puanı
110
Ödüller
5
Yaş
26
5 HİZMET YILI
C++ hakkında en küçük bir bilgi bile öğrenmek çok değerli.6 7 aya başlayacağım javam tam yerine otursun.O zaman incelemek üzere kaydettim teşekkürler.
 
Banlı Üye
Katılım
5 Ağu 2020
Mesajlar
53
Çözümler
1
Tepki puanı
5
Yaş
31
5 HİZMET YILI
Injector bulamayanlar için güzel bir source.
 
Onaylı Üye
Katılım
1 Nis 2017
Mesajlar
61
Çözümler
1
Tepki puanı
2
Ödüller
5
9 HİZMET YILI
tam olarak ne iş yarıyor bu kodlar
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst