본문으로 바로가기

ASM to C with IDA - 017

category Reversing/ASM to C 2018. 5. 29. 07:59

C300_017



C300_소스코드



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h> 
 
main()
{
    int x = 1;
    int y = 2;
    int z;
    int zz;
 
    z = x + y;
 
    zz = printf("z의 값 : %d \n", z);        
    printf("zz의 값 : %d \n", zz);
}
 
cs



IDA - Layout Graph





IDA - Text View




어떤 함수의 반환값은 일반적으로 eax 레지스터에 저장된다.

위 소스는 printf의 반환 값을 zz에 저장하고 출력하고 있다.

printf의 반환 값은 문자열의 길이이다.(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
#include <stdio.h> 
 
main()
{
    int x;
    int y;
    int z;
    int zz;
 
    x = 1;
    y = 2;
    
    eax = x;
    eax = eax + y;
    z = eax;
 
    ecx = z;
    printf(_Format, ecx);            
 
    zz = eax;
    edx = zz;
    printf(aZz, edx);
 
    eax = 0;
}
 
cs



pseudo code - 최종 의사 코드



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h> 
 
main()
{
    int x;
    int y;
    int z;
    int zz;
 
    x = 1;
    y = 2;
    
    z = x + y;
 
    zz = printf(_Format, z);            
 
    printf(aZz, zz);
}
 
cs


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

ASM to C with IDA - 019  (0) 2018.05.29
ASM to C with IDA - 018  (0) 2018.05.29
ASM to C with IDA - 016  (0) 2018.05.28
ASM to C with IDA - 015  (0) 2018.05.28
ASM to C with IDA - 014(??)  (0) 2018.05.28