우선 파일을 받았을 때 있는 ReadMe.txt를 보면
OEP를 찾으란다.
...O...OEP...?그게 뭐지..
일단 난 OEP가 뭔지도 몰라서 검색을 했는데 패킹과 관련이 있는 거 같았다. 패킹한다고 많이 들어봤는데 사실 정확한 의미를 몰라서 알아보자. 아직 모르는 게 정말 산더미이다ㅠ_ㅠ
일단 Packing이란 본래의 내용물을 박스에 넣고 박스를 포장지로 둘러싸고 띠로 둘러서 리본을 매는 포장과 같다 볼 수 있다. 즉 원래의 코드(프로그램)가 다른 코드들에 의해 둘러싸여진다는 것인데 패킹을 하는 이유에는 보호와 압축에 있다.
우선 본래의 코드를 보호하기 위해 프로그램을 리버싱하지 못하기 위해 우회하는 코드들로 패킹을 한다. 또 프로그램의 크기를 줄이기 위해 프로그램의 필요한 코드 등만을 가져와 패킹한다.
그래서 패킹을 하는 Packer에는 수많은 툴이 있지만 크게 종류로 분류하자면 실행파일을 보호하는 Protector, 실행파일을 압축하는 Compressor로 나눌 수 있다.
그렇다면 OEP는 무엇일까. OEP란 Original Entry Point로 프로그램의 진짜 시작 위치를 말한다.
즉 그림처럼 target의 코드 부분을 가져오며 패킹을 하면 그 본래의 코드의 시작부분이 OEP가 된다.
그렇담 다시 문제를 이해해보자면 Easy_UnpackMe.exe파일은 패킹이 되었고 이의 OEP를 찾으면 된다는 것이다.
PEiD란 툴을 이용하면 무슨 툴로 패킹되었는지 확인할 수 있다고 하니 다운받아서 까보자.
음 일단 EP Section에 있는 .GWan이 무엇인지 검색해봤더니 뭐로 패킹되었는지 알 수 없다고 한다. IDA로 까보며 알아내자. 일단 PEiD에서 알려준 Entrypoint인 0x0000A04B로 가보자
IDA로 까본 결과 정확히는 0x0040A04B인거 같다. 하여튼 가보면
음 여기는 아닌 것 같다. 코드의 시작부분이면 push ebp가 나와야 할 텐데 일단 커널과 Name과 라이브러리 건드리는 거 보면 아닌 것 같다.
그래서 앞에서부터 보다가 push ebp를 발견했다.
leave도 있고 pop ebp도 있어 여기구나 싶어서 00401174로 제출했는데 Wrong!이라고 떴다. ㅠㅠ더 살펴보자
우선 여기 push ebp가 있는 걸 보아 여기와 관련된 부분이 시작 지점일 것 같다. 바로 위에서 00401168로 점프하는 부분이 있다.
처음부터 점프하는 곳이 있다. 가보자
음 뭔가 esp가 나오고 하는 걸 보니 답에 근접하는 거 같은데 사실 잘 모르겠다. 생각 전환할 겸 올리디버거로 까보자.
Search for constant로 00401150 부분을 찾아보자
음?
사실 아이다로 깠을때도 00401150로 점프하는 부분이 있다는 걸 보긴 했는데
근데 저 화살표의 시작지점을 확인하려고 스크롤을 내리면 갑자기 사라져서 확인을 못했었는데ㅠㅠ올리로 바로 저 화살표의 시작지점을 찾은 것 같다. 근데 또 올리로 까면 00401150이 바로 안 나타난다. 올리에서 제일 처음 주소가 0040A000이다. 00401150은 대체 어디로..여튼 저기에 BP를 걸고 넘어가보자
오 넘어가서 확인했을 때 55가 나온다. 55 익숙하다! 뭔가 push ebp 같다~^0^
우클릭으로 Analysis → Analyse code하거나 단축키 Ctrl+A하면
짠!
'REVERSING > reversing.kr' 카테고리의 다른 글
[reversing.kr] Music Player (0) | 2017.01.10 |
---|---|
[reversing.kr] Easy Keygen (0) | 2016.12.30 |
[reversing.kr] Easy Crack (0) | 2016.12.23 |