[Rev] 4. Decompile and IDA

KBC·2024년 8월 30일

리버싱

목록 보기
6/11

Decompile : Reverse of Compile


실행가능한 Binary 파일을 다시 C 코드로 바꾸는 작업

Decompiler Tools

  • Ghidra : Github에 공개되어있어 무료로 많은 해커들이 사용
  • IDA : free버전과 Pro 버전으로 나뉘어 있고 free버전은 아키텍쳐가 제한되어 있지만 성능이 가장 좋다고 알려짐
  • Binary ninja : Pro 유료 버전밖에 없다

IDA Free Install

https://hex-rays.com

위 사이트에 접속해서 각각 운영 체제에 맞는 버전을 다운로드 한다.

IDA Free Decompile


executable 파일을 선택하게 되면 다음과 같은 창이 뜬다. 옵션과 같은 경우 보통 Default Setting 그대로 놔두고 넘어간다.

이후 이런 창이 나타나게 된다. 좌측 상단에는 Functions Names로 Disassemble 했을때의 함수들이 나타나고 화면 중앙에는 Assembly로 이루어진 코드들이 보인다.

이후 View >> Open Subviews >> Generate pseudocode를 통해 Decompile 해보자


그럼 이렇게 Assembly 언어를 C 언어로 변환을 해주게 된다.
Handray Disassemble 결과보고 C 언어를 손수 유추했던 어제는 안녕...

Pseudocode 함수명 변경


Decompile을 통해 위와 같은 Pseudocode를 얻었을 때 함수명을 변경할 수 있다.

변경하고자 하는 함수에서 우클릭 후 N을 누르게 되면

위와 같은 창이 팝업된다 해당 창에서 Name을 수정후 OK를 누르면 function name이 변경된다.

Pseudocode return, 함수 매개변수 type 변경


바꾸고자 하는 Pseudocode 위에서 우클릭 후 Y를 누른다

위와 같이 팝업창이 뜨고 여기서 return 받고자 하는 타입으로 변경한다.

IDA Free Disassemble


View >> Open subviews >> Disassembly를 실행해보자

이와 같이 전체 파일에 대해 Assembly로 내용을 확인할 수 있다.

Main 함수를 한번 사라지게 해보자

main 함수 위에서 우클릭 후 Undefine을 누르게 되면

아래 Assembly 코드들이 바이트코드로 바뀌게 된다.

그리고 이제 다시 Assembly로 바꾸려면 다시 main에서 우클릭 후 Code를 누른다(단축키 c)

Assembly로 다시 바뀌긴 했지만 왼쪽 함수 목록에도 main이 없고 왠지 모르게 빨간색으로 변해 있다. 아직 함수로 인식이 안된 것이다.


이럴때는 함수 시작 부분에서 우클릭하고 Create function을 눌러서 함수로 인식시킬 수 있다.

정상적으로 돌아왔다.

IDA Free Hexdump


다음으로 Hexdump View는 파일의 전체 내용을 Hex로 확인할 수 있다.

IDA Free Strings


Strings는 파일 내부의 모든 문자열을 볼 수 있는 View다. Ctrl+F를 이용해서 검색이 가능하다.

IDA Free Segments


Segments View는 파일 내부 Segment, 구조, 위치, 권한을 확인할 수 있다.

IDA Free Structures


해당 View는 구조체 리버싱을 할 때 사용된다.

profile
AI, Security

0개의 댓글