ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • lena 03강
    > Information Security/Reverse Engineering 2012. 3. 25. 20:41

    @zrungee

    이번 강의는 PE구조의 이해를 통해 nag문제를 해결하는 과정이다.

    OllyDbg로 파일을 열어, 실행시켰다.


    이렇게 총 3개의 창이 뜬다.

    프로그램이 시작되기 전에 nag창이 떴고,
    확인창을 누르니 메인 폼이 뜬다.
    종료를 누르니 또다시 nag 창이 뜬다.

    따라서, 처리해야할 부분은 실행할 때 1번과 종료할때 1번이다.



    다시 OllyDbg로 돌아와서, F8로 Step Over해보겠다.

     


    GetModuleHandelA 함수로 얻어진 값을 비교한 후,
    EAX값과 0이 일치할 경우, Register.00401052 로 넘어가게 되는 구조.

    EAX값은 00400000이고, 0이 아니기 때문에 MessageBoxA가 발생한다.

    이 부분을 PE구조의 EP주소를 수정하여 MessageBox가 실행되지 않도록 수정할 것이다.


    먼저 ImageBase(PE파일이 메모리에 매핑될 시작 주소)는


    0040000이었다. 4D 5A는 MZ DOS_HEADER부분.




    메모리맵을을 띄워 PE헤더부분을 확인한다.


    PE헤더를 더블클릭해서 Dump창을 띄워보자.


    스크롤바를 쭉 내려보면,
    PE signature 아래로, EP와 ImageBase를 확인할수 있다.

    ImageBase값에 OEP값을 더해서 00401000주소에서 코드가 실행된다.
    덤프하여 나타난 Adress Of Entry Point(OEP)주소지인 004000E8를
    Hex dump창에서 확인해본다.


    이부분을 우클릭>Binary>Edit 에서
    24 10 00 00으로 만들어준다


    이제 copy to executable file > save file 하여
    확인해보니 첫번째 nag는 해결되었다.



    다음으로 종료시에 나타나는 MessageBox부분은
    NOP처리해주면 될것이다.


    종료시 나타나는 nag창은 Back To User모드 기능을 사용해서 찾아보도록한다.

    문제파일을 실행하고, 종료시킨 후에 nag 창이 뜬 상태에서
    올리디버거의 일시정지(F12)한 후,

    Debug>Execute till user code(Alt+F9)
    로 nag 창의 확인버튼을 클릭하면
    Message BoxA가 실행된 다음이라는 것을 알 수 있다.



    메시지박스가 뜨지 않도록 NOP하기 위해


    PUSH0부터 CALL MessageBoxA까지 블록선택하고,
    Binary > Fill with NOPs 해준다.



    이 상태로 Save To FIle로 다른이름으로 저장하면,
    nag창이 뜨지 않는 것을 볼 수 있다.




    다음으로, RegisterMe.Oops.exe를 OllyDbg로 열어본다.


    잘못된 실행파일 포맷이라는 에러창이 뜬다 ㅠ.ㅠ

    확인을 누르니
    이상한 주소지가 선택되어 디버거가 실행된다.

    이번 문제는 PE구조만 꼬아놓은 경우로,
    PE구조를 보정하는 플러그인을 이용할 것이다.

    먼저, PE구조에 어떤 문제가 있는지 확인해본다
    Memory Map > PE header > Dump




    위의 OEP와 ImageBase를 보아,
    시작되는 부분인 EP는 00400000+ 1000 = 00401000과 같아야 한다.

    CPU 창에서 주소지로 이동해보자.



    이부분에서
    BP(F2) 설정하면, 다음과 같은 경고가 뜬다.
    일단, '예'를 눌러 설정한 뒤 실행(F9)해준다.


    PE구조가 잘못되어 있더라도, 시작 시점까지 로드가 되었기 때문에
    이 상태의 메모리맵을 열어서 다시 PE구조를 확인해 보자.


    아까의 PE구조와 다르게 나타난다.

    PE사이즈는 5000이고,
    text섹션은 없어져 있는 상태이다.

    Dump하여 더 자세히 보도록 하자.


    수정해야할 값은 NumberOfRvaAndSizes를 제외하고
    사이즈값을 크게 늘려놓은 값을 복원하면 된다.

    참고 - Lena 강의 03,  
           - Reverse Engineering 역분석 구조와 원리

    728x90
    반응형

    '> Information Security > Reverse Engineering' 카테고리의 다른 글

    lena 05강  (1) 2012.03.31
    lena 04강  (0) 2012.03.31
    lena 02강  (0) 2012.03.25
    lena 01강  (0) 2012.03.24
    Crack Me 문제유형  (0) 2011.01.05
Designed by Tistory.