Cara Membuat Dll Inject With Picture

Kali ini ane coba sampaikan tutorial membuat file DLL untuk keperluan game hacking dengan menggunakan Visual C++ 2008 Express secara sederhana.

Adapun software yang diperlukan sebagai berikut, yang belum punya silakan download:




Adapun target game yang ada dalam tutorial ini adalah Point Blank, dengan contoh hack misi mayor.

Silakan ikuti langkah-langah di bawah ini:

Jalankan Visual C++ 2008 Express Edition, buat sebuah project dengan cara akses menu File - New - Project atau dengan menekan tombol CTRL + SHIFT + N.
Spoiler:



Pada jendela New Project, pilih Empty Project (1) pada bagian Templates, kemudian pada kolom Name masukkan nama project (2) dan klik tombol OK (3)
Spoiler:



Project telah berhasil dibuat. Pada bagian Solution Explorer, klik kanan pada nama project (1), kemudian pilih menu Properties (2).
Spoiler:



Jendela project properties akan tampil. Pada tree menu sebelah kiri, pilih Configuration Properties (1), kemudian bagian opsi Project Defaults, ubah opsi Configuration Type menjadi Dynamic Library (.dll) (2), kemudian tekan tombol OK (3) untuk melakukan perubahan.

Spoiler:


Pada jendela Add New Item yang tampil, pada bagian templates pilih C++ File (.cpp) (1), beri nama 'Main.cpp' (2) pada bagian kolom Name, kemudian tekan tombol OK (3).

Spoiler:


Sebuah file bernama 'Main.cpp' berhasil dibuat. Silakan masukkan kode-kode di bawah ini pada file tersebut, kemudian simpan (save)

Spoiler:


Berikutnya adalah membuat sebuah file bernama Main.cpp untuk memasukkan kode-kode utama, dengan cara pilih direktori Source Files (1) pada bagian Solution Explorer, kemudian klik menu Project - Add New Item (2) atau dengan menekan tombol CTRL + SHIFT + A.
Spoiler:
Code:#define _CRT_SECURE_NO_WARNINGS
#include
#include

// definisikan variable dengan 'window title', 'window classname' dan modul
char *pProcessWindowTitle = "Point Blank";
char *pProcessWindowClass = "I3VIEWER";
char *pProcessModuleName = "PointBlank.i3Exec";

// etc...
UINT_PTR uipUserRankValue = 35; // major?
UINT_PTR uipUserPointsValue = 999999; // OMG!

UINT_PTR uiptrFinalRank, uiptrFinalPoints;

bool isInitMmhMemory = true;

DWORD dwProcessID;
UINT_PTR uipMmhBaseAddress;
HANDLE hProcess;

DWORD GetModuleBase(LPSTR lpModuleName, DWORD dwProcessId)
{
MODULEENTRY32 lpModuleEntry = {0};
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);

if(!hSnapShot)
return NULL;
lpModuleEntry.dwSize = sizeof(lpModuleEntry);
BOOL bModule = Module32First( hSnapShot, &lpModuleEntry );
while(bModule)
{
if(!strcmp( lpModuleEntry.szModule, lpModuleName ) )
{
CloseHandle(hSnapShot);
return (DWORD)lpModuleEntry.modBaseAddr;
}
bModule = Module32Next( hSnapShot, &lpModuleEntry );
}
CloseHandle( hSnapShot );
return NULL;
}

// DeRef() = credit L. Spiro (MHS)
UINT_PTR DeRef( UINT_PTR _uiptrPointer ) {
UINT_PTR uiptrRet;
if (!::ReadProcessMemory(hProcess, reinterpret_cast(_uiptrPointer), &uiptrRet, sizeof(uiptrRet), NULL)) { return 0UL; }
return uiptrRet;
}

// inisialisasi proses
void InitApplicationProcess()
{
bool isFindWindow = true;
HWND hWnd = NULL;

while(isFindWindow)
{
if((hWnd = FindWindowA(pProcessWindowClass, pProcessWindowTitle)) != NULL) // jika window ditemukan
{
isFindWindow = false;
}
Sleep(500);
}

GetWindowThreadProcessId(hWnd, &dwProcessID);
hProcess = OpenProcess(PROCESS_ALL_ACCESS|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, dwProcessID);
}

void MajorMissionHack()
{
if(isInitMmhMemory)
{
uipMmhBaseAddress = GetModuleBase(pProcessModuleName, dwProcessID);

// misal: pointer yang didapat = PointBlank.i3Exec+00471234 dengan offset 0xA12, tuliskan seperti di bawah!
uiptrFinalRank = DeRef(uipMmhBaseAddress + 0x4XXXXX) + 0xXXX; // User rank pointer - masked, sorry!
uiptrFinalPoints = DeRef(uipMmhBaseAddress + 0x4XXXXX) + 0xXXX; // User points pointer - masked, sorry!

isInitMmhMemory = false;
}

// WriteProcessMemory pada pointer 'rank', berikan nilai uipUserRankValue (35)
::WriteProcessMemory(hProcess, reinterpret_cast(uiptrFinalRank), &uipUserRankValue, sizeof(uipUserRankValue), NULL);

// WriteProcessMemory pada pointer 'points', berikan nilai uipUserPointsValue (999999) LOL!
::WriteProcessMemory(hProcess, reinterpret_cast(uiptrFinalPoints), &uipUserPointsValue, sizeof(uipUserPointsValue), NULL);
}

void LovelyLoopy()
{
// ok, berikan salam dulu!
MessageBox(0, "DLL berhasil di-inject. Lanjutkan!", "Hello World", MB_OK + MB_ICONASTERISK);

InitApplicationProcess();

while(1) // loop selamanya
{
if(GetAsyncKeyState(VK_F12)&1) // jika F12 ditekan
{
MajorMissionHack(); // panggil fungsi 'MajorMissionHack()'
Sleep(500);
}

Sleep(1);
}
}

BOOL WINAPI DllMain(HMODULE hDll, DWORD dwReason, LPVOID lpReserved)
{
DisableThreadLibraryCalls(hDll);

if(dwReason == DLL_PROCESS_ATTACH)
{
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)LovelyLoopy, NULL, NULL, NULL);
}
else if(dwReason == DLL_PROCESS_DETACH)
{
CloseHandle(hProcess);
}

return TRUE;
}



Spoiler:



Jika kode sudah disimpan (save),
langkah berikutnya adalah membentuk file DLL-nya dengan cara klik menu Build - Build Solution
atau dengan menekan tombol F7.
Spoiler:



Setelah proses build solution, pada jendela Output akan menampilkan
hasil dari proses compile/build tersebut, jika tidak ada kesalahan (error) berarti kode-kode sudah benar dan file DLL sudah
terbentuk. Jika ternyata ada kesalahan (error),
silakan periksa langkah-langkah sebelumnya jika ada yang terlewatkan.
Spoiler:



Kemudian buka direktori tempat project anda disimpan, dalam tutorial ini
ane simpan di direktori D:\!PROJECTS!\SukaSukaEnte
dan buka direktori yang bernama Debug di
dalamnya (sesuaikan letak direktori anda).
Spoiler:



Bisa kita lihat ada beberapa file yang terbentuk, namun yang kita
perlukan hanyalah file yang berekstensi .dll,
karena file tersebut yang akan kita injeksikan ke proses program/game.
Agar tidak membingungkan, sekaligus ane copy-kan
file injector-nya (x1nject.exe)
ke direktori tersebut.


Kemudian jalankan injector (x1nject.exe),
ubah pada kolom 'What to inject' dengan nama
proses program/game, (contoh: PointBlank.exe),
pada bagian 'Add to injection list' tambahkan file
.dll yang telah kita buat dengan menekan
tombol Browse dan cari pada direktori Debug project kita.
Spoiler:



Jalankan program/game yang akan kita injeksikan dengan .dll yang kita
buat, dan apabila program/game telah berjalan, injector x1nject.exe otomatis menginjeksikan file .dll
tersebut.
Spoiler:



dan hasilnya adalah:
Spoiler:



DLL Injection kita telah bekerja!

Semoga bisa membantu teman-teman semua, jika berguna...!

Happy cheating!

NB: Pointer & offset pada fungsi MajorMissionHack()
sengaja saya tidak tampilkan. Silakan dimodifikasi jika ingin
menambahkan fungsi-fungsi lainnya (unlimited ammo, grenade dsb).


1 Koment to "Cara Membuat Dll Inject With Picture"

Posting Komentar

Diberdayakan oleh Blogger.

 

Can't hear anything? Please try one of the player links.

Play stream in WinampWinamp/iTunes
Play stream in Windows Media PlayerWindows Media Player
Play stream in Real PlayerReal Player

Pengikut

Follow NetworkedBlog

Promosi Banner

ads ads ads ads

Chit Chat

Fans Page

User Online

Translator

English French German Spain Italian Dutch
Russian Portuguese Japanese Korean Arabic Chinese Simplified

Blog Archive

Home Hosting