본문으로 바로가기

ASM to C with IDA - 049

category Reversing/ASM to C 2018. 7. 10. 09:52

C300_049



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
#include <stdio.h>
 
void main(void)
{
    int i = 100;
    int j = 1000;
    int k = 12345;
 
    // 정렬을 사용하지 않는 경우
    printf("[%d] \n", i);            // [100]
    printf("[%d] \n", j);            // [1000]
    printf("[%d] \n", k);            // [12345]
 
                                    // 출력을 5자리 설정
    printf("[%5d] \n", i);        // [  100]
    printf("[%5d] \n", j);        // [ 1000]
    printf("[%5d] \n", k);        // [12345]
 
                                // 출력을 10자리로 설정
    printf("[%10d] \n", i);        // [      100]
    printf("[%10d] \n", j);        // [     1000]
    printf("[%10d] \n", k);        // [    12345]
 
                                // 출력을 10자리로 설정하고 왼쪽 정렬
    printf("[%-10d] \n", i);        // [100      ]
    printf("[%-10d] \n", j);        // [1000     ]
    printf("[%-10d] \n", k);        // [12345    ]
}
cs



IDA - Layout Graph





IDA - Text View




printf의 포맷 스트링은 어셈블리단에서는 아무런 영향을 미치지 않는다.

내제된 포맷 스트링의 옵션에 맞추에 출력하는것 같다.


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
#include <stdio.h>
 
void main(void)
{
    int i;
    int j;
    int k;
    
    i = 100;
    j = 1000;
    k = 12345;
 
    eax = i;
    printf(_Format, eax);
    ecx = j;
    printf(aD_0, ecx);
    edx = k;
    printf(aD_1, edx);
 
    eax = i;
    printf(a5d, eax);
    ecx = j;
    printf(a5d_0, ecx);
    edx = k;
    printf(a5d_1, edx);
 
    eax = i;
    printf(a10d, eax);
    ecx = j;
    printf(a10d_0, ecx);
    edx = k;
    printf(a10d_1, edx);
 
    eax = i;
    printf(a10d_2, eax);
    ecx = j;
    printf(a10d_3, ecx);
    edx = k;
    printf(a10d_4, 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
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
 
void main(void)
{
    int i;
    int j;
    int k;
    
    i = 100;
    j = 1000;
    k = 12345;
 
    printf(_Format, i);
    printf(aD_0, j);
    printf(aD_1, k);
 
    printf(a5d, i);
    printf(a5d_0, j);
    printf(a5d_1, k);
 
    printf(a10d, i);
    printf(a10d_0, j);
    printf(a10d_1, k);
 
    printf(a10d_2, i);
    printf(a10d_3, j);
    printf(a10d_4, k);
 
    return 0;
}
cs








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

ASM to C with IDA - 051  (0) 2018.07.11
ASM to C with IDA - 050  (0) 2018.07.11
ASM to C with IDA - 048  (0) 2018.07.10
ASM to C with IDA - 047  (0) 2018.07.10
ASM to C with IDA - 046  (0) 2018.07.09