본문으로 바로가기

ASM to C with IDA - 005

category Reversing/ASM to C 2018. 5. 25. 09:05

C300_005



C300_소스코드



1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h> 
 
main()
{
    int i;
    int hap = 0;
 
    for (i = 1; i <= 10; i = i + 1)
    {
        hap = hap + i;
    }
 
    printf("1부터 10까지의 합 : %d", hap);
}
cs



IDA - Layout Graph





IDA - Text View





IDA - Layout Graph를 보고 위 소스는 반복하고 있다는 느낌을 한눈에 받을 수 있다.

for, while 둘 중 하나를 사용했다는 느낌을 얻을 수 있다.

반복문을 탈출하기 전까지 False인 빨간색 선을 따라 실행하게 되고

반복물을 탈출하고 나서 True인 초록색 선을 따라 실행한다.


jg(jump if greater) : 첫번째 operand가 두번째 operand보다 크면 점프한다. (반복문 탈출)



pseudo code - 의사 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h> 
 
main()
{
    hap = 0;
    i = 1;
    
    for(i; i<10; ;){
        ecx = hap;
        ecx = ecx + i;
        hap = ecx;
        
        eax = i;
        eax = eax + i;
        i = eax
    }    
        edx = hap;
        printf(_Format);
        eax = 0;    
}
cs



pseudo code - 최종 의사 코드



1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h> 
 
main()
{
    int hap = 0;
    int i;
 
    for(i=1; i<10; i++){
        hap = hap + i;
    }
    
    printf("1부터 10까지의 합: %d", hap);
}
cs



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

ASM to C with IDA - 007  (0) 2018.05.25
ASM to C with IDA - 006  (0) 2018.05.25
ASM to C with IDA - 004  (1) 2018.05.25
ASM to C with IDA - 003  (0) 2018.05.24
ASM to C with IDA - 002  (0) 2018.05.24