2023. 11. 13. 09:06ㆍ리버싱
일단 디크립트된 파일의 확장자가 exe라는 정보가 있습니다.
이 파일이 UPX패킹이 되어 있어서 UPX 언패킹을 해주면 다음과 같은 어셈블리 코드가 보입니다. 근데 이 코드 너무 난잡하니 SEARCH STRING기능을 이용하겠습니다.
KEY STRING을 더블 클릭 합니다.
브레이크 포인트를 걸고 스탭오버합니다.
저는 KEY를 예시로 12345로 했습니다.
분석 결과 KEY값은 파일을 복호화할때 CHAR형으로 인식되어 1에 CHAR형에 해당하는 ASCII넘버 31, 32, 33, 34, 35형태로 복호화가 진행됩니다. 그리고 FOPEN를 통해 파일을 불러주는 것을 아실 수 있습니다.
여기서 계속 진행하다보면 파일의 1바이트씩 값을 불러와서 다음과 같은 규칙으로 복호화가 진행됩니다.
file's 1byte ^ key[i] ^ 0xff = decrypted file이 됩니다. 근데 여기서 EXE파일이라고 했으니까 파일 헤더가 EXE시그니처를 가져야 된다는 것을 아실 수 있습니다.
여기를 잘보면 13씩 반복되는 것을 대충 짐작할 수 있습니다. 근데 헷갈리면 일단 한 줄을 가져다가 밑에 있는 코드를 만들어 줍니다.
이 문제에 핵심은 올바른 KEY값을 입력해서 EXE파일로 복구하는 것 입니다. 따라서
KEY = decrypted file(EXE)^file's 1byte ^0xff 가 됩니다.
여기서 KEY값은 letsplaychess가 됩니다.
그럼 다음과 같은 flag를 얻게 됩니다.
'리버싱' 카테고리의 다른 글
Position(reversing.kr) write-up (1) | 2023.11.19 |
---|---|
reversing.kr CSHOP풀이 (1) | 2023.11.13 |
reversing.kr Direct3D FPS 문제 풀이 (0) | 2023.11.05 |
www.reversing.kr(Replace)풀이 (1) | 2023.10.22 |
Reversing.kr (Easy Keygen) (0) | 2020.04.08 |