C300_017
C300_소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> main() { int x = 1; int y = 2; int z; int zz; z = x + y; zz = printf("z의 값 : %d \n", z); printf("zz의 값 : %d \n", zz); } | cs |
IDA - Layout Graph
IDA - Text View
어떤 함수의 반환값은 일반적으로 eax 레지스터에 저장된다.
위 소스는 printf의 반환 값을 zz에 저장하고 출력하고 있다.
printf의 반환 값은 문자열의 길이이다.(null 문자를 포함한 길이)
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 | #include <stdio.h> main() { int x; int y; int z; int zz; x = 1; y = 2; eax = x; eax = eax + y; z = eax; ecx = z; printf(_Format, ecx); zz = eax; edx = zz; printf(aZz, edx); eax = 0; } | cs |
pseudo code - 최종 의사 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> main() { int x; int y; int z; int zz; x = 1; y = 2; z = x + y; zz = printf(_Format, z); printf(aZz, zz); } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 019 (0) | 2018.05.29 |
---|---|
ASM to C with IDA - 018 (0) | 2018.05.29 |
ASM to C with IDA - 016 (0) | 2018.05.28 |
ASM to C with IDA - 015 (0) | 2018.05.28 |
ASM to C with IDA - 014(??) (0) | 2018.05.28 |