Reversing/Reversing.kr

[Reversing.kr]ImagePrc

dcho 2019. 7. 26. 13:43
SMALL
이 문제를 차근차근 풀면서 다시 한번 되짚어 보는 리버싱 기본 단계이다.

리버싱 - 기본 단계
분석 대상 바이너리에 따라 다르다, 기본적으로 다음과 같은 단계를 거친다.

  1. 패커/프로텍터/암호화 탐지 
  • 탐지되면 우선 언팩/복호화를 시도하고 imports 등을 복구함
  • 정적 분석
    • 실제 환경에서 실행하지 않고 어플리케이션의 알고리즘 로직 분석
  • 동적 분석
    • 바이너리를 실행하여 행위 분석

    먼저 Reversing.kr를 풀때 보니 ReadMe가 있었다. 하지만 이 문제에는 없었으니 일단 프로그램을 실행해 봤다.

    요렇게 빈공간에 그림을 그릴수 있고 Check를 누르면 비교하는 것 같다.


    그렇다면 차근차근 단계부터 밟아 나가보자.

    먼저 1단계로 패킹이 되어있나 확인을 해보았다. 되어있지 않았으니 다음단계로

    API가 겁나 많아 IDA를 이용해 찾아 보다가 스스로 생각하기에 핵심부분이 아닐까 라는 생각이 들어서 찾아보았다.


    아무것도 그리지 않았을때의 상태와 뭐라도 그렸을때의 차이가 존재했다.

    그차이는 Dump Winodw 에 나타났다.


    생각해보니 그림에 기본은 흰바탕이다. 근데 색칠하면 검은색이 색칠이 된다. 

    대충 요런느낌? 그래서 조건문을 통과하기 위해 전부 색칠을 했다.

    진짜 너무 가는 선으로 그려지기에 한 몇분정도 걸리니까 다 색칠했다 .. (마우스야 미안해 주인 잘 못 만나서..ㅠ)

    그런 다음 핵심이 될 만한 단서인  eax+ecx 부분이 고정적으로 비교를 하는 부분이라는 것을 파악하였다.




    그러고 난후 계속 분석을 해보니 결국 내가 그린 그림과 비교하는 그림을 아무리 비교해봐도 Wrong으로 가는 것이였다. 

    정적 분석을 통해 이미지가 비트맵이라는 힌트를 얻었다.

    원본파일에 어떤 데이터가 있는지 확인하기 위해서 데이터를 복사해서 bmp파일에 덮어씌웠다. 그걸위해 파일 포맷 형식을 통해 헤더를 맞춰 넣어주었다. 


    비교하는 부분이 FF로 부터 시작하고  15F90번 검사하기 때문에 

    9060~1EFE0 까지 데이터라는 것을 추측해 내고 bmp파일에 넣었다.

    해당 영역만큼에 덮어 씌워 주고 확인을 해보았다. 

    이상하게 나온다..!

    아까 헤더 부분을 보고 정적 분석을 통해 확인한 결과

    사이즈가 안맞았다!

    사이즈를 맞춰서 넣어주니

    드디어.. 


    'Reversing > Reversing.kr' 카테고리의 다른 글

    [Reversing.kr]Direct3D FPS  (0) 2019.07.30
    [Reversing.kr]Ransomware  (0) 2019.07.25
    [Reversing.kr]Easy_KeygenMe  (0) 2019.07.25
    [Reversing.kr]Position (미완성)  (0) 2019.07.24
    [Reversing.kr]Easy_CrackMe  (0) 2019.07.24