본문으로 바로가기

ASM to C with IDA - 062 (strtok)

category Reversing/ASM to C 2018. 7. 18. 11:55

C300_062



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
#include <stdio.h>
#include <string.h>
 
#define TOKEN    " "
 
void main(void)
{
    char string[100];
    char *token;
 
    puts("문자열을 입력한 후 Enter키를 치세요 !");
 
    gets(string);
 
    token = strtok(string, TOKEN);
 
    while (token != NULL)
    {
        puts(token);
 
        token = strtok(NULL, TOKEN);
    }
}
 
cs




IDA - Layout Graph






IDA - Text View




strtok 함수

strotk 함수는 문자열을 자르는 함수이다.

두 개의 인자 operand1, operand2를 전달한다. 

operand2가 나올 때까지 operand1에서 검색을 하고 operand2가 나오면 잘라내는 함수이다.

operand1에 NULL을 넣으면 이전 strtok에서 처리했던 문자열을 가져와 처리한다.




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
#include <stdio.h>
 
void main(void)
{
    char *token;
    char string[100];
 
    puts(Str);
    
    eax = string;
    gets(eax);
 
    ecx = string;
    strtok(ecx, " ");
 
    token = eax;
    
    while(token != NULL)
    {
        edx = token;
        puts(edx);
 
        strtok(NULL" ");
        token = eax;
    }
    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
#include <stdio.h>
 
void main(void)
{
    char *token;
    char string[100];
 
    puts(Str);
    
    gets(string);
 
    token = strtok(string" ");
    
    while(token != NULL)
    {
        puts(token);
 
        token = strtok(NULL" ");
    }
    return 0;
}
 
cs








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

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 - 061 (strspn)  (0) 2018.07.17
ASM to C with IDA - 060 (strcspn)  (0) 2018.07.17
ASM to C with IDA - 059 (strchr)  (0) 2018.07.17