• [Reversing.kr] Direct3D_FPS

    2020. 2. 7.

    by. ugonfor

    아 이런 거지같은 문제에 오래 시간 끈게 정말 거지같습니다. 후우...

    총알을 겁나쏴도 고구마가 안 뒤지는 데 한 10초 넘게 쏘고있으니 한마리가 죽길래.... 에효... 이거 알아내는 데 엄청 오래걸렸습니다.. ㅜㅜ... 

    원래 리버싱 문제에서 게임 리버싱이 나오면 보통 게임을 클리어하는 게 목표인데, 적을 아무리 쏴도 안죽으니 클리어를 어떻게 해야하는 지 몰랐는 데, 한마리 죽어라 쏴보니까 죽길래, 그제서야... 아... 이게 쏘는 게임이었구나... 하고 알았습니다... ㅜ ㅜ 

    하여튼 이문제도 실마리가 보이고 있으니, 이제 문제를 풀면서 롸업을 쓰려고 합니다.

     

    흠....

    총게임이다...

    근데.. flag가 있다라...

     

    먼저 아이다로 스트링을 열어보았습니다.

    게임 클리어! 라고 되어있는 부분 보이시죠? 지금 파랗게 해놓은 곳이요!!

    저걸보고 따라가 봤더니 

    char *clear()
    {
      char *condition; // eax
    
      condition = &strange[16];
      while ( *condition != 1 )
      {
        condition += 0x210;
        if ( condition >= &state )
        {
          MessageBoxA(Screen, Pass_TEXT, "Game Clear!", 0x40u);
          return SendMessageA(Screen, 2u, 0, 0);
        }
      }
      return condition;
    }

    위와 같은 코드가 있길래, 어떤 특정조건을 만족하면 메세지 박스로 플래그가 뜰겁니다!!

    근데 그 텍스트(Pass_TEXT라 되어있는 것)을 따라가 봤더니

    위처럼 있더라구요.. 그래서 보니까 분명 암호화가 되어있는 거라 생각했습니다. 

    그래서 x-ref를 봤는 데,

    이런 부분이 있었습니다.

    그래서 아... 저부분에서 xor을 해주는 것을 알게되었습니다.

     

    근데 제가 며칠전에 DirectX 문제를 풀었을 때, 너무 어렵게 풀어서 그런지 엄청난 삽질이 지금부터 시작됬습니다 ㅎㅎ....

    FPS.exe.idb
    0.79MB

    idb파일 열어보시면,, 원래 모든 함수들이 다 주소로만 써져있는 데, 대부분의 함수를 제가 확인해보고 게임해보면서 무슨 함수인지 다 분석해놨어요...

     

     

    근데, 아무리 해도 저 Check함수에 들어가지지 않는 거예요..

    브포를 check함수 그중에서도 플래그를 xor하는 부분에다가 걸어놓고서 계속 게임을 하는데 전혀 브포가 안걸려요..

    그래서 저는 이게 게임을 어떻게 어떻게 하는 문제인줄 알고 풀었죠..

    근데... 고구마가 체력이 그냥 와장창 높은거더라구요.. 결국 고구마 한마리를 죽이니까 브포가 걸리더라구요 ㅎㅎ...

     

    그래서 확인해 보니까 정말 단순 xor과정을 수행하고,

    그리고 strange나 Pass_TEXT 부분의 데이터가 수시로 바뀌는 줄 알았는 데, 그냥 고정이대요??? 

     

    그래서... strange을 idc.get_bytes로 가져오고, Pass_TEXT도 가져온다음에 각각 다 xor을 해줬습니다.

     

    아~~~...

    진짜 xor 키 수준 보이나요..

    매우 화납니다... 진짜 믿기지 않아서 한 10분은 더 분석해봤는 데 저거 밖에 안나와서 한번 반신반의하면서 해봤는 데 진짜 저게 키라니.. 후... 하... 이런문제에 시간 쏟아서 너무 화나네요....

    막 저는 총알의 공격력을 더 올려서 다 죽이고 그러거나, 아니면 화면에 사진으로 플래그가 뜰줄 알았는 데, 그냥 단순 xor 문제였네요;;...

     

    에효....

    flag는

    Congratulation~ Game C4ear! Password��is Thr3EDPr0m

    'Writeup > Wargame_Writeup' 카테고리의 다른 글

    [Reversing.kr] Ransomware  (0) 2020.02.07
    [Reversing.kr] Position.exe  (0) 2020.02.07
    [Flare-on 2019] Write up  (0) 2020.02.05
    [Flare-on 2019] Wopr  (0) 2020.02.05
    [Reversing.kr] 11_Easy ELF  (0) 2020.02.05

    댓글