C300_045
C300_소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> #define MAX(a,b) a > b ? a : b #define MIN(a,b) a < b ? a : b void main(void) { int i, j; i = 5; j = 7; printf("최대값은 %d입니다. \n", MAX(i, j)); printf("최소값은 %d입니다. \n", MIN(i, j)); } | cs |
IDA - Layout Graph
IDA - Text View
일반적으로 디스어셈블할 때 기존 조건문의 조건에 반대로 디스어셈블 된다.
여러가지 이유가 있지만, 코드를 좀 더 효율적으로 하기 위해 이렇게 조건이 반대되어 나온다.
하지만 조건을 다시 반대로 해석할지 그대로 해석할지는 사용자의 마음이다.
또한 매크로 함수는 전처리 단계에서 처리되기 때문에 디스어셈블단에 보이지 않는다.
단지 치환된 이후가 보인다.
pseudo code - 의사코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <stdio.h> void main(void) { int i; int j; int var_C; int var_10; i = 5; j = 7; eax = i; if(eax <= j){ edx = j; var_C = edx; }else{ ecx = i; var_c = ecx; } eax = var_C; printf(_Format, eax); ecx = i; if(ecx >= j){ eax = j; var_10 = eax; }else { edx = i; var_10 = edx; } ecx = var_10; printf(byte_403020, ecx); eax = 0; } | cs |
pseudo code - 최종 의사코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <stdio.h> void main(void) { int i; int j; int var_C; int var_10; i = 5; j = 7; if(i <= j){ var_C = j; }else{ var_C = i; } printf(_Format, var_C); if(i >= j){ var_10 = j; }else { var_10 = i; } printf(byte_403020, var_10); return 0; } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 047 (0) | 2018.07.10 |
---|---|
ASM to C with IDA - 046 (0) | 2018.07.09 |
ASM to C with IDA - 044 (0) | 2018.07.09 |
ASM to C with IDA - 043 (0) | 2018.07.08 |
ASM to C with IDA - 042 (0) | 2018.07.08 |