Try Attack/Reverse Engineering[basic]

전략

D4tai1 2018. 9. 16.

1. 휴리스틱

 - 과학적이지는 않지만 경험에 근거한 패턴, 정형화 되기는 어렵지만 AI에서 주로 사용한다.

 

2. 순서

 - UI가 있는 프로그램은 순서대로 흐르지 않는다.

 

3. 인스트럭션

 - 어셈블러는 인스트럭션으로 분해되기 때문에 C언어 코드의 5배 이상 나온다.

 

4. 길이

 - 코드의 길이가 길어서 순차적으로 진행이 불가능하다.

 1) 휴리스틱이용

  [1] 프로그램에서 출력되는 문자열 검색을 통해 핵심 코드부분을 접근하는 공략이다.

   - data 영역에 출력될 값이 있을 것이고,

   - code 영역에 명령어가 들어있을 것이고,

   - 즉, code영역에 적혀있는 출력하려는 주소를 따라가면 data영역의 출력될 값이 있을 것이다.

 2) 특정 API가 호출된 부분을 찾아가는 방법이다.

  [1] API 확인

   - 예를 들어 메세지박스가 출력되었다면,

   - MessageBox API를 찾아서 접근하면 확인할 수 있다.

 

5. 코드보기

1) Analysis

 - 사용자가 자신의 환경에 맞추어 보기 쉽도록 제공해주는 기능이다.

 [1] Remove analysis from selection

  - 특정 범위만 절대수치

 

 [2] Remove analysis from module

  - 전체 절대수치

 

 - 그림을 보면 특정 영역만 다르게 표시되는 것을 볼 수 있다.

 

6. 메모리보기

1) Follow in Dump

 [1] Immediate constant

  - 현재 코드 내에 있는 주소를 찾아가서 확인하는 것

  - 즉, 실행하는 코드에서 들어있는 주소 값의 데이터를 확인

 

  - 401002 주소에 있는 명령어에 적힌 주소 값을 보여준다. 

 

 [2] Selection

  - 선택한 주소의 실행코드를 확인

  - 즉, 현재 코드 자체를 16진수로 변환한 것을 확인

 

  - 401002의 주소의 명령어를 16진수로 보여준다.

 

 

7. 수정 및 변경 [프로세스]

1) Edit - Binary edit

 - 수정할 영역을 선택 후 우클릭해서 Edit - Binary Edit를 클릭한다.

 - 원하는 값으로 수정하고 저장한다.

 

 - F9를 눌러 실행해본다.

 

8. 수정 및 변경 [프로그램]

1) 7.의 수정은 프로그램이 메모리에 로더된 상황에서 수정하는 것이다.

2) 헥사에디터를 이용하려 수정해보려 한다.

 [1] 헥사에디터의 코드를 수정할 경우 재배치가 되기 전의 하드디스크 상의 프로그램 코드를 수정하는 것이다.

 [2] 메인함수를 찾지 않고 관심있는 곳을 찾아서 수정한다.

 

 

9. 검색

1) Search for

 [1] Search for - All referenced strings

  - 문자열만 따로 검색하여 볼 수 있다.

 - 위 그림과 같이 클릭 시 아래와 그림과 같이 나온다.

 

- 위 그림에서 search for text를 누르면 특정문자열을 검색할 수 있다.

 

10. EIP 변경

1) 실행위치 변경

 [1] EIP는 다음 실행할 주소를 저장하는 공간이다.

 [2] New origin here는 다음 실행할 주소를 원하는 곳으로 바꾸는 것이다.

 [3] 이 경우 강제로 변경하기 때문에 스택에 이상이 생겨 시스템에 무리가 올 수 있다.

 

11. IDA 컴파일러

1) 시그니처

 [1] push ebp

 [2] mov ebp, esp

  - 위 두 라인은 55 89 E5라고 표시가 된다.

  - 즉, 메모리에 저 값이 들어있다면 함수 시작을 말하는 프롤로그의 시그니처임을 알 수 있다. 

  - 그러나 저 값이 프롤로그가 아닌 실제의 사용하는 값일 수 있기에 정확하지 않지만 정황상 함수시작이라고 볼 수 있다.

  - 그래서 IDA 컴파일러는 이러한 휴리스틱을 분석하여 보여주는 것이다.

  - 백신의 경우도 이러한 시그니처를 보고 찾는 것이다.

  - 즉, 완벽하지는 않다.

  - 정상이지만 우연하게 일치하여 바이러스로 말할 수 있다.

 

 

 

'Try Attack > Reverse Engineering[basic]' 카테고리의 다른 글

[crackme1] abex' 1th crackme 풀이 및 복원  (0) 2018.11.07
악성코드와 리버싱  (0) 2018.10.09
올리디버거  (0) 2018.09.16
리버싱에 필요한 도구  (0) 2018.09.09
역공학 기초  (0) 2018.08.25

댓글