Kamis, 17 November 2011

UJIAN AKHIR SEMESTER PEMROGRAMAN BAHASA RAKITAN PRAKTEK

PEMROGRAMAN BAHASA RAKITAN PRAKTEK
Dosen Nahar Mardiyantoro,M.Kom


NAMA         : ROHMATUN YULIANI
NIM             : SIA 201029

CODING :
.model small
.code
org 100h
mulai:
                jmp proses
                kal db 13,10,'Enter  Password : $'
                kal2 db 10,'WELCOME...!!$'
                kal3 db 10,'NO ACCESS...!!$'
               
proses : mov ah, 09h
                lea dx, kal
                int 21h
               
                mov ah, 07h
                int 21h
               
                cmp al, 'F'
                je mulai1
                jne proses1
               
proses1 : mov ah, 09h
                lea dx, kal3
                int 21h
                int 20h

proses2 : mov ah, 09h
                lea dx, kal2
                int 21h
                int 20h
mulai1 :
                mov ah, 02h
                mov dl, '*'
                int 21h

                mov ah, 07h
                int 21h
                cmp al, 'I'
                je mulai2

                jne proses

mulai2:
                mov ah, 02h
                mov dl, '*'
                int 21h

                mov ah, 07h
                int 21h
                cmp al, 'X'
                je mulai3
                               
                jne proses2

mulai3:
                mov ah, 02h
                mov dl, '*'
                int 21h

                mov ah, 09h
                lea dx, kal2
                int 21h

int 20h
end mulai

Minggu, 13 November 2011

PEMROGRAMAN BAHASA RAKITAN TEORI (UAS)

UJIAN AKHIR SEMESTER TEORI
PEMROGRAMAN BAHASA RAKITAN
Dosen : Nahar Mardiyantoro,M.Kom

1. Pemahaman atau analogi tentang No.Service dan No Interupsi :
No Interupsi
Interrupt atau Interupsi  secara harfiah dalam bahasa Indonesia diartikan menyela, selaan atau menjegal , istilah kerennya interupsi. Dalam kegiatan kehidupan sehari - hari bisa diibaratkan sebagai  suatu proses berjalan , namun belum selesai proses tersebut melakukan tugasnya sudah dilaksanakan proses yang lain lagi. Intrupsi atau perintah pada mikrokomputer adalah suatu permintaan khusus kepada mikroposesor untuk melakukan sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan dahulu apa yang sedang dikerjakannya dan melakukan apa yang diminta oleh yang menginterupsi yang disusun berbentuk singkatan kata yang disebut Mnemonic . Interupsi pada DOS merupakan interupsi dari software sistem operasi yang terdiri dari  Int 20h  untuk kembali ke DOS dan int 21h = interupsi/interap merupakan perintah untuk mengeksekusi /memunculkan hasil untuk operasi input/output . 

No Service
Pada DOS (Disk Operating System) untuk mengerjakan beberapa intruksi maka digunakan pasangan, sedangkan DOS memiliki banyak fungction service sehingga dibutuhkan No servis untuk menampilkan perintah No service merupakan nomor layanan pasangan dari nomor interupsi sehingga menghasilkan action tertentu. Apabila salah satu pasangan diubah atau tidak sesuai atau bukan pasangannya  antara interupsi dan no service maka hasil action akan berbeda bahkan mungkin terjadi eror.

2. Beberapa no service dan pembedanya yang biasa kita gunakan dalam pembuatan program asembly :
   int 21h , ah 01h
NO. INTERRUPT         = 21h
NO. SERVICE               = 01h
FUNCTION                   = Input 1 Karakter (Keyboard Input)
Mengamil Input Dari Keyboard (Standard Input Device), lalu menampilkan karakter ke layar (Standard Output Device) dan menyimpan karakter tersebut di AL. Penekanan tombol Ctrl-Break akan dicek. Jika tombol tersebut ditekan, interupt 23h akan dieksekusi.

INPUT        :                                                                                                                                                                 
                    AH              = 01H                                                                                         
 OUTPUT    :                  
                    AL               = Kode ASCII Hasil Input Tercetak di layar

int 21 h , ah 02h
NO.INTERRUPT  = 21h
NO SERVICE        = 02h
Fungsi = Output 1 Karakter (Character Output On Screen)
Menampilkan karakter dalam register DL ke standard output device.. Jika karakter dalam register DL adalah backspace (ASCII 8) kursor akan digerakkan ke kiri satu posisi (nondestruktif). Jika Ctrl-Break terdeteksi setelah output, INT 23h dieksekusi.
 
INPUT   :                                                           
        AH      = 02H                                        
        DL      = Kode ASCII

OUTPUT :      
        Karakter Tertulis Di Layar

int 21h, ah 03h
NO. INTERRUPT         = 21h
NO. SERVICE              = 03h
FUNCTION                   = Auxiliary Input (Standard Auxiliary Device Input)
Menunggu sebuah karakter dari standard auxiliary device, lalu menyimpan karakter itu ke register AL (Mengambil Masukan Dari Auxiliary Device Yang Aktif)

INPUT        :                                                                                                                        
                    AH              = 03H                                                                                                              
 OUTPUT    :                  
AL               = Kode ASCII (Karakter dari auxiliary device)

Int 21 h, ah 07h
NO. INTERRUPT         = 21h
NO. SERVICE              = 07h
FUNCTION                   = Input 1 Karakter Tanpa Echo Tidak Mengecek Ctrl-C (Direct Console Input Without Echo). Menunggu hingga sebuah karakter diketikkan dari standard input device dan menyimpannya ke register AL. Service ini sangat mirip dengan service 01h, hanya saja pada service ini karakter tak ditampilkan ke layar. Service ini tidak mengecek Ctrl-C atau Ctrl-Break. Service ini sering dipakai untuk pemasukan password karena tak menampilkan karakter yang diketikkan.

INPUT        :                                                                                                                                                                 
                    AH              = 07H      
                                                                                                                                                                                                                                                          OUTPUT    :                  
AL               = Kode ASCII Yang Ditekan

Int 21 h , ah 09h
NO. INTERRUPT  = 21h
NO. SERVICE    = 09h
FUNCTION       = Mencetak Satu Baris String (Print String).
Menampilkan karakter-karakter dalam string ke standard output device.
DS:DX merupakan Alamat Data yang dicetak yang diakhiri dengan tanda '$'.

INPUT   :                                                    
        AH      = 09H                                        
        DS      = Segment Variabel Yang Akan Dicetak
        DX      = Offset Variabel Yang Akan Dicetak

OUTPUT :      
        Kalimat Tercetak Di Layar


3. Berikut coding program untuk menampilkan satu karakter yang diinputkan melalui keyboard :
.model small
.code
org 100h
mulai:
    mov ah, 07h
    int 21h

    mov ah, 02h
    mov dl, al
    int 21h

    int 20h
end mulai

dari coding diatas bisa kita lihat hasilnya bila dimasukan dalam program asmbley yang dijalankan melalui DOS prompt


4. Anti Detection routines akan menjadi payung dari search dan copy,menghindari deteksi, baik oleh pengguna komputer maupun software, pendeteksi virus membatasi scope pencarian dan penduplikatan, menjalankan routine pada saat komputer sedang mengalami idle (stand by). Virus akan mencari, setelah ketmu dikunci dan dicopy , bagaimana mempersempit ruang lingkup pencarian kemudian pengcopyan dilakukan bila pc dalam keadaan idle/ diam.

Search  : bagian ini berfungsi untuk menemukan file atau lokasi baru yang akan dijadikan target berikutnya untuk diserang. Bagian ini juga menentukan bagaimana cara virus bereproduksi, apakah secara cepat atau lambat, apakah dapat menyerang sebagian atau seluruh bagian dari target

Copy : bagian ini berfungsi untuk meng-copy dirinya sendiri pada area yang telah ditentukan oleh search routine. Ukuran dari bagian ini bergantung pada kompleksitas dari virus yang di-copy. Sebagai contoh, virus yang menyerang file berekstensi COM umumnya berukuran lebih kecil daripada virus yang menyerang file EXE, karena file EXE memiliki struktur yang lebih kompleks, sehingga virus lebih sukar untuk melekatkan diri pada file EXE.
Sebagai contoh, bagian ini akan mengaktifkan virus jika selama lima menit tidak ada tombol keyboard yang ditekan,dengan asumsi pengguna tidak sedang menggunakan komputer. Kadang kala virus masih digabungkan dengan bagian lain seperti routine untuk merusak sistem yang diserang atau routine yang berfungsi hanya untuk lelucon.... "Ha! Gotcha ".....


5. Performance  pembuatan virus menggunakan bahasa assembly dibandingkan dengan bahasa pemrograman level tinggi :

Bahasa rakitan memungkinkan programmer untuk mengontrol serta memanfaatkan secara penuh kapabilitas yang terdapat atas suatu perangkat keras, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang memiliki banyak keterbatasan dalam pemanfaatan secara penuh suatu perangkat keras. Bahasa rakitan menjanjikan tingkat unjuk kerja yang maksimum karena sifatnya yang menerjemahkan secara langsung instruksi rakitan menjadi instruksi mesin, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang biasanya menerjemahkan sebuah instruksi menjadi sejumlah kode mesin.


Pembuatan virus dengan bahasa pemrograman level tinggi memiliki tingkat kompleksitas yang dimiliki oleh berbagai jenis virus dan worms ini dapat menyebabkan bertambahnya waktu yang diperlukan para peniliti virus untuk melakukan proses disassembly (pengubahan kembali kode mesin menjadi kode assembly) dan analisa.