[IDA] C++ decompile failure : call analysis failed
revgolang 바이너리를 분석하다가 의지도 잘 안생기고 구조도 너무 이상하기에 다시 초심을 잡자는 이유로 rootme crack 문제를 풀고있었다.
c++ 바이너리는 평소에 분석을 열심히 하지 않았는데, 쉽지만 rootme 를 풀면서 헥스레이에 관련되어 처음 보는 경우를 발견해서 포스팅 하게 되었다.
바이너리를 열고 평소처럼 헥스레이를 쓰려는데 다음과 같은 에러메세지가 뜨면서 디컴파일이 되지 않았다.
귀찮으면 어셈블리로 분석을 진행해도 되겠지만 나는 헥스레이의 의존도가 높은 초보라 원인을 분석하기로 하였다.
겉으로 보기에는 큰 문제가 없어보이는데 그 이유가 왜 뜨는지 몰랐다. 근데 stackexchange 에 나와 같은 고민을 하는 사람이 있었다.
https://reverseengineering.stackexchange.com/questions/15473/why-is-ida-call-analysis-failing
이유는 인자에 관련되어있는 것이었다.
오류가 발생하는 해당 함수를 디컴파일 해보면
인자가 무지막지하게 많다는 것을 볼 수 있다.
근데 막상 이 함수를 호출하는 해당 루틴을 보면 단지 esp 에 인자를 하나 넣는 것으로 되어있다. 따라서 헥스레이가 디컴파일을 할때 해당 함수에 필요한 인자의 개수보다 실제 넣어주는 인자의 개수가 적어서 call analysis fail 이라는 오류가 생긴것이다.
따라서 이 함수의 인자가 없게끔 다시 정의를 해주면 디컴파일이 되게 할 수 있다.
나는 정말 리버싱 못하는구나....
'rev' 카테고리의 다른 글
PDF 자바스크립트 추출 (0) | 2018.09.10 |
---|---|
[Python] gmpy invert, divm (rctf 2018 babyre2) (0) | 2018.08.06 |
[IDA] 자주쓰는 IDA 단축키 (0) | 2018.08.01 |