첫번째 타겟은 ASProtect 1.23 RC1으로 정했다.
UPX로 하자니 시시하다고 욕할거같다.
타겟 파일은
| Unpack !! - ASProtect 1.23 RC1 -> Alexey Solodovnikov (8) | 2009/09/03 |
|---|---|
| 언패킹 기초 지식 !! (3) | 2009/09/03 |
Tag : aspr1.23, ASProtect 1.23 RC1, ASProtect 1.23 RC1 -> Alexey Solodovnikov, ASProtect 1.2x, Unpack, Unpacking, 언패킹, 언팩
아마도 이 블로그의 방문자 중 대부분은 본인의 카페나 네이버블로그등을 보면서 어느 정도
기초 지식을 쌓았으리라 생각되지만, 아닌 사람도 있기에 이 글을 쓴다.
아주 짧고 간단하게 설명하겠다.
언패킹이란 무엇인가?
패킹의 반대말이다.
그럼 패킹이란 무엇인가?
쉽게 예를 들어, 당신이 만든 프로그램이 있다. 컴파일하고 난 뒤의 용량을 보니 11MB였다.
티스토리 블로그에 올리려고 보니, 티스토리 용량 제한은 10MB이다.
그런데 당신은 곧죽어도 올려야겠다.
물론 ZIP등으로 압칙하는 방법이 있겠지만, 보통 단일파일을(executable file or etc..) 압축할
경우 패킹이라는 방법을 많이 쓴다.
한마디로 패킹도 압축, ZIP도 압축이다. 그럼 무슨 차이가 있을까?
ZIP으로 압축할 경우 다시 사용할 때에 압축을 풀고 사용해야 한다.
하지만 패킹할 경우는 압축을 풀 필요가 없이 그냥 실행이 된다.
그렇다면, 패킹이 무조건 좋은 것일까?
물론 아니다. 좋은 점이 있으면 나쁜 점도 있기 마련. 참고로 패커의 종류는 많다. A라는 패커의 경우, 1번 프로그램을 패킹하면 잘 실행이 되는 반면, 2번 프로그램을 패킹하면 실행할 때 오류가 난다. 이런거다. 무조건 패킹한다고 잘 되는게 아니라 궁합처럼 맞는 프로그램이 있고 아닌 프로그램이 있다고 생각하면 된다.
가장 좋은 예가 서든어택이나 리니지등의 프로텍터가 themida라는 프로그램으로 패킹되었을 때다. 처음에 많은 사람들이 themida라는 오류메세지가 뜬다며 바이러스라고 소문내고 다닐때가 있었다. 이처럼 무조건 좋다고 쓰지 말고 좀 가려가면서 쓰자.
언패킹의 과정은?
1. OEP(Original Entry Point) 찾기
프로그램을 패킹하기 전의 원래 Entry Point를 찾는 과정이다.
2. 덤프.
OEP를 찾은 뒤에 그 프로그램의 코드를 전부 복사하는 과정이라고 보면 된다.
3. IAT(Import Address Table)복구하기.
덤프하고 난 뒤의 생성물은 헥스값만 그대로 붙여넣었다고 볼 수 있다.
한마디로 API등이 지정되어있지 않다. 이것을 지정해 주는 작업이다.
위의 3가지가 기본적인 과정이다. 하지만 패커의 종류에 따라 Stolen Code등 많은 옵션
이 붙을 수 있다.
초기 패커의 목적은 용량을 줄이는 압축이지만, 시대가 흐르고 보안의 중요성이 알려지자,
여러가지 옵션을 추가해 더이상 패커가 아닌 프로텍터로 변해가고 있다.
프로그램의 용량을 줄이는 과정에서 압축된 코드들은 일반적으로 알아볼 수 없기 때문이다.
| Unpack !! - ASProtect 1.23 RC1 -> Alexey Solodovnikov (8) | 2009/09/03 |
|---|---|
| 언패킹 기초 지식 !! (3) | 2009/09/03 |
Tag : 언패킹, 언패킹 기초 지식, 언팩, 언팩강좌