본문 바로가기

리버싱(Reversing)/리버싱 개념12

리버싱 핵심원리 8장(abex' crackme #2) abex's 2nd crackme 파일은 Visual Basic(이하 VB)으로 제작되었다. VB 파일은 전용엔진을 사용하는데, 사용 예로는 메세지 박스가 있다. 메세지 박스를 출력하고 싶을 때 VB 소스코드에서 MsgBox() 함수를 사용하는데, VB 컴파일러는 실제로 MSVBVM6o.dll!rtc MsgBox() 함수가 호출되도록 만들고, 이 함수 내부에서 Win32 API 인 user32. dll!MessageBoxW() 함수를 호출해주는 방식으로 동작한다. 우선 문제에서 주어진 프로그램을 실행하면 위와 같은 화면이 나온다. Name과 Serial에 아무 값이나 넣고 Check를 클릭했더니 'Nope, this serial is wrong!' 이라는 메세지 박스가 나온다. 전형적인 시리얼 값을 찾는.. 2020. 10. 6.
리버싱 핵심원리 13장(PE File Format) 1. PE File Format PE(Portable Executable) 파일 또는 PE32 : Windows 운영체제에서 사용되는 32bit형태의 실행 파일 형식 (64비트형태의 PE파일은 PE+ 또는 PE32+ 라고 불림) PE 파일 종류에는 아래 표에 명시되어 있다. obj 파일을 제외한 모든 파일은 실행가능하다. 종류 주요 확장자 종류 주요 확장자 실행계열 exe, scr 드라이버 계열 sys, vxd 라이브러리 계열 dll, ocx, cpl, drv 오브젝트 파일 계열 obj 2. 기본 구조 DOS header부터 Section header까지는 PE헤더, 그 밑의 Section들은 PE 바디라고 한다. 파일에서는 Offest으로, 메모리에서는 절대주소(Virtual Address)로 위치를 .. 2020. 10. 5.
리버싱 핵심원리 6장(abex’ crackme #1 분석 ) 이 프로그램을 실행시켜보면 'Make me think your HD is a CD-Rom' 이라는 문구가 나온다. 확인을 누르면 'Nah... This is not a CD-ROM Drive!' 라는 Error 메세지가 뜨게 된다. 올리디버거로 이 파일을 열어보았다. EP에 메인함수가 바로 나타난다는 점을 보면 이 프로그램은 어셈블리 언어로 작성되었다는 것을 유추할 수 있다. 어셈블리 언어로 만들어진 실행파일이기 때문에 개발툴을 사용해 만들어진 프로그램보다 EP 코드가 짧다. 이는 개발툴을 사용하면 컴파일러가 Stub Code를 추가시키기 때문에 디스어셈시, 내용이 더 길어지기 때문이다. 코드에서 전체적인 내용을 보면, GetDriveTypeA를 이용해 C 드라이브의 타입을 얻어오는데, 이를 CD-Rom.. 2020. 10. 2.
리버싱 핵심 원리 10장 (함수 호출 규약) 함수 호출 전에는 파라미터를 스택을 통해 전달한다. 스택은 프로세스에서 정의된 메모리 공간이며, PE 헤더에 그 크기가 명시되어 있다. 이는 프로세스가 실행될 때 스택 메모리의 크기가 결정된다는 것과 같다. (동적 메모리 할당 X)ESP(스택 포인터)는 스택의 현재 위치를 가리키는 역할을 하는데, 함수 호출 후에 ESP를 어떻게 정리하는지에 대한 약속이 함수 호출 규약이다. 주요 함수 호출 규약은 3가지로 볼 수 있고, 이에 대해서 상세히 살펴보도록 하자! 1. cdecl 주로 C언어에서 사용되는 방식으로, Caller(호출자: 함수를 호출한 쪽)에서 스택을 정리하는 특징을 갖고 있다. 이 방식의 장점은 C언어의 printf() 함수와 같이 가변 길이 파라미터를 전달할 수 있다는 점이다. 2. stdca.. 2020. 9. 28.
리버싱 핵심원리 9장(Process Explorer) 및 Process Explorer 다운로드 Process Explorer은 Windows 운영체제에서 제공하는 프로세스 관리도구이다. https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer Process Explorer - Windows Sysinternals Find out what files, registry keys and other objects processes have open, which DLLs they have loaded, and more. docs.microsoft.com 위 사이트에서 다운로드 가능하다. 특정 파일이나 디렉토리가 열려있는 프로그램이 무엇인지 알 수 있다. 프로세스 탐색기 (Process Explorer)는 어떤 핸들 및 DLL 프로세스.. 2020. 9. 28.
OllyDbg 설치 및 사용방법 리버싱을 실습할 때, OllyDbg를 사용한다. OllyDbg는 바이너리 코드 분석을 위한 32비트 무료 디버거이다. www.ollydbg.de/ OllyDbg v1.10 www.ollydbg.de 위 사이트에 들어가서, 다운로드 란에서 올리디버거 최신버전을 다운로드 받아준다. 압축을 해제한 뒤, exe 파일을 실행해 올리디버거를 실행한다. 실행파일을 그냥 드래그 해서 프로그램으로 옮겨주면 실행가능하다. 비주얼 스튜디오를 이용해 아무 exe 파일을 만들어주자. 올리디버거를 통해 열어보면, 위와 같은 화면이 나온다. 1) Code Window (빨간 부분) : 기본적으로 disassembly code를 표시하여 각종 comment, label 을 보여주며 , 코드 를 분석하여 loop, jump 위치 등의.. 2020. 9. 14.