반응형

tutorial20 8

Lena Reversing - tutorial 20_8

Lena Reversing tutorial 20_8 마지막 8번째 파일은 UnPackMe_Fusion4.0.00.c 이다. Ollydbg로 열어준다. 이번에도 ESP를 이용하여 언패킹을 해본다. F8을 눌러 ESP가 처음으로 바뀌는 부분을 찾는다. PUSH EBP 수행후 ESP 값이 0012FFC0로 바뀐다. 이 값에 hw bp를 걸어준다. F9를 눌러주면 다음과 같이 break가 걸린다. 이 주소가 OEP로 추정된다. Ollydump를 통해 dump 해준다. Rebuild Import는 해제하고 dump 해준다. 끝.

Lena Reversing - tutorial 20_7

Lena Reversing tutorial 20_7 7번째 프로그램은 UnPackMe_Exe32Pack1.42 이다. Ollydbg로 열어준다. 이번에도 ESP를 이용한 언패킹을 수행한다. 진행하다보면 다음 PUSH EBP가 수행되고 나면 ESP가 0012FFC0으로 바뀌게 된다. 여기에 hw bp를 걸고 실행해준다. 다음과 같은 주소에 break가 걸린다. 같은 ESP를 비교했기 때문에 다음 분기문에서 분기가 일어난다. 이동하게 되면 바로 다시 한 번 분기가 일어난다. 이 주소가 OEP로 추정된다. 이제 Ollydump를 통해 dump 해준다. 이번엔 Rebuild Import를 체크 해제 해주고 dump 해준다. 끝.

Lena Reversing - tutorial 20_6

Lena Reversing tutorial 20_6 6번째 프로그램은 UnPackMe_NoNamePacker.d.out 이다. Ollydbg로 열어준다. 실행을 해보면 다음과 같은 이상한 창이 나온다. 아무 문구도 없다.. 이상해서 디버거를 종료시키고 실행해보았다. 아까와는 다른 창이 나온다. 실행중인 디버거를 탐지하는 코드가 내부에 들어있는 것으로 보인다. 따라서 이번 프로그램은 안티 디버깅 기법을 우회하고 언패킹도 해주어야 한다. 쭉 진행하다보면 다음과 같이 IsDebuggerPresent 함수가 Call 된다. 이 함수를 통해 디버거가 실행중인지 판단하여 분기하는 것으로 보인다. 여기서 OR EAX, EAX 수행 전 EAX는 1이다. 디버거가 실행중임을 나타낸다. 이 값을 0으로 바꾸어 진행해준다...

Lena Reversing - tutorial 20_5

Lena Reversing tutorial 20_5 5번째 프로그램은 UnPackMe_NsPack3.5 이다. 프로그램을 Ollydbg로 열어준다. 이번엔 시작부분이 PUSHFD, PUSHAD로 시작한다. 따라서 언패킹 루틴이 끝날때는 POPAD 명령어가 나올것이다. control + f를 눌러 검색을 해준다. POPAD 또는 POPFD 를 검색해준다. 여러개가 검색되기 때문에 control + l 을 눌러주면서 하나하나 확인해준다. POPAD, POPFD 가 나온후 해당 프로그램의 .text 범위 내의 주소로 분기해야한다. 다음과 같이 찾을 수 있다. 004271B0로 분기하고 있고 이 주소가 OEP로 생각할 수 있다. 이번에도 Rebuild Import는 체크하고 dump 해준다. 끝.

Lena Reversing - tutorial 20_4

Lena Reversing tutorial 20_4 20단계 4번째 이다. 이번에는 UnPackMe_MEW1.1 프로그램을 볼 것이다. Ollydbg에서 열어준다. 바로 400154로 분기한다. ESP가 변하는 부분까지 진행한다. ESP가 변하면 hw bp를 걸어준다. F9를 눌러 진행한다. 이제는 익숙한 주소에 멈춘다. Ollydump를 통해 dump를 떠준다. EP를 확인하고 이번엔도 Rebuild Import 부분을 체크하고 dump한다. 실행해보면 오류창이 발생한다. 이번에도 이전 프로그램과 동일한 오류창이다. 넘어가도록 한다. 끝.

Lena Reversing - tutorial 20_3

Lena Reversing tutorial 20_3 20단계 세번째 프로그램이다. 이번 프로그램은 UnPackMe_eXPressor1.3.0.1pk 이다. 이번 프로그램은 이전 프로그램과 같은 방법으로 ESP를 이용하여 언팩을 진행한다. Ollydbg에서 열어준다. 패킹이 되지 않은 것으로 보이지만 패킹이 된 프로그램이다. PUSH EBP를 하면 ESP 값이 12FFC0이 된다. 이전 프로그램과 같은 방법으로 hw bp를 걸어준다. 이제 F9를 눌러 실행해주면 오류창이 하나 뜬다. 아직 breakpoint에 걸리지 않았기 때문에 무시하고 진행한다. break 가 걸린다. 004271B0로 점프하고 있다. 영역도 이 프로그램의 .text 영역이며 명령어들도 익숙한 명령어들이 보인다. OEP라고 추정할 수 ..

Lena Reversing - tutorial 20_2

Lena Reversing tutorial 20_2 20단계 두번째 프로그램이다. 이번에는 UnPackMe_EZIP1.0 프로그램을 언팩 해보도록 한다. 이번 프로그램에서는 ESP를 이용해서 언팩을 하는 방법을 사용하도록 한다. Ollydbg로 열어준다. 바로 JMP가 나온다. F8을 눌러 진행해준다. 함수 프롤로그가 나온다. PUSH EBP를 해주고 나면 ESP는 12FFC0가 된다. ESP는 Stack pointer 레지스터이다. 함수가 끝날 때 까지 해당 주소의 stack은 변하지 않고 끝나기 직전에 POP을 하게 된다. 이 값에 hardware breakpoint를 걸어준다. 이제 F9를 눌러 진행해준다. EAX의 값으로 분기하고 있다. 004271B0로 memory map에서 확인하면 이 프로그..

Lena Reversing - tutorial 20_1

Lena Reversing tutorial 20_1 이번 단계가 끝나면 절반이 끝나게 된다 힘을 내자! 이번 단계에서는 패커와 프로텍터에 대해서 배우게 된다. 패커와 프로텍터에 대해서는 시간이 되면 따로 글을 올려야겠다. 파일의 수는 어마어마하게 많이 준비되어있다. 총 8개이며 하나씩 나누어 진행하도록 하겠다. 가장 먼저 볼 프로그램은 UnPackMe_CrypKeySDK5.7 이다. Ollydbg로 열어준다. 패킹이 되었기 때문에 오류 창이 뜨지만 무시하고 진행해준다. 시작하는 곳을 보면 일반적인 Entry point가 아니다. F8을 눌러 진행해주면 RETN 전에 분기가 일어난다. 분기한 위치는 다음과 같다. 코드를 보았을 때는 아무것도 없다고 생각할 수 있다. 주소 값을 확인하고 memory map을..

반응형