1. 본래 소스
#include<stdio.h>
int main()
{
       int a = 1;
       int b = 2;
       int c;
       c = a + b;
       printf("%d",c);
       
       return 0;
}

   2. IDA 오픈
     

  • 3개의 변수로 인해서 4바이트를 3번한 0x0C만큼 선언
  • 1과 2가 들어가고 eax를 통해서 더하기 연산
  • 마지막 출력

  1. 컴파일 옵션
     

  • 최적화 옵션 모두 해제

'Reversing > C-300' 카테고리의 다른 글

[C-300] 004  (0) 2017.07.04
[C-300] 003  (0) 2017.07.04
[C-300] 002  (0) 2017.07.04
[C-300] 001  (0) 2017.07.04
  1. 원본 소스
#include <stdio.h>
void main()
{
       int x;
       int y;
       x = 10;
       y = x - 5;
       if (x > y)
       {
              printf("x의 값이 y보다 큽니다.\n");
       }
       else
       {
              printf("x의 값이 y보다 작습니다.\n");
       }
}


  1. 실행 결과 창 
     



  1. IDA로 열람
     

  • 분석 결과 어렵지 않다.

'Reversing > C-300' 카테고리의 다른 글

[C-300] 000  (0) 2017.07.04
[C-300] 003  (0) 2017.07.04
[C-300] 002  (0) 2017.07.04
[C-300] 001  (0) 2017.07.04
  1. 원본 소스
#include <stdio.h>
#define  X   1
#define  PI  3.141592
void main()
{
       double z;
       z = X + PI;
       printf("%f", z);
}

  1. IDA로 열어봤을 때

  • 노란 부분을 더블클릭 해서 들어가보면

1+3.141592인 4.141592가 들어가 있는 것을 확인

  • 디컴파일 결과



  1. 궁금한 것
  • xmm0 레지스터란? 
- x64 아키텍처는 범용 레지스터 16개(이하 '정수 레지스터')와 부동 소수점용으로 사용 가능한 XMM/YMM 레지스터 16개를 제공합니다.
휘발성 레지스터는 호출자가 호출 중에 제거되는 것으로 가정하는 스크래치 레지스터입니다.
함수 호출 중에 값을 유지하려면 비휘발성 레지스터가 필요합니다. 호출 수신자는 비휘발성 레지스터(사용하는 경우)를 저장해야 합니다.
(MSDN에 나와있는 레지스터 설명 항목)

     

     
     그냥 128비트 실수 연산 레지스터라 생각하자.


'Reversing > C-300' 카테고리의 다른 글

[C-300] 000  (0) 2017.07.04
[C-300] 004  (0) 2017.07.04
[C-300] 002  (0) 2017.07.04
[C-300] 001  (0) 2017.07.04
  1. 소스
#include <stdio.h>
void main()
{
       int x;
       int y;
       int z;
       x = 1;
       y = 2;
       z = x + y;
       printf("%d", z);
}

  1. IDA로 열람
     

     - 최적화 옵션 적용

     그럼 최적화 옵션을 꺼보자.
     


-최적화 옵션 미적용한 상태, 계산과정까지 자세히 나온다.




'Reversing > C-300' 카테고리의 다른 글

[C-300] 000  (0) 2017.07.04
[C-300] 004  (0) 2017.07.04
[C-300] 003  (0) 2017.07.04
[C-300] 001  (0) 2017.07.04
  1. 원본소스
#include <stdio.h>
void main()
{
       printf("오늘부터 나는 C 프로그래머!");
}

  1. IDA로 열어본 코드
     

  • 처음이라 아직 어려운것은 없음.

'Reversing > C-300' 카테고리의 다른 글

[C-300] 000  (0) 2017.07.04
[C-300] 004  (0) 2017.07.04
[C-300] 003  (0) 2017.07.04
[C-300] 002  (0) 2017.07.04

+ Recent posts