본문으로 바로가기

ASM to C with IDA - 061 (strspn)

category Reversing/ASM to C 2018. 7. 17. 09:08

C300_061



C300_소스코드



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
 
void main(void)
{
    char *string = "this is a very good !";
    char *strCharSet = "abcdefghijklmnopqrstuvwxyz ";
    unsigned int pos;
 
    pos = strspn(string, strCharSet);
 
    puts("0         1         2         3");
    puts("0123456789012345678901234567890");
    puts(string);
    puts(strCharSet);
 
    printf("%d 위치에서 일치되지 않는 첫 문자를 발견하였습니다. \n", pos);
}
 
cs




IDA - Layout Graph




IDA - Text View




strspn: size_t strspn (const char *str1, const char *str2);


str1의 문자열에서 str2의 문자들을 포함하고 있는 str1의 길이를 구한다.

즉, 일치하지 않는 문자열을 찾을 때 주로 사용된다.



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
#include <stdio.h>
 
void main(void)
{
    char *string;
    char *strCharSet;
    int pos;
 
    string = aThisIsAVeryGoo;
    strCharSet = aAbcdefghijklmn;
    
    eax = strCharSet;
    ecx = string;
    strspn(ecx, eax);
    pos = eax;
    
    puts(Str)
    
    puts(a01234567890123);
        
    edx = string;
    puts(edx);
 
    eax = strCharSet;
    puts(eax);
 
    ecx = pos;
    printf(_Format, ecx);
 
    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)
{
    char *string;
    char *strCharSet;
    int pos;
 
    string = aThisIsAVeryGoo;
    strCharSet = aAbcdefghijklmn;
    
    pos = strspn(string, strCharSet);
    
    puts(Str)
    
    puts(a01234567890123);
        
    puts(string);
 
    puts(strCharSet);
 
    printf(_Format, pos);
 
    return 0;
}
 
cs






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

ASM to C with IDA - 063 (strpbrk)  (0) 2018.07.18
ASM to C with IDA - 062 (strtok)  (0) 2018.07.18
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 - 058 (strstr)  (0) 2018.07.16