코드게이트 2017 문제인 것 같다. Go 로 만든 elf 파일에서 플래그를 찾는 것이 목적. Go 에 대한 이해가 너무 필요했다. Go 는 스택 기반 호출을 하는 언어로 함수를 호출할 때, 레지스터나 push를 쓰지 않고 스택에 데이터를 삽입 후 원하는 인자들을 그 스택 그대로 가져와서 함수호출 후에 쓴다. 또한 리턴 값을 저장하는데에 rax를 쓰지도 않는다. 확실한건 x86_64 calling convention 과는 다르다는 것이다. 이러한 부분들 때문에 IDA가 있어도 일일히 어셈블리를 보는 수 밖에 없었다. (헥스레이가 깨짐) 우선 Go에서 함수가 어떻게 동작하는지를 조금 살펴보았다. 위 사진은 Go로 작성한 소스코드, 아래는 그 소스에 대한 어셈블리 코드이다. 1번과 2번으로 소스를 나눠서 볼..