본문으로 바로가기

ASM to C with IDA - 023

category Reversing/ASM to C 2018. 5. 31. 08:02

C300_023



C300_소스코드



1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h> 
 
main()
{
    int x = 1;
    int y = 2;
    int max;
 
    max = x > y ? x : y;        
}    
 
cs




IDA - Layout Graph






IDA - Text View




삼항 연산자와, if~else문은 똑같은 형식을 가지고 있다. 즉, user가 소스를 작성할 때는 다르지만 컴파일하면 같은 코드가 나온다.


var_C는 조건문 내에서 변수를 저장하기 위해 내부적으로 생긴다.



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> 
 
main()
{
    int x;
    int y;
    int var_C;
    int max;
 
    x = 1;
    y = 2;
    
    eax = x;
    if(eax <= y)
        edx = y
        var_C = edx;
    else
        ecx = x;
        var_C = ecx;            
    
    eax = var_C;
    max = eax;
    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
#include <stdio.h> 
 
main()
{
    int x;
    int y;
    int var_C;
    int max;
 
    x = 1;
    y = 2;
    
    eax = x;
    if(x > y)
        var_C = x;
    else
        var_C = y;            
    
    max = y;
}    
 
cs










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

ASM to C with IDA - 025  (0) 2018.05.31
ASM to C with IDA - 024  (0) 2018.05.31
ASM to C with IDA - 022  (0) 2018.05.30
ASM to C with IDA - 021  (0) 2018.05.30
ASM to C with IDA - 020  (0) 2018.05.30