WU5 - asm2

Calvin Winata, Jayson Adrian S



Kali ini saya akan membahas tentang asm2

Disini kita diberikan sebuah assembly, yang kita harus pecahkan return valuenya. (EAX)

berikut asmnya:

Berikut functionnya: asm2(0x4,0x21)

Sebelum kita masuk ke dalam analisa stack kita harus mengetahui konsep stack terlebih dahulu. Setiap inputan / data baru yang masuk kedalam stack akan diletakan dibawah atau dengan kata lain stack expand downwards. Dan untuk argument ada di atas stack.

Visualisasi:

Ok karena konsepnya udah kita miliki, sekarang masuk ke pembahasan asmnya.

pertama stacknya di initate. Dengan pemanggilan base pointer, dan assigning value stack pointer jadi base pointer.

Kita bisa lihat kalo esp di - 16, hal ini berartian bahwa dialokasikan 16 spaces buat esp. Kenapa sub? Kalo kita recall kembali konsep stack, stack itu membesar kebawah.

Jadi sekarang state dari stacknya seperti ini,

Ok selanjutnya

value eax diisi dengan value di ebp+0xc, yaitu 0x21

lalu ebp-0x4 diisi dengan value dari eax.

Jadi sekarang state dari stacknya seperti ini,

Disini juga masih sama seperti sebelumnya asigning value dari ebp + 0x8 ke ebp-0x8

Jadi sekarang state dari stacknya seperti ini,

Lalu ada jump menuju ke <asm2+28></asm2>

yang merupakan

Disini bisa kita lihat dia melakukan comparison di +28 dan +35,

JIKA ebp - 0x8 lesser then or equal to 0xfb46 dia akan jump ke +20, untuk ditambahkan dan akan dilakukan terus hingga ebp-0x8 lebih dari 0xfb46

Kita lihat sekarang value dri ebp-0x8 adalah 0x4 dikarenakan 4 masih kurang dari 64326, kita harus melakukan iterasi ini hingga value dri ebp-0x8 lebih dari 64326.

Jika kalian merupakan orang yang giat kalian bisa melakukan kalkulasi secara manual. Dikarenakan saya ingin efficiency saya pake python

dan ketemu value dari ebp4 nya adalah 0x24c



Flag: 0x24c


Thank you for reading!