전체 글

전체 글

    CodeEngn Basic 05-1

    이번 프로그램을 실행 시키면 다음과 같은 창을 띄우게 된다. 이번에는 PEiD 라는 툴을 이용하여 이 프로그램의 정보를 확인해보겠습니다. 아래쪽을 보시면 UPX 0.89 ~ 라고 쓰인 것을 볼 수 있는 데요. 이는 UPX라는 Packer를 이용하여 원래 프로그램이 Packing 되어 있다는 의미입니다. 그리고 우리가 제대로 분석을 하기 위해서는 Unpacking을 통해 원래 코드를 얻어야 함을 의미합니다. 여기서 Packing 이란? 기본적으로는 파일 압축이다. 파일의 크기를 보다 작게 줄이기 위해 사용하는 방법. 압축프로그램을 이용한 것과는 달리 바로 실행된다는 이점이 있다. 여기서 시간이 지나면서 자신의 코드를 타인의 리버싱으로 부터 보호하기 위한 Protector를 이용하여 Packing을 하기도 ..

    CodeEngn Basic 04

    아래 사진은 각각 그냥 실행했을 때와, Ollydbg에서 실행했을 때의 사진이다. 그냥 실행시 화면Ollydbg를 통해 실행시 화면 스트링으로 문제를 풀 수 있을 거라 생각하지만 한글은 Ollydbg에서 지원이 안되기 때문에 사용된 함수를 추측하는 것으로 문제를 풀겠습니다. 스트링 검색과 같은 방법으로 오른쪽마우스 -> Search for -> All intermodular calls 를 클릭하면 해당 프로그램에 호출된 함수들을 모두 볼 수 있다. 아래는 All intermodular calls 의 창이며 위쪽을 살펴보면 Debug와 관련된 함수를 쉽게 찾을 수 있다.

    CodeEngn Basic 03

    프로그램을 실행하여 아무 키나 입력했을 때의 모습이다. 해당 파일을 OllyDbg로 실행한 다음 마우스 오른쪽 -> Search for -> All referenced text strings 를 클릭하면 아래와 같은 화면을 볼 수 있다. 여기서 현재 프로그램의 문자열들을 모두 확인 할 수 있다. 아래쪽을 보면 키값이 틀렸을 때 나온 경고창의 메시지 내용을 찾을 수 있다. 메시지 내용은 키값이 일치할 때와 불일치한 경우 두 가지가 있을 것이고, 해당 메시지 위치부터 역추적해나가면 조건분기점을 찾을 수 있을 것이다. 원하는 문자열을 더블 클릭하면 해당 위치로 이동하게 된다. 문자열에서 올라가다보면 JE(Jump if Equal) 분기점을 볼 수 있으며, 조금더 올라가면 vbaStrCmp 라는 함수를 볼 수 ..

    CodeEngn Basic 02

    다음은 실행했을 때 뜨는 창이다. 손상되어서 그런지 오류가 나타난다. Ollydbg로 열어봐도 오류가 나므로 Hex Editor(HxD) 혹은 PE구조를 볼 수 있는 PEview를 이용해 열어보자. 아래는 PEview로 본 모습이다 PE 파일의 헤더가 모두 사라진 것을 볼 수 있다. PE 구조를 공부하여 일일이 복구하는 방법도 있지만. 현재의 나는 무리가 있는 방법이므로, 위의 HEX 값들 중에서 답을 추측해야겠다. 답을 찾기란 어렵지 않다 그냥 봐도 아 저거겠구나 싶은 문자열이 있으니 인증하면 된다.

    CodeEngn Basic 01

    CodeEngn Basic 문제 풀이 시작!! 1번 문제의 내용이다. 파일을 다운받은 후 실행시켜 보면 아래와 같은 화면이 나옵니다. CD-Rom이 아니라고 하는 군요. OllyDBg 풀이: Ollydbg로 본 어셈블리코드입니다. 아래 String 값들을 보니 00401026 에 있는 JE 조건분기점에서 아래쪽으로 점프를 해야 하드로 인식한 거군요. 여기서 JE 명령어란 Jump if Equal이란 뜻으로 Zero flag의 값이 0일 경우 점프하게 됩니다. 이 zero flag를 0으로 세팅하려면 바로 윗줄인 CMP EAX, ESI 에서 0이 나와야 하며 이는 두 값이 같다는 뜻입니다. 비교하는 두 값의 변화를 쫓아서 올라가다보면 GetDriveTypeA를 호출하였습니다. 반환값은 EAX에 들어갔을 것..

글을 읽어주셔서 감사합니다.

이 블로그는 Google 광고 수익으로 콘텐츠를 만들고 있습니다.