코드게이트2017 본선 easycrack writeup
Challenge코드게이트 예선때는 101개의 바이너리를 리버싱해서 키를 찾는 문제가 있었는데 모두 같은 bit 였었고, 비교적 규칙적이여서 간단한 angr코드로도 문제를 풀 수 있었다. 이번 본선에는 300개의 바이너리를 리버싱해서 키를 찾는 문제가 나왔는데, 300개의 바이너리를 보니 32bit,64bit 가 랜덤으로 섞여있었고, 키를 찾는 루틴 전에 몇가지 패턴(socket, argv check 등)이 있었고, 이를 코드패치를 해주지 않으면 절대로 키를 체크하는 루틴에 도달할 수 없는 그러한 바이너리가 랜덤하게 300개 있었다. Solution키를 체크하는 함수 직전에 nop + 프로그램 실행 시, 첫번째 인자를 키 체크 함수의 인자로 넣는 어셈블리어를 32bit, 64bit 두 가지 경우로 짠 뒤..