이번엔 Easy Unpack 풀이 입니다.

OEP를 찾으랍니다.
OEP란 Original Entry Point 였던걸로 기억합니다.
이름으로 진작하자면 패킹되어있으니까
패킹전에 프로그램이 시작되던 위치를 찾으라는 소리입니다.

뭔가 패킹이 되어있을거 같은데 PEiD로는 딱히 탐지가 안되네요
Enrtrypoint로 검색되는 부분도 역시 찾아야하는 OEP는 아닙니다.

실행시켜보면 별다른 동작도 없습니다.

IDA와 함께 든든한 친구가 되어주는 immunity DBG로 까보니 위와 같이 코드섹션이 변조되었음을 알려줍니다.
https://bob3rdnewbie.tistory.com/91
Manual Unpack (매뉴얼 언팩) - ESP Trick
원본 링크 : http://www.websense.com/securitylabs/blog/blog.php?BlogID=176 그런데 링크가 죽었다...ㅠㅠ 악성코드 제작자들은 자신들의 바이너리(악성코드) 파일이 자동으로 언패킹 되는 것을 막기 위해 대부..
bob3rdnewbie.tistory.com
그렇다면 어떻게 해야 언패킹을 할수 있을까?
언패커가 따로 없다면 직접하면 된다.
패킹이란건 결국 코드를 보호하려고 걸어놓지만 실행될때는 정상 작동하도록 해야한다
따라서 정상작동을 하도록 패킹이 풀리는 순간이 오게 되고 그때를 직접 프로그램의 흐름을 따라가서 찾아내는 방법을 매뉴얼 언패킹이라고 한다.
해당 내용에 대하여 자세한 설명이 있는 블로그가 있어 첨부한다.
========================================================================
다시 immunity dbg로 돌아와주자

허허 정말 친절한 우리 이뮤니티디버거는 EP가 코드영역 밖에 있다고 BP거는걸 주의하라네요

메모리 맵을 봐도 아까 찾은 EP는 전혀 이상한곳에 있음을 알 수 있습니다.
정상적인 코드라면 .text의 code 영역에 EP가 위치해야합니다.
일반적인 매뉴얼 언패킹이라면 보통 PUSHAD를 찾아서 레지스터를 백업하기위해 저장하는 순간을 BP걸어서 찾는 방식으로 OEP를 찾아내지만 해당 코드에서는 PUSHAD가 발견되지 않아 프로그램의 흐름을 쫒아 F8을 눌러가며 수동으로 찾아주기로 했습니다!
원리는 간단합니다. OEP가 있어야할 code영역 내부로 jmp뛰는 순간을 찾아주면 됩니다.






루프에 걸릴때 해당 루프에 아래쪽에 BP를 걸어주고 F9으로 런해주면서 해당 루프를 벗어나주시면 빠르게 진행 가능합니다.
해당 코드는 총 6개의 BP를 걸어주었고 대략 3분 내외로 찾아낸것 같네요 마지막 JMP로 00401150으로 code영역으로 jmp하는게 보입니다.
Flag = 00401150
========================================================================
매뉴얼 언패킹 검색해보면서 다른 분들 풀이도 한번 봤는데 아주 흥미롭고 간단한 풀이를 찾아서 추가합니다.

아까와 마찬가지로 PEiD로 탐색해줍시다.

Plugin에서 GenOEP를 실행시켜줍시다!

짜잔!
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
아아 물론 기반지식을 키우고자 워게임들을 푸는것이기 때문에 좋은 풀이는 아닙니다만.
실제 분석할때는 굳이 시간을 들일 필요가 없기 때문에 숙지해둡시다.
오늘의 깨달은 점 자신이 쓰는 툴의 부가기능 정도는 파악합시다!
'wargame > reversing.kr' 카테고리의 다른 글
[Reversing.kr]Music Player 풀이 (0) | 2021.06.10 |
---|---|
[Revesing.kr]Easy Keygen 풀이 (0) | 2021.06.09 |
[Reversing.Kr] Easy Crack (0) | 2018.04.13 |