C300_034
C300_소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> main() { int kor[10] = { 100, 90, 35, 60, 75, 55, 95, 80, 90, 70 }; int i; for (i = 0; i<10; i++) { printf("%d ", kor[i]); } } | cs |
IDA - Layout Graph
IDA - Text View
우선 변수를 할당할 때 한번에 40byte의 메모리를 할당한다. 실제로 40 byte의 크기를 가진 자료형은 없기 때문에 배열로 간주했다.
또한 인접한 주소를 사용하고 4byte씩 사용하기 때문에 int 형 배열로 가정했다.
지금까지 void main()을 사용하여 return 값 없이 코드를 작성했는데 모든 의사 코드를 보면 반환값이 존재한다(return 0)
왜냐하면 필자는 void 형을 "반환 값이 없다"라고 생각하기 보다 "아직 정해지지 않음"이라고 생각하기 때문이다.
또한 assembly로 보아도 xor eax, eax를 통해 return 0을 항상 해준다는 것을 알 수 있다. 따라서 필자는 앞으로도 반환값을 적어줄 계획이다.
pseudo code - 의사코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> main() { int i; int kor[10] = {100, 90, 35, 60, 75, 55, 95, 80, 90, 70}; for(i=0; i<10; i++) { ecx = i; edx = kor[ecx]; printf(_Format, edx); } eax = 0; } | cs |
pseudo code - 최종 의사코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> main() { int i; int kor[10] = {100, 90, 35, 60, 75, 55, 95, 80, 90, 70}; for(i=0; i<10; i++) { printf(_Format, kor[i]); } return 0; } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 036 (0) | 2018.07.05 |
---|---|
ASM to C with IDA - 035 (0) | 2018.07.05 |
ASM to C with IDA - 033 (0) | 2018.07.04 |
ASM to C with IDA- 032 (0) | 2018.07.04 |
ASM to C with IDA - 031 (0) | 2018.07.03 |