Не важно, как медленно ты продвигаешься, главное, что ты не останавливаешься.


Tuesday, 16 June 2015

Top Hat Sec : Reversing Mini Series Part 4

Crackme4 (link) merupakan lanjutan dari top hat sec reversing mini series yang sama seperti edisi sebelumnya, tebak-tebakan angka masih menjadi tema seri ke-4 ini.

Gambar 1 : Crackme4
Dari 2 percobaan diatas, crackme4 meminta 4 input user secara berurutan, kemuadian diakhir program terdapat tulisan fail. Berbeda dengan seri sebelumnya, salah menebak angka pada urutan pertama tidak membuat program ini berhenti, untuk memastikan apa kondisi "SUCCESS" dari keempat bilangan yang ditebak, mari kita coba lihat menggunakan debugger.

Gambar 2 : Reference text
Setelah di-run dengan immunity debugger, pada references string terlihat text dari crackme4 yang dijalankan diawal. Perhatikan tanda panah merah pada gambar 2, ada text [FAIL] dan [SUCCESS], yang menarik disini adalah text "SUCCESS" yang dimunculkan, apa kira-kira kondisi yang akan mencetak text success?. Follow alamat string, dan mulai analisa kembali.

Gambar 3 : Analisis Crackme4

Perhatikan lingkaran merah pada gambar 3, terdapat nilai yang disimpan ke EBP-1C = 91EC78 yang akan dicompare dengan nilai EAX pada lingkaran yang kedua. Lalu berapa atau apa operasi yang dilakukan sebelum mendapatkan nilai EAX. Kita lihat lebih dekat.

Gambar 4 : Operasi
MOV EDX, ..[EBP-20] jika anda perhatikan pada gambar 3 saya memberi angka merah pada gambar, [EBP-20] merupakan angka yang diinput pertama kali.

MOV EAX, ..[EBP-24] merupakan input kedua.

IMUL EDX, EAX : operasi perkalian antara input 1 dan 2 yang disimpan di EDX.

MOV EAX, ..[EBP-28] merupakan input ketiga

IMUL EDX, EAX : operasi perkalian hasil kali input 1 dan 2 dengan input 3

MOV EAX, ..[EBP-2C] merupakan input keempat

IMUL EAX, EDX : operasi perkalian antara input 4 dengan hasil kali bilangan input sebelumnya.

CMP EAX, ..[EBP-1C], ini bagian yang menarik, ternyata hasil perkalian keempat bilangan tersebut akan di compare dengan nilai yang ada di [EBP-1C] yang diketahui bernilai 91EC78 yang dalam desimal bernilai 9563256.

Maka dari analisa kode diatas, dapat diduga kondisinya adalah:

x = input1 * input2 * input3 * input4
if (x == 9563256) print "SUCCESS";
else print "FAIL"

Masalah selanjutnya adalah berapa nilai masing-masing input yang jika dikalikan bernilai 9563256?.


Gambar 5 : Factorial
2*2*2*3*3*317*419 bisa disederhanakan menjadi 8*9*317*419

Gambar 6 : Hasil input factorial
dan hasilnya "SUCCESS", namun ada cara yang lebih mudah,tidak perlu cara memfaktorkan bilangan seperti diatas, karena sejak awal kita sudah tau jawabannya 9563256 yaitu dengan cara :

Gambar 7 : Problem?
Ya, demikian rangkaian pembahasan Top Hat Sec : Reversing Mini Series semoga bermanfaat.



  
5 λ .: Top Hat Sec : Reversing Mini Series Part 4 Crackme4 ( link ) merupakan lanjutan dari top hat sec reversing mini series yang sama seperti edisi sebelumnya, tebak-tebakan angka masih me...

No comments:

Post a Comment

< >