티스토리 뷰






Reversing.kr의 문제 Direct3D FPS입니다.


문제 파일을 실행시켜보면,






고구마 몬스터들을 총으로 쏴 죽이는 게임입니다.


올리디버거로 분석해보겠습니다.






"Game Clear"라는 문자열이 있는 곳으로 가보니 이상한 문자열이 있네요.


고구마 몬스터를 조금 잡아보니,






문자열이 조금 달라졌습니다.


아마 필드 안에 있는 모든 고구마 몬스터들을 잡으면 이상한 문자열이 성공 문자열로 바뀌는 것 같네요.


문자열을 복호화해주는 부분을 찾기 위해서 이상한 문자열에 하드웨어 BP를 걸고 고구마 몬스터를 조금 잡아보았습니다.






위가 바로 복호화를 해주는 부분입니다.


하지만 이상한 문자열과 XOR 연산을 하는 CL의 값을 알 수가 없기 때문에,


0103427에서 CL이 값을 받아오는 메모리 주소에 하드웨어 BP를 걸어보겠습니다.






바로 이 부분이 이상한 문자열과 XOR 연산을 할 값을 만드는 부분입니다.


이 부분에서는 0부터 4의 배수 순서대로 0xC4까지 있는 배열을 만듭니다.


바로 이 배열과 50바이트의 이상한 문자열을 XOR 연산하는 것이죠.


파이썬으로 이상한 문자열을 복호화해주는 XOR 연산 코드를 짜보았습니다.


string = [0x43, 0x6B, 0x66, 0x6B, 0x62, 0x75, 0x6C, 0x69, 0x4C, 0x45, 0x5C, 0x45,
          0x5F, 0x5A, 0x46, 0x1C, 0x07, 0x25, 0x25, 0x29, 0x70, 0x17, 0x34, 0x39,
          0x01, 0x16, 0x49, 0x4C, 0x20, 0x15, 0x0B, 0x0F, 0xF7, 0xEB, 0xFA, 0xE8,
          0xB0, 0xFD, 0xEB, 0xBC, 0xF4, 0xCC, 0xDA, 0x9F, 0xF5, 0xF0, 0xE8, 0xCE,
          0xF0, 0xA9]

for i in range(0, 50):
    xor = string[i] ^ (i*4)
    print chr(xor),

코드를 실행시켜보면..






정답이 출력됩니다!!





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

[Reversing.kr] Position 풀이  (0) 2018.01.10
[Reversing.kr] AutoHotkey1 풀이  (0) 2018.01.05
[Reversing.kr] Ransomware 풀이  (0) 2018.01.03
[Reversing.kr] CSHOP 풀이  (0) 2017.12.27
[Reversing.kr] 2017-12-27 진행 현황  (0) 2017.12.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함