C300_065
C300_소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> #include <string.h> void main(void) { char string[100]; puts("문자열을 입력한 후 Enter키를 치세요 !"); puts("아무 문자도 입력하지 않으면 프로그램은 종료됩니다 !"); do { gets(string); if (strlen(string) == 0) break; strnset(string, '*', 5); puts(string); } while (1); } | cs |
IDA - Layout Graph
IDA - Text View
strnset: char *strset(char *string, int c, size_t count);
strnset 함수는 string 문자열에서 count만큼의 수를 순서대로 c의 문자로 초기화 하는 것이다.
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 40 41 42 43 44 45 | #include <stdio.h> void main(void) { char var_1; char var_8[7]; int var_C; int var_10; char string[100]; puts(Str); puts(byte_403020); do{ eax = string; gets(eax); ecx = string; var_8 = ecx; edx = var_8; edx = edx + 1; var_C = edx; do{ eax = var_8; cl = [eax]; var_1 = cl; var_8 = var_8 + 1; while(var_1 != NULL); edx = var_8; edx = edx - var_8 var_10 = edx; // var_10에 string의 길이가 저장된다. if(var10 == NULL) break; eax = string; strnset(eax, '*', 5); ecx = string; puts(ecx); }while(1); 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 31 32 33 | #include <stdio.h> void main(void) { char var_1; char var_8[7]; int var_C; int var_10; char string[100]; puts(Str); puts(byte_403020); do{ gets(string); var_8 = string; var_C = string + 1; while(*string++ != NULL); var_10 = string - var_8; // var_10에 string의 길이가 저장된다. if(var10 == NULL) break; strnset(string, '*', 5); puts(string); }while(1); return 0; } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 067 (strlwr) (0) | 2018.07.19 |
---|---|
ASM to C with IDA - 066 (strupr) (0) | 2018.07.19 |
ASM to C with IDA - 064 (strset) (0) | 2018.07.18 |
ASM to C with IDA - 063 (strpbrk) (0) | 2018.07.18 |
ASM to C with IDA - 062 (strtok) (0) | 2018.07.18 |