Alat yang di butuhkan :
* Visual C++ 2008 Express Edition (free)* Injector (Bebas)
* Injector (Bebas)
BAGI YANG MALES NGELIAT YG DI BAWAH INI
Adapun target game yang ada dalam tutorial ini adalah Point Blank, dengan contoh hack misi mayor.
Silakan ikuti langkah-langah di bawah ini :
1. Jalankan Visual C++ 2008 Express Edition, buat sebuah project dengan cara akses menu File – New – Project atau dengan menekan tombol CTRL + SHIFT + N.Gambar 1


kanan pada nama project (1), kemudian pilih menu Properties (2).Gambar 3

nu sebelah kiri, pilih Configuration Properties (1), kemudian bagian opsi Project Defaults, ubah opsi Configuration Type menjadiDynamic Library (.dll) (2), kemudian tekan tombol OK (3) untuk melakukan perubahan.Gambar 4




#include 3windows.h3 ganti 3 dengan <......... >
#include 3tlhelp32.h3 ganti 3 dengan <......... >
// 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, untuk address & offset-nya.
uiptrFinalPoints = DeRef(uipMmhBaseAddress + 0x4XXXXX) + 0xXXX; // User points pointer – masked, untuk address & offset-nya.
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;
}
8. Jika kode sudah disimpan (save), langkah berikutnya adalah membentuk file DLL-nya dengan cara klik menu Build – Build Solution atau dengan menekan tombol F7.Gambar 8




2. Pointer & offset pada fungsi MajorMissionHack( ) sengaja tidak tampilkan atau cari sendiri sendiri, Silakan dimodifikasi jika ingin menambahkan fungsi-fungsi lainnya (unlimited ammo, grenade dsb).
3. Jika tidak bisa running (no action) di OS Windows XP, ternyata ada kesalahan pada argumen fungsi API OpenProcess()
silakan jika anda menggunakan OS Windows XP, ubah kode pada bagian:
hProcess=OpenProcess(PROCESS_ALL_ACCESS|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, dwProcessID);
Menjadi
hProcess=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, dwProcessID);
4.Marilah kita belajar bersama
Argumen PROCESS_ALL_ACCESS hanya bisa dilakukan di OS Vista dan Windows 7, sementara di Windows XP tidak bisa
0 komentar:
Posting Komentar