
Rev4Fun (75pts) Reverse for fun and profit ... Hint! Ada kesalahan sedikit, sudah diperbaiki ~ rev4fun_fixed e96493405c7a194936f8cdd62f7585bc v Deksripsi Peserta diberikan sebuah file binnary rev4fun yang harus di reverse engineering untuk mendapatkan sebuah flag. v Penyelesaian Langsung saja kita analisa dengan debuging menggunakan tools gdb. Lakukan breakpoint pada address yang memiliki cmp (Comparison Instructions). Address yang di breakpoint adalah: 0x00000000004006bd <+80>: cmp DWORD PTR [rbp-0x28],0x9 0x00000000004006cb <+94>: cmp al,0x30 0x00000000004006d7 <+106>: cmp al,0x64 0x00000000004006e3 <+118>: cmp al,0x65 0x00000000004006ff <+146>: cmp eax,edx 0x0000000000400714 <+167>: cmp eax,edx 0x0000000000400725 <+184>: cmp edx,eax 0x000000000040073c <+207>: cmp eax,DWORD PTR [rbp-0x24] 0x0000000000400745 <+216>: cmp al,0x6b 0x0000000000400756 <+233>: cmp eax,edx 0x000000000040075e <+241>: cmp al,0x73 0x000000000040076a <+253>: cmp dl,al 0x0000000000400772 <+261>: cmp al,0x72 Breakpoint pertama merupakan pengecekan panjang dari inputan kita tidak lebih dari 0x9 dilihat dari address setelah breakpoint tersebut 0x00000000004006c1 <+84>: jg 0x40078c <main+287> Jg merupakan jump is greater yang dimana jika nilai lebih besar dari 0x9 maka langsung lompat ke 0x40078c dimana address tersebut merupakan dari akhir program 0x000000000040078c <+287>: mov eax,0x0 Ok mari kita lanjut dengan melakukan input ‘abcdefghi’ untuk memudahkan pengecekan . Pada breakpoint yang ke dua terjadi pengecekan al, 0x30 yang dimana al bernilai 0x68 (‘h’) harus sama dengan 0x30 karena address selanjutanya melakukan jump ke 0x40078c, jne merupakan jump if not equal. 0x4006cd <main+96>: jne 0x40078c <main+287> Breakpoint 2, 0x00000000004006cb in main () gdb-peda$ x/wx $al 0x68: Cannot access memory at address 0x68...