문제 이름에서도 알수있듯 이 파일은 PE32+ 즉 윈도우 64비트 실행파일이다.
올리디버거 peviewer peid 등 대부분의 프로그램이 32비트 파일에 맞춰 나오므로 IDA를 통해 분석할 수 밖에 없었다.
먼저 실행을 시키면 숫자를 입력받는다.
소스를 보면 먼저 무한루프 아닌 무한루프를 도는데 6개의 랜덤값을 생성하고 입력값과 모두 일치하면 반복문을 빠져나간다.
v5는 1인 상태로 빠져나간다.
빠져나간뒤 하는 일을 보니 FLAG를 출력해주는 루틴같다.
루틴을 자세히보니 미리 선언해 놓은 값들을 연산해 플래그로 만드는 작업같다.
굳이 랜덤값 6개를 맞출 필요없이 위의 반복문만 빠져나가면 될거같다.
중요한건 밑에서 v5가 참일때 플래그를 출력해주는데 이부분도 반복문 빠져나가듯이 우회하면 될듯하다.
사실 플래그 출력해주는 부분은 선언해놓은 값들을 연산하는 부분이므로 간단한 코딩을 하면되긴 하는데
나는 32비트 환경이라 64비트 환경에서 연산하면 값이 달라질거 같기도 해서 디버깅으로 풀기로 했다.
IDA로 디컴파일이 되니까 디버깅도 될거같았는데 IDA에서 쓰는 64비트 디버거를 어떻게 설정해주는지 모르겠어서 64비트 디버거를 찾아보기로했다.
구글링을 해보니 x64dbg라는 디버거를 찾았다.
먼저 cmp edx,6 부분을 우회해야 하는데 이부분은 반복문을 빠져나가는 부분이다.
rdx를 6으로 바꿔주면 빠져나간다.
test r8b,r8b 이부분은 위에서 v5가 참이냐 거짓이냐를 따지는 부분인데 r8 레지스터값을 1로 변경해주면 마찬가지로 우회가 된다.
두 부분을 우회하고 나니 플래그가 출력된다.
'문제 > Reversing.kr' 카테고리의 다른 글
Reversing.kr ImagePrc (0) | 2017.01.23 |
---|---|
Reversing.kr Ransomware (0) | 2017.01.21 |
Reversing.kr HateIntel (0) | 2016.10.05 |
Reversing.kr Music Player (0) | 2016.10.04 |
Reversing.kr Position (0) | 2016.09.30 |