Gambar 1 : Crackme4 |
Gambar 2 : Reference text |
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?.
http://www.javascripter.net/math/calculators/primefactorscalculator.htm web ini akan membantu.
Gambar 5 : Factorial |
Gambar 6 : Hasil input factorial |
Gambar 7 : Problem? |
Ya, demikian rangkaian pembahasan Top Hat Sec : Reversing Mini Series semoga bermanfaat.
No comments:
Post a Comment