본문으로 바로가기

ASM to C with IDA - 046

category Reversing/ASM to C 2018. 7. 9. 11:43

C300_046



C300_소스코드



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>
#include <conio.h>
 
#define ENTER 13
 
void main(void)
{
    int ch;
    int i = 0;
 
    printf("아스키 코드로 변환할 키를 누르세요... \n");
    printf("Enter 키를 누르면 프로그램은 종료됩니다. \n");
 
    do
    {
        ch = getch();
 
        printf("(%d), 문자 : (%c) , 아스키 코드 = (%d) \n", i++, ch, ch);
 
    } while (ch != ENTER);
}
 
cs




IDA - Layout Graph





IDA - Text View




딱히 특이점은 없었다.

다만 먼저 입력을 받고 비교를 통한 반복이 계속되므로 do~while을 사용해 반복문을 구성했다.

 

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 i;
    int var_8;
    int var_C;
 
    i = 0;
    printf(_Foramt);
 
    printf(aEnter);
 
    do
    {
        var_8 = getch();
        eax = i;
        var_C = eax;
        ecx = var_8;
        edx = var_8;
        eax = var_C;
        printf(aD, eax, edx, ecx);
 
        ecx = i;
        ecx = ecx + 1;
        i = ecx;
    }while(var_8 != 13);
    
    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
#include <stdio.h>
 
void main(void)
{
    int i;
    int var_8;
    int var_C;
 
    i = 0;
    printf(_Foramt);
 
    printf(aEnter);
 
    do
    {
        var_8 = getch();
        var_C = i;
        printf(aD, var_C, var_8, var_8);
        var_C++;
    }while(var_8 != 13);
    
    return 0;
}
 
cs





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

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 - 045  (0) 2018.07.09
ASM to C with IDA - 044  (0) 2018.07.09
ASM to C with IDA - 043  (0) 2018.07.08