안녕하세요 오늘은 5번 문제를 풀어보겠습니다.
문제는 프로그램의 등록키를 알아내라는 문제네요
이 문제를 풀기 전 PEID, ollydump 플러그인, lordPE 라는 세가지의 프로그램이 필요합니다만 이 프로그램들은 중간 중간 필요할 때 마다 올려드릴테니 딱히 다른데서 구하실 필요는 없습니다.
우선 프로그램의 실행 화면입니다.
그럼 PEID라는 프로그램을 사용해보겠습니다. 이 프로그램은 원하는 파일의 정보를 알아내주는 프로그램인데 알려주는 정보로는 무엇으로 패킹되었나 무엇으로 만들어졌나 같은 정보들을 알려주기때문에 리버싱을 하기 전 해보는 것이 좋습니다.
(실행이 안되시면 알려주세요 바로 수정하겠습니다.)
실행 화면입니다.
UPX로 패킹되었다고 나오네요. UPX를 언패킹 하기 위해서는 프로그램으로 언패킹하는 방법도 있지만 직접 언패킹 해보도록 하겠습니다.
UPX 패킹은 코드 맨 마지막에 OEP(original entry point, 프로그램의 시작점)으로 가는 jmp문이 달려있습니다. 즉 마지막 줄에 있는 jmp문을 타고 가면 진짜 코드가 나오고 그 코드를 저장해주면 됩니다.
요렇게 jmp문에다가 브레이크 포인트(break point 이하 BP, F2)를 걸어주고 F9를 눌러 BP 전까지 프로그램을 실행시킵니다.
그리고 한단계씩 실행시키는 F8을 눌러주시면 대망의 진짜 코드가 나타나게 됩니다.
그럼 이제 이 진짜 코드를 저장해줘야겠죠? 저장해주기 위해서는 ollydump 플러그인이 필요합니다.
까면 나오는 dll 파일을 올리디버거 플러그인 위치에 넣어주시면 됩니다.
그러면 플러그인을 실행시켜보죠
저장할 코드를 클릭하고 플러그인을 실행시켜봅시다.
여기서 중요한점은 Rebuild Import를 체크 해제해주어야 합니다. 체크해주면 자동으로 Rebuild하는데 실패하는경우가 많다합니다.
그럼 Dump를 하고 저장을 합니다. _원본파일명.exe로 저장하면 나중에 알아볼때 편리합니다.
근데 저장한 것을 열어보면 오류가 나는 것을 확인할 수 있습니다.
이유는 Rebuild를 안했기 때문인데요 그러므로 lordPE 라는 프로그램을 통해 파일을 다시 rebuild 해보겠습니다.
rebuild 하는 방법은 아이콘을 끌어다 놓거나 Rebuild PE 를 통해 선택하는 방법이 있습니다.
자 이제 언패킹은 끝났습니다. 이제 분석만 남았는데 분석은 가벼운 문자열 분석으로도 끝납니다.
그냥 읽어만 봐도 답이 유추가 되시죠?
잘 읽어보셧으면 손가락 눌러주시고 덧글 달아주세요
'해킹 > 리버스 엔지니어링' 카테고리의 다른 글
코드엔진 basic RCE L07 풀이 (0) | 2012.06.09 |
---|---|
코드엔진 basic RCE L06 풀이 (back to user mode) (1) | 2012.06.06 |
코드엔진 basic RCE L04 문제 풀이(안티디버거우회) (0) | 2012.05.26 |
코드엔진 basic RCE L03 풀이 (0) | 2012.05.23 |
코드엔진 basic RCE 2번(L02) 풀이 (1) | 2012.05.18 |