go lang calling convention
고언어는 누가 만든건지 어셈블리라인에서는 너무 괴랄한것 같음. 징그럽다. CTF에서 Go나 C++로 만든 바이너리를 거르는 이유가 진짜 있음..ㅋㅋ https://www.sokoide.com/wp/2014/09/28/golang-calling-convention/ https://particle.cafe/blog/golang-calling-convention.html
고언어는 누가 만든건지 어셈블리라인에서는 너무 괴랄한것 같음. 징그럽다. CTF에서 Go나 C++로 만든 바이너리를 거르는 이유가 진짜 있음..ㅋㅋ https://www.sokoide.com/wp/2014/09/28/golang-calling-convention/ https://particle.cafe/blog/golang-calling-convention.html
우주소녀 루다 최근 사이버가디언즈 고등학교 리그에서 계속 Go 언어로 된 바이너리를 리버싱하는 문제들이 연속적으로 나와서 이참에 Go언어도 배우고 Golang reversing 테크닉을 익혀두려고 정리해보려한다. Go언어의 특징 Go언어는 구글이 2009년에 만든 언어이다. 가장 대표적으로 밀고 있는 장점은 컴파일 속도가 빠르다는 점. 컴파일 속도가 매우 빠르기 때문에 인터프리터 언어로서도 사용할 수 있다는 것이 큰 장점이다. Go언어도 VB처럼 Go 런타임 안에서 코드를 실행시키는 방식을 사용하고 있다. 따라서, 일반적인 바이너리에서처럼 Main 함수의 부분을 찾아서 그것을 찾고 분석하기는 힘들다.
가끔 어셈블리어를 보다보면 mov 나 movl 을 볼 때가 있는데 차이는 간단하다. movl 과 mov 이 하는 역할의 차이는 사실상 없다고 보면 된다. mov나 push 등의 명령어 뒤에 쓰이는 l, b, w를 뒤에 있는 오퍼랜드의 크기를 지정하는 것이다. movl : 32bit 크기를 다룬다. movw : 16bit 크기를 다룬다. movb : 8bit 크기를 다룬다.