BAB 2 DASAR TEORI Obfuscation
|
|
|
- Verawati Sumadi
- 9 tahun lalu
- Tontonan:
Transkripsi
1 BAB 2 DASAR TEORI Metode untuk meningkatkan obscurity disebut obfuscation. Menurut Collberg [6] et al. Obfuscation ialah suatu proses transformasi yang dilakukan pada sebuah obyek obyek di dalam suatu program (class, method, field, dan bagian lain dari program) untuk menghasilkan program lain yang memiliki karakteristik berikut: 1. memiliki perilaku yang sama dengan program asli (semantic-preserving) 2. lebih sulit dipahami atau di-reverse engineer 3. sulit untuk membuat tool yang dapat mentransformasikan balik program tersebut ke bentuk aslinya (atau tool semacam itu akan sangat lama dalam proses pengerjaannya) 4. meminimalkan pertambahan ruang dan waktu yang dibutuhkan dalam eksekusinya (dibandingkan eksekusi program asli) Untuk mengukur kualitas dari sebuah transformasi obfuscation, Collberg dan Thomborson [6] memberikan tiga jenis ukuran yang penting: 1. Potensi, adalah seberapa jauh obfuscation itu meningkatkan kompleksitas program 2. Resiliensi, adalah seberapa sulit untuk melakukan transformasi balik menggunakan program otomatis 3. Cost, adalah berapa execution time dan memory space tambahan yang dibutuhkan setelah program ditransformasi Dalam kaitannya dengan ukuran kompleksitas pada (1), Collberg [7] et al. juga memberikan ringkasan dari metrik-metrik yang umum dipakai dalam mengukur kompleksitas program: m1: Panjang program, dihitung dari banyaknya operator dan operand dalam program. Ukuran ini diusulkan oleh Halstead. 7
2 m2: Kompleksitas siklomatis (Cyclomatic complexity), dihitung dari banyaknya predikat dalam program. Ukuran ini diusulkan oleh McCabe. m3: Nesting complexity, dihitung dari berapa tingkat persarangan terbesar yang ada di ekspresi kondisional dalam program. Ukuran ini diusulkan oleh Harrison. m4: Kompleksitas aliran data, dihitung dari banyaknya referensi variabel antarblok dalam program. Ukuran ini diusulkan oleh Oviedo. m5: Kompleksitas struktur data, dihitung dari kompleksitas struktur data statis dalam program. Skalar memiliki kompleksitas 1, array memiliki kompleksitas berupa hasilkali antara dimensi array dengan kompleksitas elemen array, kompleksitas sebuah record diukur dari banyaknya field dan kompleksitasnya masing-masing. Ukuran ini diusulkan oleh Munson. 2.1 Klasifikasi Obfuscating Transformations Obfuscation dilakukan dengan menerapkan transformasi pada program sumber, menghasilkan program yang terobfuscate. Dalam Taxonomy Of Obfuscating Transformations, Collberg et al. [7] membagi transformasi untuk obfuscation menjadi empat kelompok besar A. Layout Obfuscation, obfuscation jenis ini dilakukan dengan menghilangkan informasi seperti komentar, nomor baris, dan merubah nama-nama identifier dalam program. B. Data Obfuscation, obfuscation jenis ini merubah representasi data di dalam memori dan mentransformasi semua pengaksesan data yang bersangkutan sehingga semantik asli penggunaan data tidak berubah. C. Control Obfuscation, merubah control-flow dengan memindahkan letak blokblok bytecode, merubah urutan instruksi, menambahkan predikat tersamar (opaque predicates [8] ). Control obfuscation dilakukan dengan transformasi yang merubah agregasi, urutan, ataupun komputasi aliran kendali. D. Preventive Transformation, termasuk di sini ialah transformasi yang bertujuan menjebak decompiler sehingga gagal dalam tugasnya. Jenis ini dibagi lagi menjadi targeted transformation (menjebak decompiler tertentu) 8
3 dan inherent transformation (memanfaatkan masalah yang umum dalam dekompilasi). Pada prakteknya, sebuah obfuscator akan menerapkan kombinasi dari macammacam metode transformasi untuk menghasilkan program yang ter-obfuscate dengan baik. Obfuscating Transformation (berdasarkan target transformasi) Layout obfuscation Transformasi Preventif Data Obfuscation Control Obfuscation Inheren Targeted Agregasi Agregasi Urutan Komputasi Penyimpanan dan pengkodean Urutan Gb. 2.1 Taksonomi obfuscation menurut Collberg, Thomborson, dan Low [7]. 2.2 Daftar Obfuscating Transformations Daftar ini berisi transformasi yang ditemukan dalam obfuscator-obfuscator yang menjadi subyek perbandingan Pengacakan nama Transformasi pertama ialah name obfuscation atau pengacakan nama. Collberg et al memasukkan transformasi ini ke ketegori Layout Obfuscation. Obfuscator generasi pertama hanya melakukan obfuscation jenis ini, termasuk ProGuard dan yguard. Tabel 2.1 Contoh name obfuscation Kelas Asli Method Asli Signature Kelas terobfuscate Method Signature 9
4 AlienEntity collidedwith void... (Entity) AlienEntity Move void... (long) -> P A void... (Entity) -> P A void... (long) AlienEntity sethorizontalm void... -> P A void... ovement (double) (double) AlienEntity dologic void... () -> P A void... () AlienEntity Draw void... () -> P B void... () AlienEntity getx int... () -> P A int... () AlienEntity gety int... () -> P B int... () Tiga kolom dari kiri menunjukkan nama asli, tiga kolom dari kanan menunjukkan nama setelah dilakukan name obfuscation. Empat entry terakhir menunjukkan eksploitasi spesifikasi penamaan di JVM yang lebih leluasa daripada spesifikasi penamaan bahasa pemrograman Java, yaitu bahwa di Java tidak dibolehkan ada dua fungsi yang hanya berbeda pada return value-nya. Hal ini dilarang oleh Java Language Specification (JLS 3.0 [11], butir 8.4.2) : It is a compile-time error to declare two methods with override-equivalent signatures (defined below) in a class. Two methods have the same signature if they have the same name and argument types. Meskipun demikian, hal ini bisa diterima oleh JVM asalkan method descriptornya berbeda (Java VM Specification 2.0 [15], subbab 4.6) : 4.6 Methods Each method, including each instance initialization method ( 3.9) and the class or interface initialization method ( 3.9), is described by a method_info structure. No two methods in one class file may have the same name and descriptor ( 4.3.3). 10
5 Butir : A method descriptor represents the parameters that the method takes and the value that it returns: MethodDescriptor: ( ParameterDescriptor* ) ReturnDescriptor Kesimpulannya ialah JVM memperhatikan parameter dan return type, dan bahasa Java hanya memperhatikan parameter. Hal serupa terjadi pada fields, pada sebuah kelas yang sama JVM membedakan field yang namanya sama dan berbeda tipenya, sedangkan Java hanya memperbolehkan field yang namanya berbeda. Resiliensi dari transformasi jenis ini tinggi, karena dibutuhkan pengerjaan manual untuk membalikkan nama-nama yang sudah dirubah Enkripsi String String yang ada di dalam kode merupakan titik awal reverse engineering yang umum (misalnya, melakukan pencarian string expired untuk memperkirakan klas mana yang mengandung rutin pembatas waktu). Dengan meng-encrypt string ini, reverse engineering akan menjadi lebih sulit. Semua obfuscator komersial menerapkan obfuscation jenis ini. Transformasi ini masuk ke kategori Data Obfuscation. Ditemukan dua variasi untuk enkripsi string yang dilakukan : a. melakukan decryption pada saat kelas diinisialisasi (Zelix KlassMaster, SmokeScreen) b. melakukan decryption pada saat string diakses (DashO) Pembalikan enkripsi bisa dilakukan. Untuk kasus DashO, bisa dibuat transformasi bytecode untuk mengganti string terenkripsi dengan yang sudah di-decrypt, dan menghilangkan instruksi pemanggilan rutin decrypt di bytecode, menghasilkan bytecode yang sama dengan sebelum terjadinya string encryption. Proof-of-concept telah dibuat dan listingnya ada di lampiran. Untuk kasus Zelix KlassMaster dan SmokeScreen, kelas bisa di-load, dan field-field static (di mana ia menyimpan string ter-decrypt setelah inisialisasi) dibaca. Proof-of-concept code yang melakukan ini 11
6 dapat dilihat di lampiran. Karena transformasi balik dapat dibuat, maka disimpulkan bahwa transformasi ini memiliki resiliensi rendah. Hasil dekompilasi Dava pada enkripsi string ZKM disajikan pada Gambar 2.2. package strs; import java.util.date; import java.io.printstream; public class Main1 static String astr; private static final String z; static long l3; int i1, $i4, $i5; char[] $r3, $r4, $r5; char $c6, $c8; $r3 = "R>X@CD2FF\fV6UKCP2ZB\u0002ZwGD\u0017AwGQ \u0011]9s".tochararray(); $r4 = $r3; for ($i4 = $r3.length, i1 = 0; $i4 > i1; i1++) $r5 = $r4; $i5 = i1; $c6 = $r4[i1]; label_0: switch (i1 % 5) case 0: $c8 = '4'; case 1: $c8 = 'W'; case 2: $c8 = '4'; case 3: $c8 = '%'; default: $c8 = 'c'; $r5[$i5] = (char) ($c6 ^ $c8); z = (new String($r4)).intern(); l3 = 10L + (new Date()).getTime(); astr = Long.toString(l3); package strs; public class Main1 public static void main(string [] s) System.out.println("f ile percobaan dengan satu string"); static String astr; static long a=10; a = a + new java.util.date().gettime(); astr = Long.toString(a); public static void main(string[] r0) System.out.println(z); Gb. 2.2 Program asli dan setelah string encryption oleh ZKM 12
7 2.2.3 Transformasi ekspresi aritmetik Transformasi ini dilakukan pada ekspresi berjenis integer (bilangan bulat) untuk mengganti konstanta dengan ekspresi yang lebih rumit. Transformasi ini hanya dilakukan oleh JBCO dengan nama CAE2BO [1], meskipun pada implementasi yang sekarang tidak cukup handal untuk digunakan. Ide dari transformasi ini sama dengan transformasi Add Rendundant Operands yang ditulis oleh Collberg et al, yaitu menggunakan hukum aljabar untuk menambahkan operand yang sama ke dalam ekspresi. Contoh: x = v*195 Karena 195 = , ekspresi ini dapat dirubah menjadi x = (v<<7) + (v<<6) + (v<<1) + v dan dirubah lagi menjadi (dengan memanfaatkan fakta bahwa JVM hanya memperhatikan 5 bit terendah dari operand banyaknya pergeseran bit) x = (v << 39) + (v << 38) + (v << 33) + v Implementasi JBCO memiliki kelemahan dalam rutin pengubah pembagian, yang mengakibatkan ia melakukan operasi bit shift meskipun pembaginya bukan eksponen dari Menyimpan variabel lokal dalam bitfield Transformasi ini mengumpulkan variabel-variabel lokal menjadi variabel besar berukuran 64-bit (tipe long). Dalam sebuah variabel bertipe long bisa disimpan dua buah variabel 32-bit (tipe int) atau 64 buah variabel boolean (karena tiap boolean hanya membutuhkan 1 bit). Transformasi ini masuk ke dalam ketegori Data Obfuscation, dan serupa dengan Merge Scalar Variable yang dibahas oleh Collberg et al [6]. Transformasi ini memiliki keuntungan bahwa ia dapat mengurangi kebutuhan memori untuk penyimpanan data, meskipun ia meningkatkan banyaknya instruksi dalam program. Hanya dilakukan oleh JBCO. 13
8 2.2.5 Pengubahan urutan blok statement Transformasi ini memindahkan blok blok statement menggunakan instruksi goto untuk merubah urutan blok statement dalam bytecode. Esensi Control Flow Graph tidak diubah, tetapi pada beberapa kasus decompiler akan gagal merestrukturisasi source Java. Decompiler Jad, misalnya, akan gagal merestrukturisasi switch yang sudah diubah urutannya, sedangkan decompiler Dava tetap berfungsi baik. Di sisi lain, Dava mengalami kesulitan jika terjadi kombinasi transformasi ini dengan penggunaan instruksi monitor yang muncul jika ada blok synchronized dalam program asli. Transformasi ini digunakan oleh DashO dan ZKM. JBCO menggunakan variasi dari transformasi ini yang dikombinasikan dengan penambahan exception handling di daerah yang hanya berisi instruksi goto Menyimpan konstanta sebagai field Referensi ke konstanta diubah menjadi referensi ke field, yang diinisialisasi dengan konstanta tersebut. Istilah ini diperkenalkan JBCO, namun ZKM melakukan transformasi ini sebagai bagian string encryption yang dilakukannya. Batchelder[1] menyatakan bahwa transformasi ini tampak tidak resilient, namun bila dikombinasikan dengan pembentukan predikat tersamarkan yang beberapa kali melakukan assignment pada field tersebut maka akan menjadi transformasi yang cukup resilient Menambahkan kode mati atau tidak relevan (Transformasi penambahan branch) Transformasi ini menambahkan kode yang tidak relevan yang tidak akan pernah dilewati dalam eksekusi program. Kode yang ditambahkan dijaga oleh predikat tersamarkan (opaque predicate), sehingga decompiler ataupun manusia akan mengira kode tersebut adalah bagian dari program. Termasuk dalam kategori Control Obfuscation, transformasi ini dilakukan oleh ZKM. 14
9 2.2.8 Konversi Flow Graph dari Reducible menjadi Non-Reducible Transformasi ini mengubah sebuah flow graph menjadi flow graph yang tidak bisa dinormalisasi, ini dilakukan dengan mengubah sebuah loop menjadi loop dengan titik masuk lebih dari satu. Dalam bahasa pemrograman Java loop dengan titik masuk lebih dari satu tidak bisa dibuat. Collberg et al. mengusulkan transformasi ini, dan logika yang serupa diterapkan ZKM pada rutin string decryptnya. Namun, Miecznikowski [17] menemukan bahwa flow graph yang non reducible bisa dibuat menjadi reducible dengan menambahkan control flag dan percabangan berdasarkan control flag itu. Secara teoretis, Dava dapat mendecompile flow graph dengan titik masuk lebih dari satu, tetapi untuk rutin string decrypt milik ZKM tidak dapat didecompile. Maka transformasi ini dinilai memiliki resiliensi tingkat menengah Menyamarkan panggilan ke library Karena pemanggilan library tidak mengalami name obfuscation, nama-nama kelas dan method dari library menjadi titik tolak untuk reverse engineering. Collberg [7] et al. menyarankan untuk membuat library khusus ter-obfuscate untuk menggantikan library yang asli, sedangkan Batchelder [1] mengimplementasikan pembuatan library perantara ter-obfuscate secara dinamis. Implementasi ini dalam JBCO disebut Build Library Buffer Class. Transformasi ini termasuk control obfuscation. Obfuscator komersial yang ada belum melakukan transformasi jenis ini. 15
PERBANDINGAN METODE OBFUSCATION PADA OBFUSCATOR UNTUK BAHASA PEMROGRAMAN JAVA TESIS
PERBANDINGAN METODE OBFUSCATION PADA OBFUSCATOR UNTUK BAHASA PEMROGRAMAN JAVA TESIS Karya tulis sebagai salah satu syarat untuk memperoleh gelar Magister dari Institut Teknologi Bandung Oleh YUDHI WIDYATAMA
BAB 1 PENDAHULUAN. 1.1 Latar Belakang
BAB 1 PENDAHULUAN 1.1 Latar Belakang Java telah menjadi salah satu bahasa pemrograman yang cukup populer di industri software internasional maupun domestik. Java memiliki keuntungan bahwa banyak platform
BAB 3 METODOLOGI RISET
BAB 3 METODOLOGI RISET Penulis membuat beberapa test case dari yang sederhana (bukan program yang berguna) sampai menengah (program yang memiliki kegunaan bagi orang awam). Tiap test case akan diproses
SUMBER BELAJAR PENUNJANG PLPG
SUMBER BELAJAR PENUNJANG PLPG 2017 [TIK] BAB VIII PEMROGRAMAN BERORIENTASI OBJEK [Alfa Faridh Suni] KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL GURU DAN TENAGA KEPENDIDIKAN 2017 BAB VIII
PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN
PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN Obektif: Praktikan mengetahui arra, percabangan, dan perulangan pada Java. Praktikan mengetahui bentuk umum
Dasar Pemrograman Java
Dasar Pemrograman Java Tessy Badriyah, SKom. MT. http://lecturer.eepis-its.edu/~tessy Tujuan Pembelajaran Penggunaan Komentar dalam program Memahami perbedaan identifier yang valid dan yang tidak valid
Pemrograman. Pertemuan-3 Fery Updi,M.Kom
Pemrograman Pertemuan-3 Fery Updi,M.Kom 1 Pokok Bahasan Mengenal Tipe Data, Variabel Mengenal Operator 2 public class Main { Komentar /** Bentuk Dasar Kode Java * @param args */ public static void main(string[]
DASAR PEMOGRAMAN JAVA
DASAR PEMOGRAMAN JAVA Pertemuan ke-2 Oleh: Winda Aprianti Tipe Data Bilangan Karakter Kata atau Kalimat Boolean Literal merepresentasikan nilai suatu tipe, dimana tipe itu sendiri menjelaskan bagaimana
2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.
Waktu Sisa : 2:14:53 1. Dari pilihan berikut ini, item manakah yang memiliki atribut dan behaviour? object class attribute data type method behavior 2. Pilih instruksi yang dapat digunakan dalam method
BAB 3 TYPE DATA, VARIABLE DAN OPERATOR
BAB 3 TYPE DATA, VARIABLE DAN OPERATOR Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai bahasa pemrograman
2 TIPE DATA DAN VARIABEL
BAB 2 TIPE DATA DAN VARIABEL Kompetensi Dasar dan Indikator : Setelah mengikuti materi kuliah ini mahasiswa mampu menggunakan tipe data dan variable yang ada dalam Java, dengan indikator mahasiswa mampu:
BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA
1 BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA IDENTIFIER Identifier adalah suatu tanda yang mewakili nama-nama variabel, method, class, dsb. Ingat : Bahasa
BAB II VARIABEL DAN TIPE DATA
BAB II VARIABEL DAN TIPE DATA Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai bahasa pemrograman dengan
Pemrograman Berbasis Objek Operator dan Assignment
Operator dan Assignment Macam-macam macam Operator Arithmetic Op. : + - * / % Relational Op. : > >= < >>> Conditional
TIPE DATA, VARIABLE, dan OPERATOR DELPHI
TIPE DATA, VARIABLE, dan OPERATOR DELPHI A. TIPE DATA Delphi merupakan bahasa pemrograman tingkat tinggi yang mendukung perancangan terstruktur dan berorientasi Object. Bahasa pemrograman ini berdasarkan
Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.
Tabel Informasi Tabel informasi atau tabel simbol berguna untuk mempermudah pada saat pembuatan dan implementasi dari analisa semantik (semantic analyzer). Pada proses translasi, tabel informasi dapat
Operator dan Assignment
Operator dan Assignment Macam-macam Operator Arithmetic Op. : + - * / % Relational Op. : > >= < >>> Conditional Op.
Pertemuan 4 Array pada Java
Pertemuan 4 Array pada Java Objektif : 1. Mahasiswa dapat memahami pengertian Array pada Java 2. Mahasiswa dapat mengetahui bentuk umum dari Array 3. Mahasiswa dapat mengetahui jenis-jenis Array pada Java
Pemrograman Berorientasi. Class dan Obyek 2
Pemrograman Berorientasi Obyek Class dan Obyek 2 [email protected] Method main pada Java public static void main(string[] args) Merupakan bagian yang dieksekusi oleh program Java Sifat: public, static,
Modul Praktikum 4 Pemograman Berorientasi Objek
Modul Praktikum 4 Pemograman Berorientasi Objek 1. Judul : Array 2. Tujuan Percobaan : Diakhir praktikum, mahasiswa diharapkan mampu : Mendeklarasikan dan membuat array Mengakses elemen-elemen didalam
Bahasa Pemrograman 2.
Bahasa Pemrograman 2 Pengenalan JAVA 1 [email protected] Instalasi JDK Download JDK for free Instalasi biasa Set PATH dan JAVA_HOME set PATH=%PATH%; set JAVA_HOME=
PEMAHAMAN DASAR DASAR JAVA
MODUL 1 PEMAHAMAN DASAR DASAR JAVA A. PENGANTAR JAVA Java Standard Development Kit (JDK/SDK) merupakan alat-alat utama bagi programmer untuk membuat dan menjalankan java. Development Kit dapat didownload
Badiyanto, S.Kom., M.Kom. PBO java
Badiyanto, S.Kom., M.Kom PBO java Apa yang Disebut Java? Bahasa pemrograman berorientasi objek murni yang dibuat berdasarkan kemampuankemampuan terbaik bahasa pemrograman objek sebelumnya (C++, Ada, Simula).
Percabangan & Perulangan
BRACHIG & LOOPIG Percabangan & Perulangan Pemrograman Berbasis Obyek Pertemuan 3 IT-EEPIS Percabangan -else else- switch (ekspresi boolean) { pernyataan1; pernyataan2; ekspresi = true pernyataan1 pernyataan2
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO Ramos Somya Identifier Merupakan nama yang digunakan untuk menamai class, variabel, method dan interface. Aturan: - Tidak ada batasan
Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai
Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai 5 buah nilai dengan tipe yang sama dapat saja disimpan dalam 5 buah variabel, tetapi bagaimana dengan 100 nilai? Disimpan dengan 100 variabel?
PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR
1 PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR Siti Mukaromah, S.Kom TEKNIK PENYAJIAN ALGORITMA Teknik Tulisan Structure English Pseudocode Teknik Gambar Structure Chart HIPO Flowchart 2 PSEUDOCODE Kode
KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.
KENDALI PROSES Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan. PERINTAH KONDISIONAL Pemrograman Java memiliki 2 Decision-making
LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom
LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom BAB III DASAR-DASAR PEMROGRAMAN Tipe Data Data adalah sekumpulan kejadian/fakta yang dipresentasikan dengan huruf, angka,
Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)
Variabel dan Tipe Data Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai) Nilai variabel dapat diubah di pernyataan manapun di dalam program Java Basic By Didit Setya
PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita
PEMROGRAMAN JAVA Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita Education is not the filling of a pail, but the lighting of a fire. (William
BEKERJA DENGAN JAVA CLASS LIBRARY
MK. Pemrograman Berorientasi Objek BEKERJA DENGAN JAVA CLASS LIBRARY (CLASS-METHOD-OBJECT) KARMILASARI ANALOGI OBJEK DALAM DUNIA NYATA Objek di dunia nyata = Objek dalam perangkat lunak Atribut di dunia
PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA
PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA Asep Herman Suyanto [email protected] http://www.bambutechno.com Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai
Elemen Dasar Dalam Bahasa Java
Elemen Dasar Dalam Bahasa Java 1. Kata Kunci Kata kunci adalah kata-kata yang didefenisikan oleh compiler dan memiliki arti dan tujuan spesifik. Java tidak mengizinkan kata-kata tersebut dipakai sebagai
PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN
PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN Obyektif: Praktikan mengetahui array, percabangan, dan perulangan pada Java. Praktikan mengetahui bentuk umum dari array, percabangan, dan perulangan dalam
Obyektif : KONTROL ALUR PROGRAM
KONTROL ALUR PROGRAM Obyektif : 1. Mengetahui dan memahami tentang percabangan (seleksi) 2. Mengetahui dan memahami tentang perulangan (iterasi) 3. Dapat membuat program tentang control alur program PERCABANGAN
E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom
E-Book PEMROGRAMAN BERORIENTASI OBJEK Disusun Oleh: Arfian Hidayat, S.Kom http://arfianhidayat.com FAKULTAS ILMU KOMPUTER UNIVERSITAS DIAN NUSWANTORO SEMARANG 2013 Daftar Isi Daftar Isi... i Daftar Gambar...
OPERASI PERNYATAAN KONDISI
OPERASI PERNYATAAN KONDISI A. Pernyataan IF pernyataan if mempunyai pengertian, jika kondisi bernilai benar, maka perintah dikerjakan dan jiak tidak memenuhi syarat maka diabaikan. Dapat dilihat dari diagram
1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?
1 of 14 2/21/2008 2:34 PM Waktu Sisa : 0:43:58 1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar? 2 of 14 2/21/2008 2:34 PM 2. Pernyataan manakah yang benar mengenai
Dasar Pemrograman Mikrokontroler dengan Bahasa C
Dasar Pemrograman Mikrokontroler dengan Bahasa C Pokok Bahasan: 1. Penggunaan Fungsi (Using Functions) 2. Penanaman bahasa rakitan di dalam Program 'C' Tujuan Belajar: Setelah mempelajari dalam bab ini,
9/26/2011. Tujuan. Bekerja dengan Java Class Library. Pengenalan OOP. Pengenalan OOP. Class dan Object. Enkapsulasi
Tujuan Pada akhir pembahasan, siswa diharapkan dapat : JAVA Education Network Indonesia Bekerja dengan Java Class Library Pengenalan Pemrograman 1 Menjelaskan OOP dan beberapa konsepnya Membedakan antara
Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method
Pemrograman Lanjut Instance Variable Access Modifier Set dan Get Method PTIIK - 2014 Objectives Mampu mendeklarasikan class dan menggunakannya untuk membuat object. Mampu mendeklarasikan methods dalam
Pemrograman Berorientasi Objek. Beni Suranto, S.T.
Pemrograman Berorientasi Objek Beni Suranto, S.T. Variabel Variabel adalah nama dari suatu lokasi di memori yang digunakan untuk menyimpan data sementara. Variabel diberi nama tertentu yang menunjukkan
TUGAS MATA KULIAH TEKNIK KOMPILASI
TUGAS MATA KULIAH TEKNIK KOMPILASI TEKNIK OPTIMASI DAN TABEL INFORMASI DOSEN : HARUN MUKHTAR,M.KOM Nama : Walter Sitio NIM : 080403019 Jurusan : Teknik Infomatika UNIVERSITAS MUHAMMAHDIYAH RIAU Teknik
Pemrograman Lanjut. Class : Deeper Look 2
Pemrograman Lanjut Class : Deeper Look 2 PTIIK - 2013 Objectives Mampu menggunakan variabel dan method static dan final. Mampu meng-import static member dari sebuah kelas. Mampu membuat package dan meng-import
IT210 Pemrograman Visual. Ramos Somya
IT210 Pemrograman Visual Ramos Somya Variabel adalah tempat untuk menyimpan data yang memiliki suatu tipe data. Variabel ini akan ditempatkan dalam suatu alamat memori pada komputer. C# mengharuskan setiap
OPERATOR-OPERATOR DALAM JAVA
OPERATOR-OPERATOR DALAM JAVA Obyektif : 1. Memahami tentang operator-operator (aritmatic, logical, relational, assigment, bitwise) 2. Dapat membuat program sederhana dengan menggunakan operatoroperator
T I P E D A T A P R I M I T I F V A R I A B E L D A N S T A T E M E N P E N U G A S A N E K S P R E S I D A N O P E R A T O R A R I T M A T I K A
Pemrograman Dasar T I P E D A T A P R I M I T I F V A R I A B E L D A N S T A T E M E N P E N U G A S A N E K S P R E S I D A N O P E R A T O R A R I T M A T I K A Tipe Data Tipe Data merupakan skema yang
JAVA BASIC PROGRAMMING Joobshet
JAVA BASIC PROGRAMMING Joobshet 1. KOMPETENSI Mahasiswa dapat memahami jenis jenis tipe data Mahasiswa dapat memahami jenis jenis variable Mahasiswa dapat memahami jenis jenis seleksi kondisi Mahasiswa
PERTEMUAN II ARRAY, PERCABANGAN, DAN PERULANGAN TUJUAN PRAKTIKUM
PERTEMUAN II ARRAY, PERCABANGAN, DAN PERULANGAN TUJUAN PRAKTIKUM 1. Praktikan mengetahui array, percabangan, dan perulangan pada Java. 2. Praktikan mengetahui bentuk umum dari array, percabangan, dan perulangan
Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C
1. Pendahuluan Lingkungan Turbo C++ 4.5 Turbo C++ 4.5 adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C++ 4.5. 1 2 3 4 1 : Menu Utama
Pengenalan JAVA. Farhat, ST., MMSI., MSc
Pengenalan JAVA Tim sun Microsystems (dipimpin oleh James Gosling) bahasa komputer kecil (chipchip embedded) Proyek bernama Green. Pascal (diciptakkan oleh Niklaus Wirth) Bahasa yang portable kode intermediate
Inheritance dan Kata Kunci static
Inheritance dan Kata Kunci static PEWARISAN (INHERITANCE) Salah satu fitur yang paling kuat dalam OOP adalah penggunaan kode kembali (code reuse). Sekali sebuah prosedur dibuat, maka kita bisa menggunakannya
Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN
Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN I. Elemen-Elemen Dalam Bahasa Pemrograman Berikut adalah elemen-elemen pada bahasa pemrograman: Berikut adalah element-element pada bahasa pemrograman: 1. Aturan
Tipe Data dan Operator
Tipe Data dan Operator Dasar Algoritma dan Pemrogrman Eka Maulana, ST, MT, MEng. Klasifikasi Tipe Data 1 Tipe Data Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam
Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom
Objek Data, Variabel, dan Konstanta Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom Pengantar Penyimpanan data di komputer (memori, register, dan lainnya) Organisasi yang sederhana Barisan bit
Tipe if : If tanpa else (if) If dengan else (if-else) Nested if
Struktur kontrol keputusan pernyata-an dari Java yang mengijinkan user untuk memilih dan mengeksekusi blok kode spesifik dan mengabaikan blok kode yang lain. Tipe : If switch Tipe if : If tanpa else (if)
PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)
PEMROGRAMAN JAVA Yoannita, S.Kom Input Kondisi (IF-ELSE, SWITCH) 1 import java.io.* Operasi input/output dimaksudkan untuk berinteraksi dengan user, User mengetikkan sesuatu input, program java akan menerima
LAPORAN PRAKTIKUM STRUKTUR DATA
LAPORAN PRAKTIKUM STRUKTUR DATA Nama : Sarifudin Kelas / NIM : IK-1B / 3.34.11.1.22 Pengampu : Sukamto, S.Kom;M.T Jobs ke : 02 Pokok Bahasan : Operator Bahasa Java PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN
Modul PVB-POLINEMA V1.0
BAB V TIPE DATA, VARIABEL DAN KONSTANTA MATERI 1. Tipe Data 2. Variabel 3. Konstanta STANDAR KOMPETENSI 1. Mampu memahami konteks pemakaian variabel dan konstanta 2. Mampu membuat variabel dengan tipe
Tujuan Instruksional. Mahasiswa mampu :
Tujuan Instruksional Mahasiswa mampu : Mengulang dan mengingatkan kembali tentang Dasar Pemrograman Mengigatkan kembali pemahaman tentang Flow Control, Looping, dll Penting!! Kehadiran kurang dari 80%
Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words
Comments Comments digunakan untuk memberikan keterangan/penjelasan suatu baris program. Comments tidak akan dikompilasi oleh compiler. Lambang untuk comments : - double slash ( // ) untuk memberikan penjelasan
Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti
KONSTANTA Menghitung besaran-besaran fisis dalam bidang fisika memerlukan suatu konstantakonstanta. Bahasa C dan C++ menyediakan tipe data tambahan sehingga variabel yang kita gunakan merupakan konstanta
Pertemuan 2 Struktur Kontrol Percabangan
Pertemuan 2 Struktur Kontrol Percabangan Objektif : 1. Mahasiswa dapat memahami konsep struktur kontrol percabangan dalam pemrograman. 2. Mahasiswa dapat menggunakan struktur kontrol pemilihan (if, else,
BAB IV HASIL PENELITIAN DAN PENERAPAN
87 BAB IV HASIL PENELITIAN DAN PENERAPAN 4.1 Karakteristik bahasa pemrograman DOGI Berikut ini akan dijabarkan karakteristik-karakteristik bahasa pemrograman DOGI yang mempengaruhi readability, writability
TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)
TIPE DATA PADA JAVA Pertemuan (K-04/L-04) Alangkah baiknya kita mempelajari terlebih dahulu tentang apa itu tipe data dan mengenal ada berapa tipe data yang digunakan dalam Bahasa Pemrograman Java. Sudah
Operator, Statement kondisional, dan Iterasi pada Java
Operator, Statement kondisional, dan Iterasi pada Java Operator Operator Aritmatika Operator ini digunakan pada operasi-operasi aritmatika seperti penjumlahan, pengurangan, pembagian dll. Jenis Operator
MINGGU II : DASAR C# Tujuan Pembelajaran. Materi
MINGGU II : DASAR C# Bagian ini akan membahas tentang struktur dasar C# dan elemen-elemen dasar dalam C#. Pembahasan meliputi struktur dasar C#, Ekspresi, Tipe data, variable dan operator dalam C#. Tujuan
Pemrograman Berorientasi Obyek. Operator & Assignment
Pemrograman Berorientasi Obyek Operator & Assignment 1 MATERI POKOK Unary operator Arithmetic operator Shift operator: , dan >>> Comparison operator Bitwise operator: &, ^, dan. Short Circuit operator
KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK
KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK Farah Zakiyah Rahmanti, M.T 2015 Overview Definisi Teknologi Java Konsep Pemrograman Procedural dan OOP Struktur Java, Identifier, Kata Kunci, Tipe Data, Operator,
ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom
ANALISIS SEMANTIK Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom Pengertian (1) Suatu compiler selain harus memeriksa leksikal dan sintaks juga harus memeriksa semantik dari program sumber tersebut. Dalam
Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.
Class & Objek Pengenalan OOP Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program. Object tersebut dikarakterisasi oleh property dan behavior. Pengenalan
BAHASA PEMROGRAMAN. Untuk SMK. Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto. : Ratu Amilia Avianti. Perancang Kulit
BAHASA PEMROGRAMAN Untuk SMK Penulis Editor Perancang Kulit Ukuran Buku : Suprapto Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto : Ratu Amilia Avianti : Tim : 18,2 x 15,7 cm Direktorat Pembinaan
MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom
MEMBUAT KELAS SENDIRI Dewi Sartika, M.Kom MENDEFINISIKAN KELAS SENDIRI class ...... DEKLARASI ATRIBUT [=]; Contoh Instance variable : private
Modul Praktikum 3 Pemograman Berorientasi Objek
Modul Praktikum 3 Pemograman Berorientasi Objek 1. Judul : Kontrol Keputusan dan Pengulangan 2. Tujuan Percobaan : Diakhir praktikum, mahasiswa diharapkan mampu : Menggunakan struktur kontrol keputusan
JAVA FUNDAMENTAL ATURAN PERKULIAHAN SILABUS
JAVA FUNDAMENTAL Nama : Julian Chandra W Telp : 085647155605 Email : [email protected] Referensi : 1. Benny Hermawan. 2004. Menguasai Java 2 & Object Oriented Programming. Andi. 2. Bambang Hariyanto.
BAHASA PEMROGRAMAN JAVA
MI1274 Algoritma & Pemrograman Lanjut Genap 2015-2016 BAHASA PEMROGRAMAN JAVA Disusun Oleh: Reza Budiawan Untuk: Tim Dosen Algoritma & Pemrograman Lanjut Hanya dipergunakan untuk kepentingan pengajaran
Struktur Kontrol Pemrograman Java : PERCABANGAN
MK. Pemrograman Berorientasi Objek Struktur Kontrol Pemrograman Java : PERCABANGAN Karmilasari Struktur Kontrol Percabangan If, If-Else, If bersarang Switch - Case Pengulangan 2 Percabangan : IF Pada percabangan
Dasar-Dasar Pengujian Perangkat Lunak. Fakultas Ilmu Komputer dan Teknologi Informasi Jurusan Sistem Informasi Univesitas Gunadarma
Dasar-Dasar Pengujian Perangkat Lunak Fakultas Ilmu Komputer dan Teknologi Informasi Jurusan Sistem Informasi Univesitas Gunadarma Tujuan Pembelajaran Memahami langkah awal untuk melakukan pengujian terhadap
Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman.
Pemrograman Dasar 1 Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman. 2 Pencabangan Bersyarat Pernyataan
Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.
Sejarah C Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs. Pengembangan dari bahasa BCPL(Martin Richard, 1967) dan bahasa B (Ken Thompson, 1970) Dibantu Brian W. Kernighan, Ritchie menulis buku
Algoritma Pemrograman. Fery Updi,M.Kom
Algoritma Pemrograman Fery Updi,M.Kom 1 Kompetensi Detail Mampu menjelaskan Prinsip-prinsip Algoritma Mampu menjelaskan Konsep Bahasa Pemrograman Mampu membuat Flowchart dan Pseudocode Mampu menjelaskan
MODUL A:\VARIABEL, OPERATOR, DAN EKSPRESI
MODUL A:\VARIABEL, OPERATOR, DAN EKSPRESI 1.Variabel Variabel merupakan container yang digunakan untuk menyimpan suatu nilai pada sebuah program dengan tipe data tertentu. Bahasa C# mengenal dua tipe variabel
Studi dan Perbandingan Algoritma Software Watermarking Berbasis Graf dan Opaque Predicate
Studi dan Perbandingan Algoritma Software Watermarking Berbasis Graf dan Opaque Predicate Julian Sukmana Putra 1) 1) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi
IKG2I4 / Software Project I
IKG2I4 / Software Project I Mahmud Imrona, M.T. Izzatul Ummah, M.T. Kelompok Keahlian Algoritma dan Komputasi LECTURE NOTE WEEK 2 1 3/11/2015 WEEK 2 Class Driver Constructor Public vs private Get dan set
Membuat dan Menggunakan Class
Pertemuan 3 Halaman 1/1 Membuat class pada java : Untuk mendefinisikan suatu class pada java digunakan : class ClassName { suatu class dapat terdiri dari - attribute / data field - method Attribute Attribute
Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno
Pemrograman Lanjut Jurusan S1 Teknik Informatika 9/17/2012 Ratno Object Oriented Programming Object Pada dunia perangkat lunak, sebuah obyek adalah sebuah komponen perangkat lunak yang stukturnya mirip
Abstract Class dan Interface. Viska Mutiawani, M.Sc
Abstract Class dan Interface Viska Mutiawani, M.Sc Konsep Penting Abstract class Abstract method Interface Implements Final Static Exception Contoh Polimorfisme Lihat contoh program yang disediakan pada
BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;
BAB 4 ARRAY Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type, larik mempunyai jumlah komponen
Ada 3 jenis struktur kontrol: Sequence Structure Selection Structure Repetition Structure Sequence Structure
Struktur Kontrol Ada 3 jenis struktur kontrol: Sequence Structure Selection Structure Repetition Structure Sequence Structure Selection Structure if if else switch if Bentuknya : if (kondisi) Statement1;
Operator dan Assignment. Pertemuan 3 Pemrograman Berbasis Obyek
Operator dan Assignment Pertemuan 3 Pemrograman Berbasis Obyek Topik Unary operator Arithmetic operator Shift operator: , dan >>> Comparison operator Bitwise operator: &, ^, dan. Short Circuit operator
Perjalanan sebuah intruksi
Perjalanan sebuah intruksi Source Program X = Y + X Analisis Leksikal Token-token Id1:=Id2+Id1 Id1 := Id2 + Id1 Analisis Sintaksis Code Generator dan Analisis sematiks LDA A ADD Y STO X
BAB 1 KONSEP DASAR JAVA
BAB 1 KONSEP DASAR JAVA TUGAS PENDAHULUAN Buatlah algoritma dari program yang ada dalam kegiatan praktikum ini! 1. TUJUAN a. Mahasiswa mengetahui dasar dan elemen-elemen pembentuk bahasa Java b. Mahasiswa
Achmad Solichin.
Pemrograman Bahasa C dengan Turbo C [email protected] Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
Pemrograman Berorientasi Obyek. Dasar Pemrograman Java
Pemrograman Berorientasi Obyek Dasar Pemrograman Java 1 Materi Pokok Membedakan antara valid dan invalid identifiers. Mengetahui Java technology keywords. Mengetahui 8 tipe data primitif. Mendefinisikan
MODUL II. OBJECK, PROPERTY, METHOD dan EVENT
MODUL II OBJECK, PROPERTY, METHOD dan EVENT Dalam bahasa pemrograman berbasis obyek OOP, kita harus memahami istilah Object, Property, Method, dan Event sebagai berikut. 1) Object Komponen dalam sebuah
PERTEMUAN 2 ALGORITMA & PEMROGRAMAN
PERTEMUAN 2 ALGORITMA & PEMROGRAMAN POKOK BAHASAN 1. Pendahuluan 2. Tahapan Pembangunan Program 3. Pengenalan Algoritma 4. Cara Menyajikan Algoritma 5. Data Program 6. Elemen-Elemen Program PENDAHULUAN
24/09/2017 PERULANGAN
1 PERULANGAN STRUKTUR KONTROL PERULANGAN Struktur kontrol pengulangan adalah berupa pernyataan dari Java yang mengijinkan kita untuk mengeksekusi blok code berulang-ulang sesuai dengan jumlah tertentu
Teknik Pengujian (2) Whitebox Testing
Teknik Pengujian (2) Whitebox Testing Pengujian Perangkat Lunak Mina Ismu Rahayu 2011 Pengujian Ujicoba merupakan proses eksekusi program dengan tujuan untuk menemukan kesalahan. Sebuah ujicoba kasus yang
MODUL DUA VARIABEL DAN TIPE VARIABEL
MODUL DUA VARIABEL DAN TIPE VARIABEL Tujuan : Mahasiswa memahami tentang operator dan penggunaannya dalam bahasa pemrograman java, mengetahui macam-macam kategori operator dan mengetahui perbedaan operator
