ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Lenas Reversing for Newbies] 03
    Wargame/Lenas Reversing 2021. 1. 28. 02:15

    1. 프로그램 실행

    reverseMe.exe를 실행시켜보자.

     

    실행 화면1

     

    실행 화면2

     

    실행 화면3

     

    실행시키면 위와 같은 창들을 확인할 수 있다. 메인 윈도우인 실행화면 2의 앞 뒤에 있는 nag(메시지 박스)를 제거하면 되는 간단한 문제다.

     

    2. Debugging(with OllyDbg)

    OllyDbg로 reverseMe.exe를 열어 코드를 한 줄씩 실행시키다 보면 아래와 같은 코드를 볼 수 있다.

    첫 Nag

    GetModuleHandleA가 호출 된 이후 EAX 레지스터에는 ImageBase 값이 저장되므로 정상적인 경우에는 무조건 MessageBoxA가 호출될 수밖에 없는 구조다. 다양한 방법이 있겠지만 (본인은 단순히 MessageBox 다음 위치로 점프하는 것을 생각했다) 강의에서는 PE 구조체의 IMAGE_OPTIONAL_HEADER 구조체의  AddressOfEntryPoint 멤버를 수정하여서 MessageBoxA 다음 부분에서 프로그램이 시작하도록 수정해주었다.

     

    AddressOfEntryPoint 값

    위와 같이 현재 ImageBase가 400000, AddressOfEntryPoint가 1000으로 프로세스가 401000 주소에서 시작한다. AddressOfEntryPoint를 1024로 수정하게 되면 MessageBox를 호출하는 코드 직후에서 프로세스가 시작하게 된다.

     

    AddressOfEntryPoint 값 수정

    이제 수정된 파일을 reverseMe_patched1.exe란 파일로 저장해 보고 실행해보면 첫 번째 nag가 나타나지 않는 것을 확인할 수 있다. 다시 OllyDbg를 열어 두 번째 nag를 지울 방법을 생각해보자.

     

    reverseMe_patched1.exe 디버깅

    위와 같이 CALL 00401052에 의해 Window 처리 작업을 하여 윈도우가 화면에 나타나고, 바로 다음 코드부터는 MessageBox를 호출하기 위해 argument를 스택에 쌓는 것을 확인할 수 있다. 이후에 MessageBox가 호출되고 나면 프로세스는 종료된다. MessageBox를 호출하는 5줄의 코드를 모두 NOP으로 바꿔보자.

     

    NOP으로 어셈블리 코드 수정

     

    해당 부분을 copy to executable 항목을 이용해 새롭게 파일을 저장하고, 파일 이름을 reverseMe_patched2.exe로 저장하자. 패치가 끝난 파일을 실행해보면 윈도우만 나오고 앞 뒤의 두 가지 nag는 나타나지 않는 것을 확인할 수 있다.

     

    3. Comment

    이번 강의에서 초보 리버서는 referenced string을 과도하게 이용하여 단서를 찾으려는 경향이 있으며, 해당 방법은 이미 확정적인 순간에 이용되어야 하는 단서 정도로만 활용하는 것이 좋다는 내용을 보고 뜨끔하였다. 또한 첫 nag를 지우기 위해 단순히 어셈블리 코드만을 수정하는 방법을 생각했는데, PE 구조체의 멤버를 수정하여 프로그램의 Entry Point를 바꾸는 방법도 흥미로웠다. API 공부에 더불어 PE 구조체 내용도 복습을 좀 해야겠다.

    반응형

    'Wargame > Lenas Reversing' 카테고리의 다른 글

    [Lenas Reversing for Newbies] 06  (0) 2021.02.01
    [Lenas Reversing for Newbies] 05  (0) 2021.01.30
    [Lenas Reversing for Newbies] 04  (0) 2021.01.29
    [Lenas Reversing for Newbies] 02  (0) 2021.01.26
    [Lenas Reversing for Newbies] 01  (0) 2021.01.26

    댓글

Designed by Tistory.