Reverse Engineering
-
-
[reversing.kr] ImagePrc 풀이Wargame/reversing.kr 2021. 5. 9. 21:10
1. 프로그램 분석 첨부파일을 실행시켜보자. 위와 같이 창이 하나 나타나는데, 아래와 같이 그림판 같은 기능을 한다. 하단의 Check 버튼을 눌러보자. 그러자 위와 같이 Wrong이라는 문구를 출력하는 메시지 박스가 나타난다. 무언가 그려진 그림이 특정 조건을 만족시켜야 하는 듯하다. 2. Debugging(with x32dbg) x32dbg로 ImagePrc.exe 파일을 열고, MessageBox API에 BP를 설정한 후 실행시키고 Check 버튼을 누르면 다음과 같이 BP에 적중한다. 스크롤을 조금 더 올려보자. 스크롤을 올려보면 004013AA의 jne 명령어에 의해 Wrong 메시지 박스를 호출하는 루틴으로 점프하는 것을 확인할 수 있다. byte 단위로 무언가를 비교하는데 빨간 표시를 한 ..
-
[Lenas Reversing for Newbies] 23Wargame/dreamhack.io 2021. 4. 17. 16:38
이번 실습에서는 Stolen Bytes라는 것에 대해 배워본다. Stolen Bytes란 .exe 파일의 코드의 일부(주로 entry point의 일부분)가 packer에 의해 할당된 메모리 영역으로 옮겨져 실행되게 하는 기법으로, dump를 했을 때 Stolen 된 부분이 없어져 문제가 생기게 된다. 1. PEiD PEiD로 첨부파일을 열어보자. db에 패커에 대한 정보가 없어서 "Nothing found *"라는 문구가 나타난다. OllyDbg로 파일을 열어보자. 2. debugging(with OllyDbg) PUSHFD, PUSHAD 명령어가 나타나는 점을 이용해 OEP를 찾는 일반적인 방법(ESP에 하드웨어 BP 설정)을 이용하면 다음과 같이 손쉽게 OEP로 추정되는 영역에 도달할 수 있다. 그..
-
[Lenas Reversing for Newbies] 21Wargame/dreamhack.io 2021. 4. 11. 01:48
지난 20번 실습에 이어 packer에 의해 IAT가 망가진 경우 ImportREC이라는 툴을 활용해 복구하는 작업을 진행한다. 이번 실습에서는 다음과 같은 파일들을 언패킹 한 후 dump 뜨는 연습을 한다. - RegisterMe.exe (Lenas 강의 초반에서 IAT 개념을 설명하기 위한 예제일 뿐이므로 제외시켰다.) - UnPackMe_FSG2.0.exe - UnPackMe_UPX.exe - PCGuard4.06C_UnpackmeAll.exe - UnPackMe_WinUpack0.39 모든 언패킹 작업은 기본적으로 다음과 같은 과정을 거친다. (1) OllyDbg 플러그인 등으로 기본적으로 덤프 (2) 문제가 있을 경우, ImportREC을 통해 문제가 있는 부분을 탐색 (3) 문제가 있는 부분을..
-
[Lenas Reversing for Newbies] 20Wargame/dreamhack.io 2021. 4. 4. 23:03
이번 실습에서는 기본적인 packer, protector, compressing, unpacking 등의 개념을 배우고, OEP를 찾는 연습을 진행한다. 실습 예제 파일로는 다음과 같은 8가지 실행 파일이 있다. - UnPackMe_CrypKeySDK5.7.exe - UnPackMe_EZIP1.0.exe - UnPackMe_eXPressor1.3.0.1Pk.exe - UnPackMe_MEW1.1.exe - UnPackMe_NsPack3.5.exe - UnPackMe_NoNamePacker.d.out.exe - UnPackMe_Exe32Pack1.42.exe - UnPackMe_Fusion4.0.00.c.exe 강의에서는 OEP를 찾은 후, 그 상태에서 OllyDbg 용 플러그인을 이용해 dump를 뜨고 ..
-
[Lenas Reversing for Newbies] 19Wargame/dreamhack.io 2021. 4. 1. 22:09
이번 실습에서는 아래와 같은 6가지 파일을 패치해봄으로써 Anti-Anti에 대한 개념을 정리한다. - ReverseMe.A.exe - ReverseMe.B.exe - ReverseMe.C.exe - Reverse.Me.D.exe - Debugger Detected.exe - antisniff.exe (무슨 원인인지 모르겠으나, OllyDbg에서 Anti-Debugging 기법을 감지하지 못하는 문제가 발생한다.) 1. ReverseMe 시리즈 ReverseMe 시리즈는 기본적으로 Lenas Reversing 02번에서 다뤘던 파일과 거의 동일한 구조다. maple19out.tistory.com/53?category=913479 [Lenas Reversing for Newbies] 02 1. 프로그램 실..
-
[Lenas Reversing for Newbies] 18Wargame/dreamhack.io 2021. 3. 29. 23:59
1. 프로그램 실행 프로그램을 실행화면 위와 같이 TutorialNag 메시지 박스가 나타난다. 확인 버튼을 눌러보자. 적절한 패치를 통해 '실행 화면 1'의 메시지 박스를 없애면 될 것 같다. 2. Debugging(with OllyDbg) OllyDbg로 파일을 열어보자. 바로 아래 004012BD 주소에 CALL MessageBoxA 명령을 통해 MessageBox가 호출되는 듯하다. BP를 걸고 F9를 이용해 프로그램을 실행시켜보자. 하지만 놀랍게도 BP에 적중하지 않는다. 이번 실습의 주제가 Diversion code, encryption/decryption, selfmodifying code and polymorphism임을 생각하며, EP 부터 차근차근 디버깅을 해보자. GetModuleHa..
-
[Lenas Reversing for Newbies] 17Wargame/dreamhack.io 2021. 3. 14. 22:10
1. 프로그램 실행 위와 같이 두 개의 에디트 컨트롤이 있고 Check/About 버튼이 존재한다. 임의의 값을 채워 넣고 Check 버튼을 눌러보자. 위와 같이 임의로 maple19out, maple19out을 입력하고 Check 버튼을 누르자 에러를 나타내는 메시지 박스가 출력된다. 바로 디버깅을 진행해보자. 2. Debugging(with OllyDbg) 에디트 컨트롤로 부터 값을 읽어 들이는 API로는 GetDlgItemText가 있다. 해당 API의 원형은 다음과 같다. UINT GetDlgItemTextA( HWND hDlg, int nIDDlgItem, LPSTR lpString, int cchMax ); Ctrl+N을 통해 API 탐색을 해보면 다음과 같이 참조되는 부분을 확인할 수 있다...