C300_016
C300_소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> #define KOREA "대한민국" #define BOOK "This is a book." const char* SOCCOR = "나는 축구를 좋아합니다."; main() { printf("문자열형 상수 KOREA의 값 : %s \n", KOREA); printf("문자열형 상수 BOOK의 값 : %s \n", BOOK); printf("문자열형 상수 SOCCOR의 값 : %s \n", SOCCOR); } | cs |
IDA - Layout Graph
IDA - Text View
#define은 바로 offset이 push 된다.
하지만 pointer는 레지스터로 한번 옮기고 push된다.
실제로 _SOCCOR는 offset unk_403020을 가르키고 있고, unk_403020에는 문자열이 들어가 있다.
pseudo code - 의사코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> main() { printf(_Format, unk_403038); printf(byte_403078, aThisIsABook); eax = _SOCCOR; printf(byte_40309C, eax); eax = 0; } | cs |
pseudo code - 최종 의사 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> #define temp1 = "대한민국"; #define temp2 = "This is a Book"; char *temp = "나는 축구를 좋아합니다."; main() { printf(_Format, temp1); printf(byte_403078, aThisIsABook); printf(byte_40309C, temp); } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 018 (0) | 2018.05.29 |
---|---|
ASM to C with IDA - 017 (0) | 2018.05.29 |
ASM to C with IDA - 015 (0) | 2018.05.28 |
ASM to C with IDA - 014(??) (0) | 2018.05.28 |
ASM to C with IDA - 013 (0) | 2018.05.27 |