

아예 처음부터 감을 잡지 못한 채 엉뚱한 데서 시간을 낭비하지 않게 하기 위하여, 풀어낸 문제에 한해 최소한의 힌트를 제공 해 드리려고 한다.
조언
Easy Crack, Easy Keygen, Easy Unpack 문제는 생략합니다.
- ELF는 리눅스 운영체제에서의 실행 파일이고, 윈도우즈에서의 IDA pro 원격 디버깅 또는 리눅스의 GDB로 분석할 수 있다.
- 윈도우즈 프로그램이 어떻게 API를 사용하여 비트맵을 처리하는지 알아보자.
- 분석 문제
- C# 또는 닷넷으로 제작된 프로그램은 일반적인 디버거로 분석할 수 없고, 디컴파일러의 도움을 받아 코드 자체를 분석해야 한다.
- 취향에 따라 다음의 닷넷 디컴파일러를 선택해서 사용하라.
.NET Reflector |
Red Gate |
유료 |
dotPeek |
JetBRAINS |
무료 |
JustDecompile |
Telerik |
무료 |
- 사실 정말 쉽게 정답을 확인할 수 있는 방법이 있다;(아마 의도치 않은 것으로 생각됨).
- 오토핫키 첫 문제인 만큼 관련 도구를 검색해서 빨리 끝내버려도 상관없을 것 같다.
- readme.txt의 힌트가 이해되지 않을 수 있다. DecryptKey 문자열과 EXE's Key 문자열을 구한 다음 각각 MD5 복호화해서 공백으로 연결하라는 것이다.
- MD5 암복호화 서비스를 받을 수 있는 웹사이트들은 구글을 검색하면 쉽게 찾을 수 있다.
- AutoHotkey1 문제의 ahk.exe와 동시에 비교하면서 분석하는 것을 권장한다.
- 하드코어 분석 문제
- 게임에 존재하는 모든 적을 제거하면 50문자로 이루어진 정답 메시지를 볼 수 있는 구조
- 문제를 해결하기 위해 여러가지 접근법이 나올 수 있는 것 같다. 개인적으로는 528이라는 비례상수를 이용하였는데, 이것이 정석적인 방법일 것이라 생각한다.
- 64비트 파일은 x86 환경에서 동작하지 않으며, x64버전 IDA pro로 분석할 수 있다.
- Run-time error가 뜨지 않게 해보자.
- 분석을 위해서는 가장 먼저 SendMessage 함수를 호출하는 곳을 찾는 것을 권장한다.
- Packed.exe 파일은 Original.exe 파일을 패킹했을 뿐 원본은 서로 동일한 파일이다. 단, Original.exe 파일은 정답을 ???????? 형태로 보여주지 않도록 수정되어 있다.
- 하드코어 분석 문제
- 모든 가능성을 조합하여 범위를 축소해 나간다.
- 작동 방식을 메모하면서 정리하자.
- MetMett() 메서드의 디컴파일을 확인할 수 없는데(디컴파일러에서 오류를 낸다), 이는 문제에서 의도된 것이다.
- 입력 값을 여러 공간에 저장하므로 메모하면서 정리한다.
- 멘토이신 EVERNICK(http://ruinick.tistory.com/) 님의 조언으로는 해쉬값을 충돌시키면 구할 수 있다고 하였다.
역추적까지는 들어갔지만 테이블을 만드는 부분부터는 다른 공부로 인해 아직 미해결 상태