C300_059
C300_소스코드
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 | #include <stdio.h> #include <string.h> #define FIND_CHAR 'h' void main(void) { char string[100]; char *ret; puts("문자열을 입력한 후 Enter키를 치세요 !"); puts("문자열 중에 'h'가 포함되어 있으면, 프로그램은 종료됩니다."); do { gets(string); ret = strchr(string, FIND_CHAR); if (ret == NULL) { puts("문자열 중에 'h'가 없습니다."); } else { printf("%d 위치에서 'h' 문자를 찾았습니다. ", ret - string); break; } } while (1); } | cs |
IDA - Layout Graph
IDA - Text View
strchr
strchr 함수는 문자열에서 지정된 문자가 제일 먼저 나타나는 위치를 알 수 있다.
즉, 지정된 문자가 문자열에 포함되어 있는지 알 수 있다.
지정된 문자가 없다면 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 27 28 29 | #include <stdio.h> void main(void) { int *ret; char string[100]; do{ puts(Str); puts(byte_403060); eax = string; gets(eax); ecx = string; strchr(ecx, 'h'); ret = eax; if(ret == NULL) puts(byte_403044); else{ edx = ret eax = string edx = edx - eax; printf(_Format,edx); } }while(1); eax = 0; } | dcs |
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 | #include <stdio.h> void main(void) { int *ret; char string[100]; do{ puts(Str); puts(byte_403060); gets(string); ret = strchr(string, 'h'); if(ret == NULL) puts(byte_403044); else{ printf(_Format, ret - string); break; }while(1) return 0; } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 061 (strspn) (0) | 2018.07.17 |
---|---|
ASM to C with IDA - 060 (strcspn) (0) | 2018.07.17 |
ASM to C with IDA - 058 (strstr) (0) | 2018.07.16 |
ASM to C with IDA - 057 (strlen) (0) | 2018.07.16 |
ASM to C with IDA - 056 (strcat) (0) | 2018.07.16 |