Python RE
1. Pastikan python telah terinstall di perangkat yang digunakan
python3 --version
2. Buka file dengan nama crackme_00.py (file akan langsung terbuat), lalu
copy-paste kode berikut:
#!/bin/usr/python3
user = "admin"
password = "In1_pa55w0rD"
verify_user= input("Masukkan user : ")
verify_pass= input("Masukkan password : ")
if(user == verify_user and password == verify_pass):
print("Congratulations")
else:
print("Try Harder")
3. Buka file dengan nama crackme_01.py (file akan langsung terbuat), lalu
copy-paste kode berikut:
#!/usr/bin/python3
for i in range(len(verify_user)):
if (user_arr[i] != ord(verify_user[i])):
print("try harder")
exit()
for i in range(len(verify_pass)):
if (pass_arr[i] != ord(verify_pass[i])):
print("try harder")
exit()
print("congratulations!")
python -m compileall .
Tampilan pada saat dijalankan python -m compileall ..
strings crackme_00.pyc
strings crackme_01.pyc
6. Apa yang kamu lihat pada output command tersebut? Apa saja yang
hadir di file .py dan menghilang pada file .pyc?
Tampilan output pada strings crackme_00.pyc.
wget
https://github.com/isfahany/infosec-module-downloadable-f
ile/raw/master/RE/crackme03.pyc
wget
https://github.com/isfahany/infosec-module-downloadable-f
ile/raw/master/RE/crackme_04.apk
2. Pastikan apktool dan dex2jar telah terinstall
3. Jalankan command apktool pada .apk tersebut dengan parameter berikut:
apktool d android_app.apk
cd smali_classes2/com/akhir/myapplication
file android_app.apk
unzip android_app.apk -d android_app
cd android_app
ls
d2j-dex2jar classes2.dex
file classes2-dex2jar.jar
unzip classes2-dex2jar.jar
cd ./com/akhir/myapplication
jd-gui
11. Jelaskan perbedaan antara dekompilasi java dengan output .java dan
menjadi .smali
C/C++ RE
1. Pastikan gcc telah terinstall pada perangkat anda.
2. Buka file dengan nama crackme_05.c (file akan langsung terbuat), lalu
copy-paste kode berikut:
#include <stdio.h>
#include <string.h>
int serial[] = {241, 233, 242, 174, 238, 246, 241, 247,
200};
char sereal[10];
void decode_serial(){
for(int i = 0; i < 9; i++){
sereal[i] = serial[i] ^ 0x87;
}
}
void decode2(){
int a = 0;
int b = 1;
int c = 1;
for(int i = 0; i < 9; i++){
serial[i] -= c;
c = a + b;
a = b;
b = c;
}
}
printf("%s", sereal);
if (strcmp(argv[1], sereal)==0) {
printf("CORRECT!!!\n");
} else {
printf("TRY HARDER!!!\n");
}
}
strip crackme_05_stripped
gdb -q crackme_05_non_stripped
gdb -q crackme_05_stripped
6. Bukalah ghidra (boleh ida pro) dan analisislah kedua file crackme_05
yang telah kita buat baik dari segi perbedaan maupun persamaan:
Tampilan pada Ghidra.
Persamaan yang ada pada ghidra dan hasil dari file compiled c adalah
sama sama menampilkan non-debugging symbols dan dump of
assembler code for function main akan tetapi perbedaan yang ada
pada ghidra dan hasil dari file compiled c adalah pada ghidra lebih jelas
dalam menampilkan data daripada file compiled c.
Tugas
1. Buatlah script crack otomatis untuk melakukan crack pada crackme03.pyc
for i in license:
if 45 > ord(i) or 90 < ord(i):
print 'try harder'
exit(0)
if license.count('-') != 3:
print 'try harder'
exit(0)
arr_license = license.split('-')
2. Mengapa python lebih mudah didecompile daripada java dan java lebih
mudah didecompile daripada c/c++? Jelaskan