ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • lena 01강
    > Information Security/Reverse Engineering 2012. 3. 24. 03:29

    lena (01)  

    @zrungee

     

     

    OllyDbg를 이용하여 reverseMe파일을 뜯어보았다. 실행시켜보니 다음과 같은 창이 떴다.

     

    평가기간이 지났으므로 새 라이선스를 취득하라는 창이다.

    전체적으로 OllyDbg가 분석한 부분을 보니, 아까 실행시켰을 때 떴었던 문장이 보인다.

     

    파일을 실행시켰을 때, 아무래도 API함수인 MessageBoxA라는 함수에 의해 이 문장이 실행될 수 있도록 되어있는 것으로 보인다.

    다음으로, 맨 윗줄부터 F8을 눌러 한 줄씩 실행시켜보았다.

    아까 보았던 문장이 있는 근처에서 JNZ명령어를 발견했다.

    zero플래그가 0일 때, ‘0040409A’Jump하는 조건이다.

    # JNZ : Zero 플래그가 0일 때 Jump

     



    이 때, 창의 오른쪽에 해당하는 레지스터와 플래그 창을 확인해보니,

     

    Zero 플래그 값이 1이다.

    종합해본 결과, 파일이 실행될 때 이 위치에서 zero플래그가 1이기 때문에 다음 단계로 넘어가지 못하고 MessageBoxA함수가 실행되어 “Evaluation period out of ~~”라는 창이 뜨게 된 것이다.

    이렇게 해서 zero플래그 값을 일시적으로 0으로 바꾸어 준다면 다음 순서로 넘어갈 수 있을 것이다.

    # 플래그변경 : 더블클릭

     

     

    Zero플래그 값을 변경시켜주었고, F8으로 한 줄씩 실행시키니 다음단계로 넘어갔다.

     

    (빨간 화살표는 플래그변경으로 Jump가 가능하다는 것을 보여준다)

    더 내려가 보니 또 다른 빨간 화살표가 보인다.

    이대로 진행해 보니 이번엔 “Keyfile is not valid. Sorry”라는 창이 뜬다. 내가 원하는 창이 아닌 것 같다. 이때의 명령문은 a(MessageBoxA함수)jump하게 한다.

    ajump하는 부분이 총 세군데 있다.


    이 함수를 실행시키지 않으려면 JMP명령어를 NOP으로 바꾸어주면 될 것 같다.



    조금 더 내려와보니 MessageBoxA를 지나는 화살표가 보인다.

     

    빨간 선을 따라 쭉 밑으로 내려갔더니, 화살표가 끝나는 지점이 다음과 같다. text를 보니 내가 원하는 부분이다.

    그렇다면, 파일을 실행시킬 때 최종적으로 앞에서 가리고 있던 다른 부분들의 방향을 바꾸거나, 실행을 막고 이 부분이 실행되도록 하면 될 것이다.



    다시 윗줄로 돌아와, 아까 zero플래그 값을 변경시켰던 부분의 JNZ JMP로 변경시켜준다.

     

     

    이제 변경된 부분을 저장시켜준다.

    Copy to execute > All modification을 누른 뒤, Copy all하여 savefile한다.

     

    ReverseMe1이라는 이름으로 저장시킨 뒤, 실행시켰다.

    파일을 실행시켜 보니 원하는 문장이 나왔다!

    728x90
    반응형

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

    lena 03강  (0) 2012.03.25
    lena 02강  (0) 2012.03.25
    Crack Me 문제유형  (0) 2011.01.05
    upx(실행파일압축) 가 packing 하는 원리  (0) 2010.11.17
    Tool - PEiD  (0) 2010.11.17
Designed by Tistory.