본문으로 바로가기

ASM to C with IDA - 058 (strstr)

category Reversing/ASM to C 2018. 7. 16. 12:15

C300_058



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 SKY    "sky"
 
void main(void)
{
    char string[100];
    char *ret;
 
    puts("문자열을 입력한 후 Enter키를 치세요 !");
    puts("문자열 중에 sky가 포함되어 있으면, 프로그램은 종료됩니다.");
 
    do
    {
        gets(string);
 
        ret = strstr(string, SKY);
 
        if (ret == NULL)
        {
            puts("문자열 중에 sky가 없습니다.");
        }
        else
        {
            printf("%d 위치에서 sky 문자열을 찾았습니다. ", ret - string);
            break;
        }
 
    } while (1);
}
 
cs




IDA - Layout Graph





IDA - Text View



strstr 함수를 나타낸 코드이다.

strstr 함수는 문자열 안에서 문자열을 검색하는 함수이다.

검색된 문자열이 없으면 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
30
31
#include <stdio.h>
 
void main(void)
{
    int *ret;
    char string[100];
 
    puts(Str);
    puts(byte_403068);
 
    while(1){
        eax = string;
        gets(eax);
    
        ecx = string;
        strstr(ecx, "sky");
        ret = eax;
 
        if(ret == NULL)
            puts(byte_403048);
        else{
            edx = ret;
            eax = string;
            edx = edx - string;
            printf(_Format, edx);
            break;
        }
    }
    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
#include <stdio.h>
 
void main(void)
{
    int *ret;
    char string[100];
 
    puts(Str);
    puts(byte_403068);
 
    while(1){
    
        gets(string);
    
        ret = strstr(string"sky");
 
        if(ret == NULL)
            puts(byte_403048);
        else{
            printf(ret - string, edx);
            break;
        }
    }
    return 0;
}
 
cs





'Reversing > ASM to C' 카테고리의 다른 글

ASM to C with IDA - 060 (strcspn)  (0) 2018.07.17
ASM to C with IDA - 059 (strchr)  (0) 2018.07.17
ASM to C with IDA - 057 (strlen)  (0) 2018.07.16
ASM to C with IDA - 056 (strcat)  (0) 2018.07.16
ASM to C with IDA - 055 (strncmp)  (0) 2018.07.12