Pages

Subscribe:

Selasa, 05 Juli 2011

Decompiler Java Exe

Berbagi pengalaman terlebih dahulu dengan para pembaca. Sekarang sudah memasuki akhir semester, sebentar lagi harus bayar uang semester dan yang paling bikin pusing adalah UAS. Yang akan saya bicarakan adalah UAS Struktur Data, itu adalah salah sata mata kuliah jurusan IT di UNY semester 3. UAS Struktur Data kali ini adalah membuat sebuat program dengan Java dan kosep Double Linked List. Sayangnya Pak Dosen hanya memberikan contoh program dengan format *.exe, maksudnya agar mahasiswa bisa membuat program seperti yang dicontohkan tanpa tahu source codenya. Wah bikin pusing aja, mana lagi tugasnya sulit plus susah. Tapi siapa bilang sebuah format *.exe tidak bisa didecompiler?


Bagi yang belum tahu, ternyata source code Java bisa juga dicompile menjadi *.exe. Kalau hanya dicompile dalam format *.class sangat mudah untuk didecompiler. Cari saja program decompiler Java yang banyak bertebaran di internet. Sekarang yang mau saya kasih tahu adalah cara mendecompiler Java yang sudah dicompile dalam format *.exe.



Siapkan peralatan sebagai berikut :



1.Siapkan tugas dari Pak. Dosen, contoh uas.exe.

2.Java Decompiler Lite.

3.Tune Up Utility. Bisa menggunakan versi berapa saja, karena yang akan dipakai hanya “TuneUp Process Manager”.

4.Secangkir teh hangat.

Langlah :



1.Jalankan uas.exe, yang penting program berjalan dan jangan ditutup dulu.

2.Buka TuneUp Process Manager, pilih tab “Open Files”.

3.Lihat semua proses yang sedang berjalan pada uas.exe.

4.Cari file dengan nama “.jar”.

5.Klik kanan dan open folder.

6.Copy file “.jar” ketempat lain.

7.Buka file “.jar” dengan Java Decompiler Lite.

8.Ta2… source code terlihat dengan jelas.

Bagi yang ingin melihat source code yang sudah jadi silahkan download di sini atau lihat source code dibawah ini :



import java.io.PrintStream;

import java.util.Scanner;



class UAS

{

public static void main(String[] paramArrayOfString)

{

String str1;

DoubleLink localDoubleLink = new DoubleLink();



do

{

String str2;

String str3;

Object localObject1;

int j;

int k;

Object localObject2;

Object localObject3;

int i1;

System.out.println("");

System.out.println("");

System.out.println("----------> PERHATIAN <------------");

System.out.println("----> Ketik '/q' untuk CANCEL <----");

System.out.println("-----------------------------------");

System.out.println("");

System.out.println("Pilih Menu");

System.out.println("1. Memasukkan data");

System.out.println("2. Menghapus data");

System.out.println("3. Update data");

System.out.println("4. Menampilkan data");

System.out.println("5. Keluar");

System.out.print("Pilihan anda --> : ");

Scanner localScanner = new Scanner(System.in);

str1 = localScanner.next();



while ((str1.compareTo("1") != 0) && (str1.compareTo("2") != 0) && (str1.compareTo("3") != 0) && (str1.compareTo("4") != 0) && (str1.compareTo("5") != 0))

{

System.out.println("");

System.out.println("MAAF, PILIHAN ANDA SALAH!!!");

System.out.println("");

System.out.println("");

System.out.println("----------> PERHATIAN <------------");

System.out.println("----> Ketik '/q' untuk CANCEL <----");

System.out.println("-----------------------------------");

System.out.println("");

System.out.println("Pilih Menu");

System.out.println("1. Memasukkan data");

System.out.println("2. Menghapus data");

System.out.println("3. Update data");

System.out.println("4. Menampilkan data");

System.out.println("5. Keluar");

System.out.print("Pilihan anda --> : ");

localScanner = new Scanner(System.in);

str1 = localScanner.next();

}



int i = str1.compareTo("1");



switch (i)

{

case 0:

System.out.print(" N A M A --> ");

str2 = localScanner.next();

if (str2.compareTo("/q") == 0)

{

continue;

}



System.out.print(" N I M --> ");

str3 = localScanner.next();

if (str3.compareTo("/q") == 0)

{

continue;

}



if (!(localDoubleLink.isEmpty()))

{

localObject1 = localDoubleLink.cekNim(str3);

while (localObject1 != null)

{

System.out.println("----------> MAAF, NIM " + str3 + " SUDAH ADA <----------");

System.out.println("");

System.out.println("SILAKAN MASUKKAN NIM LAGI");

System.out.print(" N I M --> ");

str3 = localScanner.next();

if (str3.compareTo("/q") == 0)

{

break;

}

localObject1 = localDoubleLink.cekNim(str3);

}

}



if (str3.compareTo("/q") == 0)

{

continue;

}



System.out.print("Jenis Kelamin [L/W] --> ");

localObject1 = localScanner.next();

if (((String)localObject1).compareTo("/q") == 0)

{

continue;

}



j = ((String)localObject1).compareTo("L");

k = ((String)localObject1).compareTo("W");

System.out.println("");



while ((j != 0) && (k != 0))

{

System.out.println("MAAF, ANDA SALAH KETIK!!! KETIK L atau W (huruf besar!!!)");

System.out.println("");

System.out.println("SILAKAN MASUKKAN JENIS KELAMIN LAGI");

System.out.print("Jenis Kelamin [L/W] --> ");

localObject1 = localScanner.next();

if (((String)localObject1).compareTo("/q") == 0)

{

break;

}

j = ((String)localObject1).compareTo("L");

k = ((String)localObject1).compareTo("W");

System.out.println("");

}



if (((String)localObject1).compareTo("/q") == 0)

{

continue;

}



localDoubleLink.insert(str2, str3, (String)localObject1);

break;



case 1:

System.out.println("");

if (localDoubleLink.isEmpty())

{

System.out.print("MAAF, TIDAK ADA DATA!!!");

}

else

{

System.out.print("NIM yang akan dihapus = ");

str3 = localScanner.next();



if (str3.compareTo("/q") == 0)

{

continue;

}



localObject2 = localDoubleLink.cari(str3);

if (localObject2 == null)

{

System.out.print("MAAF, DATA TIDAK DITEMUKAN!!!");

}

else

{

System.out.println("Data ditemukan");

System.out.println(" Nama : " + ((Node)localObject2).Data1);

System.out.println(" NIM : " + ((Node)localObject2).Data2);

System.out.println("Jenis Kelamin : " + ((Node)localObject2).Data3);

System.out.println("");

System.out.print("Yakin menghapus data " + ((Node)localObject2).Data2 + "? [y/n] >>> ");

localObject3 = localScanner.next();



if (((String)localObject3).compareTo("/q") == 0)

{

continue;

}



int l = ((String)localObject3).compareTo("y");

i1 = ((String)localObject3).compareTo("n");

System.out.println("");



while ((l != 0) && (i1 != 0))

{

System.out.println("MAAF, ANDA SALAH KETIK!!! KETIK y ATAU n");

System.out.println("");

System.out.print("Yakin menghapus data " + ((Node)localObject2).Data2 + "? [y/n] >>> ");

localObject3 = localScanner.next();



if (((String)localObject3).compareTo("/q") == 0)

{

break;

}

l = ((String)localObject3).compareTo("y");

i1 = ((String)localObject3).compareTo("n");

}



if (l == 0)

{

localObject2 = localDoubleLink.hapus(str3);

System.out.println("Data " + ((Node)localObject2).Data2 + " berhasil dihapus!");

}

else

{

System.out.println("Data " + ((Node)localObject2).Data2 + " tidak jadi dihapus!!!");

}

}

}



System.out.println("");

break;



case 2:

System.out.println("");

if (localDoubleLink.isEmpty())

{

System.out.print("MAAF, TIDAK ADA DATA!!!");

}

else

{

String str4;

System.out.print("NIM yang akan diubah = ");

localObject2 = localScanner.next();

if (((String)localObject2).compareTo("/q") == 0)

{

continue;

}



localObject3 = localDoubleLink.cari((String)localObject2);

while (localObject3 == null)

{

System.out.println("MAAF, DATA " + ((String)localObject2) + " TIDAK DITEMUKAN!!!");

System.out.println("");

System.out.print("Nama yang akan diubah = ");

localObject2 = localScanner.next();

if (((String)localObject2).compareTo("/q") == 0)

{

break;

}

localObject3 = localDoubleLink.cari((String)localObject2);

}



if (((String)localObject2).compareTo("/q") == 0)

{

continue;

}



System.out.println("Data " + ((String)localObject2) + " ditemukan");

do

{

System.out.println("");

System.out.println("Pilih yang diubah");

System.out.println("1. Nama ==> " + ((Node)localObject3).Data1);

System.out.println("2. NIM ==> " + ((Node)localObject3).Data2);

System.out.println("3. Jenis Kelamin ==> " + ((Node)localObject3).Data3);

System.out.println("4. Keluar");

System.out.print("Pilihan anda --> : ");

str4 = localScanner.next();

System.out.println("");



while ((str4.compareTo("1") != 0) && (str4.compareTo("2") != 0) && (str4.compareTo("3") != 0) && (str4.compareTo("4") != 0))

{

System.out.println("");

System.out.println("MAAF, PILIHAN ANDA SALAH!!!");

System.out.println("");

System.out.println("Pilih yang diubah");

System.out.println("1. Nama ==> " + ((Node)localObject3).Data1);

System.out.println("2. NIM ==> " + ((Node)localObject3).Data2);

System.out.println("3. Jenis Kelamin ==> " + ((Node)localObject3).Data3);

System.out.println("4. Keluar");

System.out.print("Pilihan anda --> : ");

str4 = localScanner.next();

System.out.println("");

}



i1 = str4.compareTo("1");



switch (i1)

{

case 0:

System.out.print("NAMA baru --> ");

str2 = localScanner.next();

if (str2.compareTo("/q") == 0)

{

continue;

}



((Node)localObject3).Data1 = str2;

break;



case 1:

System.out.print("NIM baru --> ");

str3 = localScanner.next();

if (str3.compareTo("/q") == 0)

{

continue;

}



((Node)localObject3).Data2 = str3;

break;



case 2:

System.out.print("Jenis Kelamin baru [L/W] --> ");

localObject1 = localScanner.next();

if (((String)localObject1).compareTo("/q") == 0)

{

continue;

}



j = ((String)localObject1).compareTo("L");

k = ((String)localObject1).compareTo("W");

System.out.println("");



while ((j != 0) && (k != 0))

{

System.out.println("MAAF, ANDA SALAH KETIK!!! KETIK L atau W (huruf besar!!!)");

System.out.println("");

System.out.println("SILAKAN MASUKKAN JENIS KELAMIN LAGI");

System.out.print("Jenis Kelamin [L/W] --> ");

localObject1 = localScanner.next();

if (((String)localObject1).compareTo("/q") == 0)

{

break;

}

j = ((String)localObject1).compareTo("L");

k = ((String)localObject1).compareTo("W");

System.out.println("");

}



if (((String)localObject1).compareTo("/q") == 0)

{

continue;

}



((Node)localObject3).Data3 = ((String)localObject1);

localObject3 = localDoubleLink.tukar(((Node)localObject3).Data2);

localObject3 = localDoubleLink.cari(((Node)localObject3).Data2);

}

}

while ((str4.compareTo("1") == 0)

(str4.compareTo("2") == 0)

(str4.compareTo("3") == 0));

}



System.out.println("");

break;



case 3:

localDoubleLink.tampilMaju();

}

}

while ((str1.compareTo("1") == 0)

(str1.compareTo("2") == 0)

(str1.compareTo("3") == 0)

(str1.compareTo("4") == 0));

}

}



class Node

{

public String Data1;

public String Data2;

public String Data3;

public Node next;

public Node previous;



public Node(String paramString1, String paramString2, String paramString3)

{

this.Data1 = paramString1;

this.Data2 = paramString2;

this.Data3 = paramString3;

}



public void tampilNode()

{

System.out.println("{" + this.Data1 + ", " + this.Data2 + ", " + this.Data3 + "} ");

}

}



class DoubleLink

{

private Node first;

private Node last;



public DoubleLink()

{

this.first = null;

this.last = null;

}



public boolean isEmpty()

{

return (this.first == null);

}



public Node cariW()

{

Node localNode = this.first;

while (localNode.Data3.compareTo("W") != 0)

{

if (localNode.next == null)

{

return null;

}

localNode = localNode.next;

}

return localNode;

}



public Node cari(String paramString)

{

Node localNode = this.first;

while (localNode.Data2.compareTo(paramString) != 0)

{

if (localNode.next == null)

{

return null;

}

localNode = localNode.next;

}

return localNode;

}



public Node cekNim(String paramString)

{

Node localNode = this.first;

while (paramString.compareTo(localNode.Data2) != 0)

{

if (localNode.next == null)

{

return null;

}

localNode = localNode.next;

}

return localNode;

}



public void insert(String paramString1, String paramString2, String paramString3)

{

Node localNode1 = new Node(paramString1, paramString2, paramString3);

if (isEmpty())

{

this.last = localNode1;

this.first = localNode1;

}

else if (this.first == this.last)

{

if ((this.first.Data3.equals("L")) && (paramString3.equals("W")))

{

this.first.next = localNode1;

localNode1.previous = this.first;

this.last = localNode1;

}

else if ((this.first.Data3.equals("W")) && (paramString3.equals("L")))

{

this.first.previous = localNode1;

localNode1.next = this.last;

this.first = localNode1;

}

else if (this.first.Data2.compareTo(paramString2) < 0)

{

this.first.next = localNode1;

localNode1.previous = this.first;

this.last = localNode1;

}

else

{

this.first.previous = localNode1;

localNode1.next = this.last;

this.first = localNode1;

}

}

else

{

Node localNode3;

Node localNode2 = cariW();

if (paramString3.equals("L"))

{

localNode3 = this.first;

if (localNode3 == localNode2)

{

localNode1.next = this.first;

this.first.previous = localNode1;

this.first = localNode1;

}

else

{

while ((localNode3.Data2.compareTo(paramString2) < 0) && (localNode3.next != localNode2))

{

localNode3 = localNode3.next;

}



if ((localNode3.Data2.compareTo(paramString2) < 0) && (((localNode3.next == localNode2)

(localNode3.next == null))))

{

localNode1.next = localNode2;

localNode1.previous = localNode3;

if (localNode2 != null)

{

localNode2.previous = localNode1;

}

localNode3.next = localNode1;

if (localNode1.next == null)

{

this.last = localNode1;

}

}

else

{

localNode1.next = localNode3;

localNode1.previous = localNode3.previous;

if (localNode3.previous != null)

{

localNode3.previous.next = localNode1;

}

localNode3.previous = localNode1;

if (localNode3 == this.first)

{

this.first = localNode1;

}

}

}

}

else if (localNode2 == null)

{

localNode1.previous = this.last;

this.last.next = localNode1;

this.last = localNode1;

}

else

{

localNode3 = localNode2;

while ((localNode3.Data2.compareTo(paramString2) < 0) && (localNode3.next != null))

{

localNode3 = localNode3.next;

}



if ((localNode3.Data2.compareTo(paramString2) < 0) && (localNode3.next == null))

{

localNode1.next = null;

localNode1.previous = localNode3;

localNode3.next = localNode1;

this.last = localNode1;

}

else

{

localNode1.next = localNode3;

localNode1.previous = localNode3.previous;

if (localNode3.previous != null)

{

localNode3.previous.next = localNode1;

}

localNode3.previous = localNode1;

if (localNode3 == this.first)

{

this.first = localNode1;

}

}

}

}

}



public Node tukar(String paramString)

{

Node localNode = cari(paramString);

hapus(paramString);

insert(localNode.Data1, localNode.Data2, localNode.Data3);

return localNode;

}



public Node hapus(String paramString)

{

Node localNode = this.first;

while (!(localNode.Data2.equals(paramString)))

{

localNode = localNode.next;

}



if (localNode == this.first)

{

this.first = localNode.next;

}

else

{

localNode.previous.next = localNode.next;

}



if (localNode == this.last)

{

this.last = localNode.previous;

}

else

{

localNode.next.previous = localNode.previous;

}

return localNode;

}



public void tampilMaju()

{

System.out.println("");

if (isEmpty())

{

System.out.print("MAAF, TIDAK ADA DATA!!!");

}

else

{

Node localNode = this.first;

while (localNode != null)

{

localNode.tampilNode();

localNode = localNode.next;

}

System.out.println("");

}

}

}Jangan lupa untuk memberikan komentar, kritik ataupun saran! Terimakasih telah membaca artikel ini.



1 komentar:

Unknown mengatakan...

gan boleh minta file.exe nya gak?

Posting Komentar

Total Tayangan Halaman