BELAJAR MEMBUAT ANTIVIRUS SENDIRI:
MENGGUNAKAN ENGINE ANSAV
By:[girrel13]
Kurang puas dengan antivirus yang Anda gunakan?, atau sekedar penasaran   dengan cara membuat antivirus? Jika memang benar demikian kenapa tidak   mencoba membuat antivirus sendiri? Pasti lebih asyik, selain menambah   pengetahuan kita tentang antivirus juga untuk mengisi waktu-waktu   senggang dengan mencoba bermain-main dengan virus, sehingga diharapkan   tidak ada lagi ketakutan yang berarti akan virus komputer.
Dalam pemrograman antivirus memang sangat dibutuhkan pengetahuan   tentang alghoritma, dimana hal ini penting untuk membangun engine   detektor virus, misalnya seperti menggunakan alghoritma kalkulasi CRC   atau MD5 sebagai engine detektornya. Lalu permasalahannya apa? Apakah   Anda sudah cukup mengetahui tentang alghoritma yang dipakai dan tehnik   yang digunakan untuk mendeteksi virus? Saya yakin belum banyak yang   mengetahuinya lebih-lebih pada tehniknya, sekalipun Anda seorang   programmer, mengapa? Karena walaupun Anda menguasai berbagai macam   alghortima, tetapi belum tentu Anda mengetahui cara menjadikan   alghoritma tersebut menjadi engine antivirus, karena selain membutuhkan   pengetahuan tentang alghoritma Anda juga membutuhkan paling tidak   sedikit pemahaman tentang struktur file eksekutabel. Sedangkan struktur   eksekutabel akan tampak rumit untuk dipelajari bagi yang masih awam   lebih-lebih yang masih belum tahu apa-apa tentang komputer.
Saya akan memberikan beberapa contoh yang mudah dan sederhana dalam   membuat antivirus. Berbahagialah karena disini Anda tidak harus   mengetahui banyak tentang alghoritma-alghoritma yang sulit, Anda cukup   mengetahui sedikit tentang dasar-dasar pemrograman baik menggunakan   bahasa Visual Basic, C, C++ atau Delphi. Kok bisa? Ya karena saya telah   membangun engine ansav yang saya buat dalam bentuk file DLL (Dynamic   Link Library) khusus saya buat untuk mempermudah membuat antivirus   sendiri. File tersebut bisa di download di sini.
Sedikit tentang file DLL ini
File DLL yang saya buat ini mengandung engine virus detektor yang   digunakan antivirus ansav untuk mendeteksi virus-virus lokal masa kini.   Anda bisa dengan mudah menggunakan fungsi-fungsi yang ada pada file DLL   ini untuk mendeteksi virus, contoh untuk memeriksa apakah suatu file   merupakan virus, Anda hanya perlu membuat perintah seperti format   berikut :
CheckWithAnsav(FileYangDicek, NamaVirus, BesarTampungan)
Sedangkan contoh penggunaanya seperti berikut :
retval = CheckWithAnsav (“C:\readme.txt”,Buffer,nSize)
Analisa :
Fungsi CheckWithAnsav akan mencoba memeriksa file “readme.txt” yang   terletak pada drive “C:\”, apabila file “readme.txt” mengandung virus   maka nilai pengembalian dari fungsi tersebut akan berupa nilai 1 yang   pada contoh listing diatas diletakkan pada variabel “retval”, sebaliknya   nilai pengembalian akan berupa 0 apabila file tidak mengandung virus.   Lalu Buffer dan nSize pada listing diatas itu apa? Buffer adalah   tampungan yang nantinya berisi nama virus yang terdeteksi apabila file   “readme.txt” mengandung virus, tetapi tampungan ini akan kosong apabila   virus tidak terdeteksi (file bersih), sedangkan nSize adalah jumlah   karakter pada Buffer. Jadi apabila file “readme.txt” mengandung virus   “gombal” misalnya maka Buffer akan birisi text “W32/Gombal” dan nSize   akan berisi nilai 10 (jumlah dari karakter “W32/Gombal”).
Mudah bukan?
Se-instan itukah?, kalau memang benar semudah itu penggunaannya lalu   bagaimana dengan kemampuannya? Tenang.., tentang kemampuan jangan   khawatir, engine ansav ini merupakan engine detektor virus tercepat saat   ini di Indonesia, karena pada basis pemrogramannya sendiri ansav   menggunakan bahasa assembly (low level language). Pada test yang saya   lakukan untuk men-scan semua virus yang saya koleksi semuanya berjumlah   314 virus dan ditest pada nootebook Pentium 2 Celleron dengan memori  128  MB, pada testnya hanya membutuhkan waktu sekitar 1,5 detik untuk   men-scan semua file bervirus sampai habis. Walaupun begitu engine ini   memiliki tingkat keakuratan yang tinggi. Jika Anda tidak percaya dengan   yang saya katakan, Anda bisa mencobanya sendiri dengan menggunakan spek   komputer yang sama dengan diatas, tetapi Anda bisa juga mencobanya  pada  berbagai spek yang berbeda, karena memang belum saya coba pada  komputer  dengan spek lain.
Dilihat dari pemrogramannya yang dibuat dengan basis low level   language assembly apakah bisa DLL ini dipakai pada kompiler-kompiler   tingkat tinggi seperti Visual Basic, C++, dan Delphi? Bisa!, engine ini   bisa berjalan pada berbagai macam jenis kompiler yang ada saat ini,   untuk itu saya sudah menyertakan contoh source codenya dalam 3 tingkatan   bahasa, bahasa tingkat rendah (low level language) menggunakan  Assembly  32 bit, Bahasa tingkat menengah (middle level language)  menggunakan C,  dan bahasa tingkat tinggi (high level language)  menggunakan C++ dan  Visual Basic.
Sepertinya Anda sudah mulai bosan membacanya, okeh sekarang kita  mulai saja pelajarannya.
Mulai Belajar
Apa yang akan Anda lakukan untuk membuat seseorang mau membantu Anda   untuk menunjukkan jalan ke suatu tempat yang Anda belum ketahui? Ya..,   Anda bisa menanyakan alamat tempatnya pada orang tersebut, sukur-sukur   orang tersebut sekalian bersedia mengantarkan Anda sampai tujuan. Tetapi   apakah orang yang belum begitu mengenal Anda akan begitu saja bersedia   untuk mengantarkan Anda? Walaupun mungkin hal ini terjadi, tetapi saya   yakin prosentase kemungkinan hanya berkisar antara 1-5% saja.
Oleh karena itulah sebelum kita memulai praktek pada penulisan   listing, terlebih dahulu akan saya perkenalkan Anda kepada DLL ansav   ini.
Kalau yang sebelumnya pengenalan sudah saya tuliskan di atas pada   bagian “Sedikit tentang DLL ini” tetapi itu hanya sedikit lihatlah kata   pertama pada judul tersebut, diAndaikan Anda adalah seorang yang baru   saja menemukan orang yang dianggap mampu untuk menunjukkan jalan, maka   bagian diatas tadi hanya seperti Anda baru saja mengucapkan “Misi…   numpang tanya…”, nah sekarang adalah saatnya Anda untuk membujuk orang   itu untuk mengantarkan Anda pada tujuan, dengan cara pertama-tama   berkenalan dan sedikit berbasa-basi… he..he..he.. kayaknya cara saya   menggambarkan terlalu berlebihan, maklum saya oran]ngnya termasuk orang   yang suka mengAndai-Andai dan menghayal tinggiiiiii banget (hanya yang +   bukan yang –, kalaupun ada cuma sedikit koq. he..he..he..). Tetapi   semua ini saya maksudkan agar proses belajar tidak membosankan dan   berharap agar lebih mudah untuk dipahami.
Lebih detail tentang DLL ini
Dibuat menggunakan bahasa ….. (ya saya tahu Anda sudah mengetahuinya di  bagian pengenalan pertama diatas)
Nama file asli : “ansavcore.dll”
Memiliki ukuran sangat kecil, pada versi awalnya memiliki ukuran16 KB.   Anda tidak perlu lagi khawatir untuk membawanya kemana-mana, karena   tidak berat sehingga tidak membutuhkan tukang pikul untuk membawanya. 

Memiliki kecepatan scan tinggi. Pada core enginenya hanya menggunakan   sekitar 269 instruksi dasar prosesor jenis x386, dan 18 fungsi eksternal   termasuk lokal dan API-nya. Bandingkan dengan instruksi yang  dihasilkan  oleh kompiler bahasa tingkat tinggi yang bisa mencapai bukan  hanya  ratusan bahkan bisa sampai ribuan instruksi dan fungsi eksternal  yang  saling berlompat-lompatan walaupun dengan arsitektur kerja yang  sama  dengan yang saya buat. Untuk perbandingannya, Anda bisa lihat pada   kompiler tingkat tinggi Visual Basic 6.
Mampu berjalan di sistem operasi Windows 98/ME/2K/XP untuk VISTA belum   dicoba. Sehingga Anda lebih leluasa untuk mengembangkan antivirusnya.
Pada versi waktu artikel ini mulai ditulis yakni 1.0.0 sudah memiliki 6  fungsi yang siap untuk digunakan, diantaranya:
CheckWithAnsav
AnsavVirusFirst
AnsavVirusNext
AnsavVirusClose
AnsavVirusCount
AnsavGetVersion
Keterangan tentang fungsi-fungsi tersebut :
1. CheckWithAnsav
Membutuhkan 3 parameter, berfungsi untuk memeriksa file dari virus.  Fungsi ini memiliki prototipe :
Int CheckWithAnsav (
IN LPSTR File,
OUT LPSTR VirusName,
IN OUT PULONG nSize
);
Note: Prototipe fungsi di atas ditulis dalam format bahasa C. Disini   saya akan memakai standar bahasa C dalam penulisan prototipe   selanjutnya.
Fungsi ini akan mencoba untuk memeriksa file yang alamat (path) nya   diletakkan pada parameter File, apabila virus terdeteksi pada file yang   di-scan maka nama virus akan diletakkan pada parameter kedua VirusName,   sedangkan parameter terakhir yaitu nSize adalah jumlah karakter dari   parameter VirusName. Untuk nSize nilai harus terlebih dahulu diset   dengan 30 atau MAX_VIRUSNAME_LENGTH.
Const MAX_VIRUSNAME_LENGTH = 30
Selanjutnya nSize akan menghasilkan output berupa jumlah karakter   nama virus yang terdeteksi. Apabila terdeteksi adanya virus maka nilai   pengembalian dari fungsi ini adalah 1 atau AN_VIRUS_DETECTED.
Const AN_VIRUS_DETECTED = 1
Dan akan menghasilkan nilai 3 atau AN_SCAN_ERROR pada pengembaliannya   apabila dalam operasinya fungsi ini mengalami kesalahan atau terjadi   error. Sedangkan apabila file tidak ditemukan maka akan memberikan nilai   pengembalian 2 atau ERROR_FILE_NOT_FOUND.
Const AN_SCAN_ERROR = 3
Const ERROR_FILE_NOT_FOUND = 2
2. AnsavVirusFirst
Membutuhkan 2 parameter, berfungsi untuk meng-enumerasikan, atau   mendapatkan seluruh nama-nama virus yang ada pada database engine ansav.   Adapun 2 parameter yang dibutuhkan adalah parameter VirusName dan   nSize, parameter VirusName adalah alamat tempat tampungan untuk nama   pertama virus pada data base virus ansav, sedangkan nSize adalah jumlah   karakter pada tampungan VirusName.
Fungsi ini meneghasilkan nilai pengembalian berupa handel hFind yang   nantinya digunakan untuk mendapatkan nama-nama virus selanjutnya   menggunakan fungsi ke 3 AnsavVirusNext.
HANDLE AnsavVirusFirst (
OUT LPSTR VirusName,
IN OUT LONG nSize
);
Apabila operasi yang dilakukan fungsi ini gagal maka nilai   pengembaliannya adalah 0 atau NO_MORE_VIRUSES. Dan akan menghasilkan   nilai pengembalian -1 atau INVALID_HANDLE_VALUE apabila terjadi   kesalahan pada waktu operasinya.
Const NO_MORE_VIRUSES = 0
3. AnsavVirusNext
Membutuhkan 3 parameter, berfungsi untuk mendapatkan nama-nama virus   selanjutnya dengan berdasarkan handel yang telah didapatkan dari fungsi   ke 2 (AnsavVirusFirst), handel diletakkan pada parameter pertamanya   yaitu hFind, sedangkan parameter kedua File berisi alamat tampungan yang   nantinya akan berisi nama virus selanjutnya, dan parameter terakhir   nSize berisi jumlah karakter nama virus yang ada pada parameter   VirusName.
Int AnsavVirusNext (
IN HANDLE hFind,
OUT LPSTR VirusName,
IN OUT PULONG nSize
);
Fungsi ini akan menghasilkan nilai pengembalian 0 atau NO_MORE_VIRUSES   apabila daftar virus telah habis dibaca, dan akan menghasilkan nilai   pengembalian -1 atau INVALID_HANDLE_VALUE apabila handel salah atau   terjadi error pada waktu operasinya.
4. AnsavVirusClose
Membutuhkan 1 parameter hFind berupa handel yang didapat dari fungsi   ke 2 (AnsavVirusFirst). Fungsi ini akan menutup sesi pengumpulan daftar   nama-nama virus pada database engine-nya.
Fungsi ini memiliki prototipe :
Int AnsavVirusClose(
IN HANDLE hFind
);
Menghasilkan nilai pengembalian 1 apabila operasi berhasil, dan   menghasilkan nilai -1 apabila operasi gagal atau terjadi kesalahan pada   operasinya.
5. AnsavVirusCount
Tidak membutuhkan parameter apapun. Berfungsi untuk mendapatkan   jumlah keseluruhan virus yang ada pada database ansav engine. Jumlah   keseluruhan virus didapat dari nilai pengembaliannya.
Fungsi ini memiliki prototipe :
ULONG AnsavVirusCount (Void);
6. AnsavGetVersion
Fungsi terakhir ini membutuhkan parameter yang merujuk pada alamat   memori berkapasitas 12 byte dan dibagikan menjadi 3 jenis versi. 4 byte   untuk versi major, 4 byte selanjutnya untuk versi minor, 4 byte  terakhir  untuk versi revisi. Untuk ini sudah saya siapkan bentuk  parameternya  berupa struktur.
typedef struct _ANSAV_VERSION_INFO {
UINT dwMajor;
UINT dwMinor;
UINT dwRevision;
} ANSAV_VERSION_INFO, *PANSAV_VERSION_INFO;
VOID AnsavGetVersion (
PANSAV_VERSION_INFO lpAvi
);
Cara penggunaan fungsinya ditulis dalam bahasa Visual Basic :
Dim avi As ANSAV_VERSION_INFO
Call AnsavGetVersion(avi)
Hasil yang berupa versi engine ansav akan diletakkan pada variabel   “avi”. Untuk mendapatkan versi major bisa dengan perintah “avi.dwMajor”,   untuk versi minor bisa dengan perintah “avi.dwMinor”, sedangkan untuk   versi revisinya bisa dengan perintah “avi.dwRivision”.
Setelah masa perkenalan dan basa-basi selesai, sebenarnya Anda harus   sudah diantar ke tujuan Anda oleh orang yang baru Anda kenali tersebut,   tetapi apabila tidak demikian, berarti saya salah duga, karena bisa  saja  ternyata yang Anda kenali adalah orang buta misalnya 

 .
Sebelum Anda memulai mempraktekkannya, paling tidak Anda harus   terlebih dahulu memiliki segala perlengkapan yang akan dibutuhkan nanti   dalam pembelajaran ini.
Adapun perlengkapan yang dibutuhkan adalah :
1. Kompiler
Kompiler ini berfungsi untuk meng-kompil atau istilahnya membangun   sebuah aplikasi software, dimana aplikasi yang dimaksud atau yang akan   kita buat adalah berupa antivirus sederhana.
Kompiler yang diperlukan bisa menggunakan Visual Basic, C, C++ atau  Delphi.
2. Debugger (optional)
Jika Anda memang seorang yang selalu melakukan kesalahan atau paling   tidak orang yang selalu berhati-hati dalam membuat program saya  sarankan  untuk tidak pernah lupa melakukan debugging pada setiap  aplikasi yang  baru Anda buat.
Proses debugging sendiri itu digunakan untuk menganalisa jalannya   suatu program dan biasanya untuk mencari letak kesalahan pada suatu   sistem aplikasi. Pada beberapa kompiler tingkat tinggi biasanya sudah   disertakan program debugger sendiri.
Tapi ini hanya optional, artinya Anda tidak harus atau diwajibkan   untuk memiliki program debugger dengan catatan Anda memang orang yang   PeDe abis dan orang yang ma’sum istilahnya orang yang tidak pernah   melakukan kesalahan 

  , tapi tidak ada satupun orang di dunia ini  yang tidak pernah  melakukan kesalahan. Jadi akan selalu saya sarankan  (recommended) untuk  para programmer khususnya pemula.
Adapun jenis-jenis debugger ada sangat banyak bertebaran di   sana-sini, Anda bisa memilih sesuai dengan selera dan kesukaan Anda.   Contoh macam-macam debugger eksternal yang nge-tren dan banyak dipakai   pada abad ini : OllyDebug, IDA Pro, WinDbg dll.
3. Roti coklat (recommended)
Selain 2 perlengkapan diatas saya tambahkan lagi perlengkapan ketiga   ini dengan sifat recommended yang artinya saya sarankan kepada Anda  yang  mudah bosan dan frustasi. Tapi walaupun begitu perlengkapan ketiga  ini  juga sama optionalnya dengan perlengkapan kedua yaitu program  debugger,  artinya Anda tidak harus tapi sangat saya sarankan,  dimaksudkan untuk  menghilangi kejenuhan ketika Anda sudah mulai muak  membaca tutorial ini,  pejamkan mata… dan makanlah satu coklat lalu  ambil nafas panjang  kira-kira 1-2 menit, setelah itu Anda coba pelajari  kembali, pasti akan  lebih plong dan lebih segar meneruskan belajarnya.
Tentang recommended coklat ini sendiri tidak harus coklat, Anda bisa   dengan makanan-makanan kesukaan Anda untuk dibarengi ketika Anda sedang   dalam proses belajar. Karena sebenarnya coklat itu sendiri adalah   makanan kesukaan saya 

  . tapi jangan salah loh.., menurut para  ahli ternyata makanan yang  mengandung banyak unsur coklat memiliki  pengaruh tersendiri yang dapat  merangsang sel-sel otak manusia, tentang  benar atau tidaknya Wallahu  a’lam.:D tapi bukan karena para ahli  mengatakan seperti itu lalu saya  ikut-ikutan makan coklat, yee… saya  memang sudah mulai suka makan  coklat sejak umur 5 tahun.
Okeh, dari pada banyak bicara yang gak kunjung selesai, mending kita   mulai saja tutorialnya. Untuk tutorialnya akan saya berikan   contoh-contohnya dalam penggunaan 6 fungsi yang sudah saya sebutkan   diatas, adapun bahasa pemrograman yang akan saya gunakan untuk contoh   dalam penulisan listing-nya adalah menggunakan 3 tingkatan bahasa   seperti yang pernah saya singgung diatas, low, middle dan high,   Assembly, C dan Visual Basic. Tetapi urutannya akan saya buat   berdasarkan dengan pemrograman tingkat tinggi terlebih dahulu, yakni   Visual Basic.
Oh ya…, jangan lupa sebelum Anda mulai berpraktek, terlebih dahulu   letakkan file “ansavcore.dll” pada direktori tempat Anda meletakkan   program yang akan Anda buat atau pada direktori project Anda.
1. CheckWithAnsav
Fungsi pertama yang akan saya contohkan adalah fungsi CheckWithAnsav,   informasi tentang fungsi ini bisa Anda baca pada tulisan sebelumnya.
Contoh penggunaan fungsi CheckWithAnsav dalam bahasa Visual Basic :
Sebelum Anda bisa menggunakan fungsi ini dari file library   “ansavcore.dll”, terlebih dahulu Anda harus mendeklarasikan beberapa   kosntanta dan fungsinya. Adapun bentuk deklarasi fungsi ini pada bahasa   Visual Basic adalah :
‘ Contoh penggunaan fungsi CheckWithAnsav
‘ pada bahasa Visual Basic
‘
‘ Ditulis oleh : [4NV|e]
Const MAX_VIRUSNAME_LENGTH = 30
Const ERROR_FILE_NOT_FOUND = 2
Const AN_SCAN_ERROR = 3
Const AN_CLEAN = 0
Private Declare Function CheckWithAnsav Lib “ansavcore.dll” _
(ByVal FileName As String, ByVal VirusName As String, nSize As Long) As  Long
Note: Karena ruang halaman yang sempit, maka tAnda “_” (underscore) pada   contoh listing di atas saya pergunakan sebagai tAnda bahwa listing   tersebut diteruskan pada baris selanjutnya. Cara ini akan saya   pergunakan pada penulisan listing dalam bahasa Visual Basic selanjutnya.
Setelah Anda menuliskan deklarasinya langkah selanjutnya bisa langsung  menuliskan listing kodenya :
Private Sub PeriksaFile()
Dim RetVal As Long
Dim nSize As Long
Dim Buff As String * MAX_VIRUSNAME_LENGTH
Dim NamaVirus As String
nSize = MAX_VIRUSNAME_LENGTH
RetVal = CheckWithAnsav(“C:\file_dicurigai.exe”, _
Buff, nSize)
If RetVal = 1 Then
NamaVirus = Left$(Buff, nSize)
Call MsgBox(“File ini mengandung virus : ” & _
NamaVirus & “, Hati-hati!! 

 “)
Else
Select Case RetVal
Case ERROR_FILE_NOT_FOUND
Call MsgBox(“File yang Anda maksud tidak ditemukan!.”)
Case AN_SCAN_ERROR
Call MsgBox(“Terjadi kesalahan dalam proses scanning.”)
Case AN_CLEAN
Call MsgBox(“File ini bersih dari virus.”)
End Select
End If
End Sub
Analisa kode :
nSize = MAX_VIRUSNAME_LENGTH
RetVal = CheckWithAnsav(“C:\file_dicurigai.exe”, _
Buff, nSize)
Set terlebih dahulu variabel nSize dengan nilai 30 atau yang sudah   dibuatkan konstantanya yaitu MAX_VIRUSNAME_LENGTH. Nilai 30 adalah   alokasi maximal untuk menampung nama virus. Kemudian periksa file   “file_dicurigai.exe” yang ada pada drive “C:\”, tentang nama file yang   akan diperiksa Anda bisa menentukan namanya sendiri. Untuk memeriksa   file tersebut gunakan fungsi CheckWithAnsav dan letakkan nilai   pengembaliannya pada variabel RetVal.
If RetVal = 1 Then
NamaVirus = Left$(Buff, nSize)
Call MsgBox(“File ini mengandung virus : ” & _
NamaVirus & “, Hati-hati!! 

 “)
Kemudian cek berapakah nilai yang dihasilkan dari pengembalian fungsi   CheckWithAnsav yang ada pada variabel RetVal, jika (if) nilai pada   variabel RetVal = 1 berarti file tersebut (“file_dicurigai.exe”).   mengandung virus.
Kemudian apabila memang virus terdeteksi maka dapatkan nama virus   yang terdeteksi tersebut menggunakan perintah Left untuk men-trim   (memperpendek jangkauan string) dan letakkan nama tersebut pada variabel   NamaVirus, lalu tampilkan pesan “File ini mengandung virus : “,  apabila  virus yang terdeteksi adalah virus “gombal” maka akan  ditampilkan pesan  seperti berikut :
“File ini mengandung virus : W32/Gombal, Hati-hati!! 

 “
Else
Select Case RetVal
Case ERROR_FILE_NOT_FOUND
Call MsgBox(“File yang Anda maksud tidak ditemukan!.”)
Case AN_SCAN_ERROR
Call MsgBox(“Terjadi kesalahan dalam proses scanning.”)
Case AN_CLEAN
Call MsgBox(“File ini bersih dari virus.”)
End Select
End If
End Su
Apabila virus tidak atau belum terdeteksi, maka periksa status   operasi. Perintah Select Case RetVal disini digunakan untuk memeriksa   status operasi apakah berhasil atau terjadi error. Apabila nilai   pengembalian berupa ERROR_FILE_NOT_FOUND berarti file yang dimakusd   untuk di-scan tidak ada (tidak eksis) maka tampilkan pesan kesalahan   “File yang Anda maksud tidak ditemukan!”. Apabila nilai pengembalian   berupa AN_SCAN_ERROR berarti terjadi kesalahan dalam melakukan scanning   pada file tersebut, maka tampilkan pesan “Terjadi kesalahan dalam  proses  scanning”. Terakhir apabila nilai pengembalian berupa 0 atau  AN_CLEAN  berarti file tersebut tidak mengandung virus atau bersih.
Contoh penggunaan fungsi CheckWithAnsav dalam bahasa C :
/*
Contoh penggunaan fungsi CheckWithAnsav
pada bahasa C
Ditulis oleh : [girrel13]
*/
#include <windows.h>
#include <stdio.h>
int const AN_VIRUS_DETECTED = 1;
int const AN_SCAN_ERROR = 3;
int const MAX_VIRUS_LENGTH = 30;
typedef STDCALL int _CheckWithAnsav(
LPSTR FileName,
LPSTR VirusName,
PULONG nSize
);
static _CheckWithAnsav *CheckWithAnsav;
void PeriksaFile(void);
void PeriksaFile(void){
char vName[30];
unsigned long nSize=MAX_VIRUS_LENGTH;
CheckWithAnsav = (_CheckWithAnsav*)
GetProcAddress(LoadLibrary(“ansavcore.dll”),
“CheckWithAnsav”);
int RetVal = CheckWithAnsav( “C:\file_dicurigai.exe”,
vName,&nSize);
if (RetVal==AN_VIRUS_DETECTED){
printf(“\nFile ini mengandung virus : %s”
“, Hati-hati!! 

 “,vName);
} else {
switch (RetVal) {
case ERROR_FILE_NOT_FOUND:
{
printf(“\nFile yang Anda maksud “
“tidak ditemukan!.”);
} break;
case AN_SCAN_ERROR:
{
printf(“\nTerjadi kesalahan dalam “
“proses scanning.”);
} break;
default:
{
printf(“\nFile ini bersih dari virus.”);
}
}
}
}
Analisa kode pada bahasa C tidak jauh berbeda dengan yang menggunakan   bahasa Visual Basic, kedua-duanya hampir memiliki cara kerja yang sama,   jadi tidak dibutuhkan analisa kode lagi disini. Saya yakin Anda bisa   memahaminya.
Contoh penggunaan fungsi CheckWithAnsav dalam bahasa Assembly :
Comment ~
Contoh penggunaan fungsi CheckWithAnsav
pada bahasa Assembly
Ditulis oleh : [girrel13]
~
.386
.model flat, stdcall
option casemap: none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.const
AN_CLEAN             equ 0
AN_VIRUS_DETECTED    equ 1
AN_SCAN_ERROR        equ 3
MAX_VIRUS_LENGTH     equ 30
.data?
_ScanWithAnsav       dd ?
nSize                dd ?
vName                db MAX_VIRUS_LENGTH dup(?)
Buffer               db 256 (?)
.data
szAppName            db ‘Ansav in asm’,0
szAnsavCoreDll       db ‘ansavcore.dll’,0
szScanWithAnsav      db ‘CheckWithAnsav’,0
szFile               db ‘C:\file_dicurigai.exe’,0
szVirusTdtks         db ‘File ini mengandung virus : %s, ‘
db ‘Hati-hati!! 

 ‘,0
szBersih             db ‘File ini bersih dari virus.’,0
szFileTidakAda       db ‘File yang Anda maksud tidak ditemukan!’,0
szError              db ‘Terjadi kesalahan dalam proses scanning.’,0
.code
start:
PeriksaFile proc
push    offset szAnsavCoreDll
call    LoadLibrary
push    offset szScanWithAnsav
push    eax
call    GetProcAddress
mov     _ScanWithAnsav,eax
mov     nSize,MAX_VIRUS_LENGTH
push    offset nSize
push    offset vName
push    offset szFile
call    _ScanWithAnsav
test    eax,eax
jz      bersih
cmp     eax,AN_VIRUS_DETECTED
je      virus_terdeteksi
cmp     eax,ERROR_FILE_NOT_FOUND
je      file_tidak_ada
cmp     eax,AN_SCAN_ERROR
je      error
jmp     tamat
virus_terdeteksi:
push    offset vName
push    offset szVirusTdtks
push    offset Buffer
call    wsprintf
add     esp,4*3
lea     eax,Buffer
call    tampilkan_pesan
jmp     tamat
file_tidak_ada:
lea     eax,szAppName
call    tampilkan_pesan
jmp     tamat
error:
lea     eax,szAppName
call    tampilkan_pesan
jmp     tamat
bersih:
lea     eax,szAppName
call    tampilkan_pesan
tamat:
xor     eax,eax
ret
tampilkan_pesan:
push    0
push    offset szAppName
push    eax
push    0
call    MessageBox
ret
PeriksaFile endp
end start
Sama dengan pada bahasa-bahasa sebelumnya, cara kerjanya pada bahasa  assembly juga sama.
Untuk menghemat waktu, tenaga dan pikiran 

  , contoh fungsi-fungsi yang lain nantinya  akan saya tulis dalam satu  arsip saja, dengan pembagian berdasarkan  bahasanya. Contoh akan saya  tulis dengan full source code dan akan saya  jadikan satu dalam file  terkompresi (zip). Dan bisa di download pada  postingan selanjutnya.  Jadi intinya saya hanya akan mengatakan kalau  artikel ini adalah “masih  bersambung…” hiks… sulit banget sih  ngomongnya… ~_~”