주어진 zip파일을 풀면 이렇게 세개의 파일이 나온다.
일단 readme.txt 부터 열어보면
파일을 Decrypt 하란다. 파일 종류는 exe인 것 같다.
run.exe 을 실행하면 이런 화면이 뜬다.
Key를 입력하면 그 Key를 가지고 Decrypt 하는건가보다.
5천억을 진짜 입금할 순 없으니 살펴보자.
일단 이건 암호화 된 파일이다. 뭔지 하나도 모르겠다..
대충 아무 값이나 넣고 진행을 해보자.
흔히 보던 모습이 모이는 것 같긴하다..
올리디에 던져서 분석을 좀 진행해봤다.
위 그림의 부분은 그렇게 중요하지는 않다.
암호화된 파일을 하나씩 읽어오는 작업을 하는 부분이다.
이 부분이 진짜 중요한데, 읽어온 값하고 입력받은 키 값을 이용해서
암호화된 파일을 복호화 시키는 것이다
위의 코드를 대충 정리하자면
복호화 된 파일 값 = 원래 파일 값 ^ key값 ^ 0xFF
이런식이다. 이 걸 이용해서 코드를 짜면 해결될 것 같다.
readme.txt에서 이건 exe파일이라 했으니
exe 파일 헤더의 일부분을 긁어온다.
그리고 같은 위치의 암호화된 파일의 일부분을 긁어오자.
그리고 이 두 값을 가지고 파이썬으로 코드를 짰다.
1 2 3 4 5 6 7 8 9 10 11 12 | encrypt_file = [0xDE, 0xC0, 0x1B, 0x8C, 0x8C, 0x93, 0x9E, 0x86, 0x98, 0x97, 0x9A, 0x8C, 0x73, 0x6C, 0x9A, 0x8B, 0x34, 0x8F, 0x93, 0x9E, 0x86, 0x9C, 0x97, 0x9A, 0xCC, 0x8C, 0x93, 0x9A, 0x8B, 0x8C, 0x8F, 0x93] origin_file = [0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] for i in range(0,32): key_temp = encrypt_file[i] ^ 0xff key = key_temp ^ origin_file[i] print key | cs |
위와 같은 파이썬 코드이다.
실행시키면 반복되는 수들이 있다.
뽑아오면 이렇게 되는데, 이걸 문자로 변환시키면 그게 키 값이다.
키 값을 입력하면 복호화를 진행해준다.
MZ도 보이고 PE도 보이는 걸 보니
정상적으로 복호화가 된 것 같다.
복호화 됐으니 exe파일로 바꿔서 실행을 시켜보자.
키값이 나왔다.
+
올리디로 던져서 분석할 때
00401000 함수를 불러오는데..
미친듯한 스텁코드였다...
개고생했다...
'Wargame > Reversing-W' 카테고리의 다른 글
reversing kr CSHOP (0) | 2017.07.13 |
---|---|
reversing kr PE Password (0) | 2017.07.13 |
reversing kr ImagePrc (0) | 2017.07.11 |
reversing kr Replace (0) | 2017.07.11 |
reversing kr Music Player (0) | 2017.07.10 |