Binary Translation Analisis Self Modifying Code Menggunakan Dynamic Binary Instrumentation

II.14 Intermediate Representation

IR atau sering disebut bahasa tingkat menengah merupakan representasi program diantara sumber kode dan biner assembly. Hal tersebut sangat independen tergantung pada compiler maupun interpreter-nya. Representasi dapat digambarkan melalui graph seperti AST Abstract Syntax Tree maupun biner dalam bytecode. Bytecode mempunyai tujuan retargetable untuk merekonstruksi kembali kedalam biner. Pada dasarnya IR memiliki contoh padanan menampilkan algortitma sebagai berikut: if x + 2 5 y = 2; else y = 3; x++; t = x + 2 if t 5 goto l1 y = 3 goto l2 l1: y = 2 l2: x = x + 1

II.15 Reverse Engineer

Reverse engineer dalam dunia komputer adalah orang yang mempunyai tugas merekayasa hasil objek baik perangkat keras maupun lunak untuk mengubah atau mengembalikkan informasi sumbernya. Pada biner aktivitasnya meliputi membaca kode mesin assembly untuk program executable dan membaca hexademical untuk objek lainnya seperti gambar atau video yang kemudian direplikasi atau patching menjadi sesuai keinginan reverse engineer. Terdapat bermacam-macam teknik reverse engineering untuk perangkat lunak diantaranya melakukan analisis secara statisdisassembly langsung pada biner program hingga memasukkanya dalam ruang lingkup debugger. Beberapa reverse engineer melakukan instrumentasi atau menyisipkan program bantuan untuk melakukan analisis secara otomatis dan bermain di area memori. Untuk reverse engineer yang tidak biasa dengan hal tersebut biasanya menggunakan intermediate representation sebagai acuan dalam mengolah data yang menjadi optimasi. 23 BAB III ANALISIS SELF-MODIFYING CODE DAN PERANCANGAN DYNAMIC BINARY INSTRUMENTATION III.1 Analisis Sistem Subbab analisis ini membahas mengenai analisis masalah, analisis biner program, analisis kebutuhan nun fungsional, analisis teknik Self-Modifying Code dan perancangan Dynamic Binary Instrumentation. III.1.1 Analisis Masalah Masalah yang menjadi latar belakang pada penelitian ini adalah bagaimana menganalisis Self-Modifying Code setelah dikompilasi ke dalam biner program untuk memahami cara kerjanya menggunakan metode DBIDynamic Binary Instrumentation. Adapun spesifikasi masalah adalah pengaruh Self-Modifying Code sebagai usaha anti analisis dalam membuat proses debugging menjadi sulit, kendala Dynamic Binary Instrumentation dalam menganalisis program serta konfigurasi environment yang berbeda-beda. III.1.2 Analisis Biner Program Analisis Biner adalah proses menganalisis dan menggambarkan bagaimana program dalam bekerja menjalankan tugasnya. Teknik analisis biner memiliki ruang lingkup yang luas. Selain meliputi biner yang melibatkan sistem operasi, analisis biner juga memodelkan aspek –aspek yang terkait dengan instruksi independen arsitektur. Instruksi yang perlu diketahui untuk menganalisis program Self-Modifying Code adalah transfer kontrol tidak kondisional seperti: Tabel III.1 Transfer Kontrol Instruksi Keterangan JMP JMPJump adalah transfer kontrol satu arah dan tidak menyimpan alamat kembali di stack