본문으로 바로가기

ASM to C with IDA - 028

category Reversing/ASM to C 2018. 6. 1. 18:34

C300_028



C300_소스코드



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h> 
 
main()
{
    int i;
    int j;
 
    for (i = 1; i <= 9; i++)
    {
        for (j = 1; j <= 9; j++)
        {
            printf("%d * %d = %2d \n", i, j, i * j);            
        }
    }
}
 
cs



IDA - Layout Graph






IDA - Text View




for문과 while문이 정확히 assembly로 구분되지 않는다.

하지만 초기화, 조건, 조건 탈출을 위한 연산 형태로 반복되기 때문에 for문으로 예측하고 의사코드를 작성 하였다.



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 j;
    int i;
    
    for(i = 1; i < 9; i++){
        for(j = 1; j < 9; j++){
            edx = i;
            edx = edx * j;
            eax = j
            ecx = i;
            printf(_Format, ecx, eax, edx);            
        }
    }    
    eax = 0;
}
 
cs



pseudo code - 최종 의사코드



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
main()
{
    int j;
    int i;
    
    for(i = 1; i < 9; i++){
        for(j = 1; j < 9; j++){
            printf(_Format, i, j, i*j);            
        }
    }    
    eax = 0;
}
 
cs


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

ASM to C with IDA - 030  (0) 2018.07.03
ASM to C with IDA - 029  (0) 2018.07.03
ASM to C with IDA - 027  (0) 2018.06.01
ASM to C with IDA - 026  (0) 2018.06.01
ASM to C with IDA - 025  (0) 2018.05.31