code engn 5번 문제다.

등록키를 구해야 할 것 같다. 파일을 다운로드 받도록 하자.

실행해보니 다음과 같이 키 입력란이 나온다. 등록해보니 실패한다. 올리 디버거로 키를 구해야 될 것 같다.


간단할 것 같다. 에러 시 나타나는 문자열을 찾아 주변에서 키 입력하는 부분을 찾아보면 쉽게 해결 될 것 같다......라고 생각했으나 뭐가 없다... 아무리 찾아도 없다.. 뭐지..?

뭔가하니 이 파일이 패킹되어 있는 파일이란다.

그렇다면 언패킹을 하고 다시 실행하여야 될 것 같다. 찾아보니 이를 위해서는 2가지 프로그램이 필요하다.

먼저 어떤방식으로 패킹되어있는지 확인하기 위해 PEID라는 프로그램을 다운받았다. 실행해보니 

UPX1이라는 방식으로 패킹되어 있다고 나온다.

그렇다면 UPX1을 언패킹 해주는 프로그램을 다운받으면 될 것 같다.

 http://upx.sourceforge.net 

에 들어가서 다운을 받았다.

upx 파일같은 경우 cmd창에서 사용해야 한다. -d 옵션으로 언패킹을 하고 -k 옵션을 통해 백업 파일을 만들어 추후에 비교도 할 수 있도록 했다.

언패킹 후 PEID를 통해 다시 실행해보니 CODE 타입으로 변경된 걸 확인할 수 있었다.

이를 다시 올리디버거로 열고 문자열만 모아 보자. 


다음과 같이 에러 문자열 근처에 키값으로 보이는 값이 있다 더블클릭해서 자세히 들어가 보자.

문자열을 넣은 후 실행되는 CALL 함수에 의해 점프가 결정되는 것 같다. 

BP를 걸고 함수 안으로 자세히 들어가 확인해보니 입력한 User값이 Registered User와 일치하고 키 값

도 같은방식으로 일치하면 성공하는 방식인 것 같다. 그대로 입력해주니 성공!


위의 방식에서는 프로그램을 이용해 UPX를 언팩했다. 이번에는 프로그램 대신 직접 언패킹 해보도록 하

겠다. 

먼저 코드의 마지막 부분에 Jump문을 보면 상당히 많이 위로 올라가는 걸 볼 수 있다. 그렇다면 여기에

BP를 걸고 F9 후 F8로 하나 더 실행해보면 OEP(original Entry Point)로 갈 수 있다. 그렇다면 이 진짜

코드를 저장해야하는데 OllyDump라는 플러그인을 통하면 가능하다. 이 때 주의해야할 점이 Rebuild Import라는 버튼을 해제해주어야한다. 저 버튼을 클릭하고 하면 리빌드시 실패할 확률이 높기때문에 차라리 해제하고 다른 프로그램을 통해 해주는게 좋다.


LordPE라는 프로그램을 통해 리빌드를 해보자.

다음과 같이 원본코드가 나오고 언패킹이 성공하게 된다.

웹쪽하면서 틈틈히 해보고있는데 Basic쪽은 가볍게 풀 수 있는 정도의 문제들인 것 같다. 리버싱 막연히

어렵다고만 생각했는데 재미있게 풀 수 있을 것 같다.


'Wargame > CodeEngn' 카테고리의 다른 글

code engn basic 7번  (0) 2018.01.28
code engn basic 6번  (0) 2018.01.28
code engn basic 4번  (0) 2018.01.28
code engn basic 3번  (0) 2018.01.28
code engn basic 2번  (0) 2018.01.27
블로그 이미지

JeonYoungSin

메모 기록용 공간

,