전략
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 |
댓글