Sunday, May 15, 2011

# Tutorial Membuat Injection dll

 Just Share FREE :)
Bahan - Bahan :
1.Visual C++ 2008 Express Edition
2.x1nject (atau sebagainya)

Adapun Target Game yang Ada Dalam Tutorial ini adalah Point Blank, dengan Contoh : Misi Mayor Hack.

Langkah - Langkah :
1.Jalankan Visual C++ 2008 Express Edition, Buat Sebuah Project dengan Cara Akses Menu file – new – project atau dengan Menekan Tombol ctrl + shift + n.

Project Telah berhasil dibuat.

2.Pada Bagian Solution Explorer, Klik Kanan Pada Nama Project (Lihat Angka 1 Pada gambar
), Kemudian Pilih Menu properties (Lihat Angka 2 Pada gambar).


3.Jendela project properties akan Tampil. Pada Tree Menu Sebelah Kiri, Pilih configuration properties(Lihat Angka 1 Pada gambar), Kemudian Bagian Opsi Project defaults, Ubah Opsi configuration type Menjadi dynamic library (.dll) (Lihat Angka 2 Pada gambar), Kemudian Tekan Tombol OK (Lihat Angka 3 Pada gambar) untuk melakukan perubahan.


4.Pada Jendela add new item yang Tampil, Pada Bagian Templates Pilih c++ file (.cpp) (Lihat Angka 1 Pada gambar), Beri Nama ‘main.cpp‘ (Lihat Angka 2 Pada gambar) Pada Bagian Kolom Name, Kemudian Tekan Tombol OK (Lihat Angka 3 Pada gambar)


5.Sebuah File Bernama ‘main.cpp‘ Berhasil dibuat. Silakan Masukkan Kode-Kode dibawah Ini Pada File Tersebut, Kemudian Simpan (save)


6.Berikutnya adalah Membuat Sebuah File Bernama main.cpp Untuk Memasukkan Kode-Kode Utama, Dengan Cara Pilih Direktori source files (Lihat Angka 1 Pada gambar) Pada Bagian Solution Explorer, Kemudian Klik Menu project – add new item (Lihat Angka 2 Pada gambar)atau dengan Menekan Tombol ctrl + shift + a.
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? :D
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! :D
        messagebox(0, "dll berhasil di-inject. lanjutkan!", "hello world", mb_ok + mb_iconasterisk);
       
        initapplicationprocess();

        while(1) // loop selamanya :D
        {
                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;
}



jika kode sudah disimpan (save), langkah berikutnya adalah membentuk file dll-nya dengan cara klik menu build – build solution atau dengan menekan tombol f7.screenshot:

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.screenshot:

kemudian buka direktori tempat project anda disimpan, dalam tutorial ini ane simpan di direktori d:\!projects!\sukasukaenter dan buka direktori yang bernama debug di dalamnya (sesuaikan letak direktori anda).screenshot:

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.screenshot:

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.



No comments:

Post a Comment