Selasa, 25 Agustus 2015

Reverse Engineering: Constant

...


constant.c

#include <stdio.h>

#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'

int main(){
 int area;
 
 area = LENGTH * WIDTH;
 printf("Value of area: %d\n", area);
 printf("%c", NEWLINE);

 return 0;
}

// Kompilasi
// gcc constant.c -o constant.out

// Hasil
// Value of area: 50
//

constant.asm

; => ASM
var_4= dword ptr -4

; int main(){
push    rbp
mov     rbp, rsp
sub     rsp, 10h

; area = 50
mov     [rbp+var_4], 32h ; 50

; printf("Value of area: %d\n", area)
mov     eax, [rbp+var_4]
mov     esi, eax
mov     edi, offset format ; "Value of area: %d\n"
mov     eax, 0
call    _printf

; putchar("%c", NEWLINE)
mov     edi, 0Ah        ; c ; 0a = '\n'
call    _putchar

; return 0
mov     eax, 0
leave
retn

Tidak ada komentar:

Posting Komentar