Reverse Engineering
-
[Lenas Reversing for Newbies] 13Wargame/Lenas Reversing 2021. 2. 20. 21:11
1. 프로그램 실행 첨부된 XoftSpy.exe를 이용해 프로그램을 설치한 후 실행해보자. 좌측 About 항목을 선택해보자. license가 등록되지 않았다고 한다. 이번 실습의 목표는 이전 실습들과 마찬가지로 프로그램 license를 등록된 상태로 크랙 하는 것이다. 2. Debugging(with OllyDbg) OllyDbg로 프로그램을 실행시킨 후, About의 "Enter Registration Code" 버튼을 선택하자. 화살표 표시한 부분에 임의로 입력을 한 후 OK 버튼을 눌러보자. 위와 같이 "Invalid code."라는 문자열을 포함한 메시지 박스가 나타난다. MessageBox() API에 BP를 설정한 후 다시 등록을 시도해보자. 위와 같이 BP에 적중한다. 이 상태에서 F8을 ..
-
[Lenas Reversing for Newbies] 12Wargame/Lenas Reversing 2021. 2. 18. 20:03
1. 프로그램 실행 첨부된 Teksched.exe를 실행해보자. 위와 같이 unregistered 버전임을 확인할 수 있다. Help->About을 클릭하여 정보를 확인해보자. 아래의 Use Reg Key 버튼을 클릭하면 다음과 같이 키 등록을 할 수 있는 창이 나타난다. 임의의 키를 입력했을 때 등록이 되도록 크랙 하는 것이 이번 문제의 목표다. 2. Debugging(with OllyDbg) OllyDbg로 Teksched.exe 파일을 열고 search for referenced string을 이용해 참조되는 문자열을 검색해보자. 성공적으로 등록되었을 때 registration이라는 키워드가 포함되었을 것이라는 가정하에 registration 문자열을 검색해보면 다음과 같은 문자열이 참조되는 것을 ..
-
[리버싱 핵심원리 study] 48장 SEHReverse Engineering 2021. 2. 16. 23:19
1. SEH SEH(Structured Exception Handler)는 Windows 운영체제에서 제공하는 예외 처리 메커니즘이다. 리버싱에서는 이를 활용하여 안티 디버깅 기법으로 적용되기도 한다. - SEH 예제 실습#1 예제 파일 seh.exe는 의도적으로 Memory Access Violation을 발생시킨 후, SEH에 새로 Handler를 추가하여 간단한 안티 디버깅 기능을 만든 파일이다. 일반적으로 실행했을 때와 디버거를 통해 실행했을 때 다음과 같은 차이를 보인다. seh.exe 파일을 디버깅함으로써 SEH를 통해 프로세스의 예외처리를 하는 방법에 대해 알아보자. 2. OS의 예외 처리 방법 - 일반 실행의 경우 프로세스가 실행 중에 예외가 발생하면 프로세스에게 예외처리를 맡긴다. 만약 ..
-
[리버싱 핵심원리 study] 46장 TEB & 47장 PEBReverse Engineering 2021. 2. 15. 21:34
1. TEB(Thread Environment Block) 프로세스에서 실행되는 스레드에 대한 정보를 담고 있는 구조체로, 스레드 별로 TEB 구조체가 하나씩 할당된다. OS 종류별로 구조체 형태가 달라진다. MSDN에 기술된 TEB 구조체는 아래와 같다. typedef struct _TEB { PVOID Reserved1[12]; PPEB ProcessEnvironmentBlock; PVOID Reserved2[399]; BYTE Reserved3[1952]; PVOID TlsSlots[64]; BYTE Reserved4[8]; PVOID Reserved5[26]; PVOID ReservedForOle; PVOID Reserved6[4]; PVOID TlsExpansionSlots; } TEB, *PT..
-
[리버싱 핵심원리 study] 45장 TLS 콜백 함수Reverse Engineering 2021. 2. 13. 13:45
TLS 콜백 함수는 EP 코드보다 먼저 실행되어 안티 디버깅 기법으로 활용되기도 한다. 1. 실습 #1 - HelloTls.exe 예제 파일인 HelloTls.exe를 실행시켜보자. 위와 같이 메시지 박스를 출력하는 간단한 프로그램이다. 이번에는 OllyDbg로 HelloTls.exe를 열어보자. 그러자 위와 같은 메시지 박스가 나타나며 확인 버튼을 누르면 그대로 프로세스가 종료된다. 일반적인 프로그램과 동작이 다른 이유는 EP 코드보다 먼저 실행되는 TLS 콜백 함수에서 Anti-Debugging 코드가 실행되었기 때문이다. 해당 원리를 이해하지 못하면 디버깅을 진행할 수가 없다. 2. TLS TLS란 Thread Local Storage의 준말로 스레드별로 독립된 데이터 저장 공간을 가리킨다. TLS..
-
[Lenas Reversing for Newbies] 11Wargame/Lenas Reversing 2021. 2. 9. 22:44
1. 프로그램 실행 첨부된 fjprodsetup.exe를 이용해 프로그램을 설치한 후 프로그램을 실행해보자. 사진 파일로 퍼즐을 만들어 주는 프로그램인 듯하다. 메뉴바에서 Desk->Select 항목을 선택하면 다음과 같은 메시지 박스가 나타난다. 이번 문제의 목적은 이전 실습들과 마찬가지로 프로그램을 등록된 상태로 인식하게끔 패치하는 것이다. (Lenas에서는 또한 Unregistered 상태에서의 Window 타이틀바에 (Unregistered) 문구가 나타나는데 왜 안 나타나는지 모르겠다.) 2. Debugging(with OllyDbg) OllyDbg로 프로그램을 연 후, 타이틀바에 Unregistered 문구가 나타나는 것을 이용하여 문자열 탐색을 해보자. 위와 같이 AL 값에 의해 "Flash..
-
[reversing.kr] Music Player 풀이Wargame/reversing.kr 2021. 2. 9. 20:31
1. 프로그램 분석 다음과 같이 3개의 첨부된 파일이 있다. 일단 ReadMe.txt파일을 열어보자. 다 읽어봤으면 Music_Player.exe를 실행시켜 보자. 위와 같은 윈도우가 나타난다. 말 그대로 MP3 Player의 기능을 수행하는 듯하다. Open 버튼을 클릭하면 파일 열기 대화 상자가 나타나는데 임의의 mp3 파일을 선택한 후 재생 버튼을 눌러보자. 위와 같이 1분이 지나면 1분 미리듣기만 가능하다는 메시지 박스가 출력된다. ReadMe.txt 내용을 바탕으로 이번 문제에서는 1분이 지나도 정상적으로 노래가 재생되도록 패치를 해야 한다. 2. Debugging 디버깅을 진행하기에 앞서 PEiD에 해당 프로그램을 넣어보자. 해당 프로그램은 Visual Basic으로 작성된 것을 확인할 수 있..
-
[Lenas Reversing for Newbies] 09Wargame/Lenas Reversing 2021. 2. 2. 23:11
1. 프로그램 실행 첨부된 파일을 이용해 PC2AM2_PRO를 설치한 후, PEiD로 열어보자. 해당 프로그램은 Visual Basic으로 작성되었음을 알 수 있다. 일반적으로 C로 작성된 프로그램들과는 달리 VB 전용 엔진인 MSUBUM60.dll을 사용하여, VB API()를 알아야 분석하기 수월하다고 한다. Lenas 강의에서도 OllyDbg를 이용한 분석이 썩 깔끔하지는 않아 따로 SmartCheck이라는 툴을 이용해 디버깅하기도 한다. Lenas 강의에서는 다음과 같은 VB API에 초점을 맞춰 분석을 진행한다. __vbaVarTstEq, __vbaVarTstNe, __vbaVarCmpEq, __vbaStrCmp, __vbaStrComp, __vbaStrCompVar 모두 두 값을 대상으로 비교..