C300_068
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; strrev( string ); puts( string ); } while( 1 ); } | cs |
IDA - Layout Graph
IDA - Text View
strrev함수: char *strrev(char *string)
string문자열을 역순으로 수정하는 함수이다.
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 | #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_C; var_10 = edx; //var_10에 string의 길이가 저장됨. if(var_10 == 0) break; eax = string; strrev(eax); 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 | #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(*var_8++ != NULL); var_10 = var_8 - var_C; //var_10에 string의 길이가 저장됨. if(var_10 == 0) break; strrev(string); puts(string); }while(1) return 0; } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 070 (0) | 2018.07.20 |
---|---|
ASM to C with IDA - 069 (strdup, strcpy) (0) | 2018.07.20 |
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 - 065 (strnset) (0) | 2018.07.19 |