IDA 처음 쓰는 사람들에게

두비니

·

2020. 8. 31. 22:04

 

 

 

 


IDA 처음 쓰는 사람들에게


 

 

IDA..... 천만원짜리 엄청난 프로그램이지만 제대로 사용법을 몰라서 힘들어하는 사람들이 많은 것 같습니다.

 

 

간단한 사용법을 알아보도록 합시다.

일단 IDA는 디스어셈블러의 일종으로, 디스어셈블러는 바이너리 파일을 역으로 어셈블리어로 재구성해주는 툴입니다. 이런 디스어셈블러의 종류는 많지만, 그 중 아이다가 거의 독보적으로 성능이 좋아서 다들 IDA를 많이 씁니다.

 

뭐 디스어셈블러는 많은데 왜 굳이 IDA를 쓰냐?

IDA를 쓰는 이유는 다음과 같습니다.

 

1. 거의 모든 CPU 지원

2. FLIRT(Fast Library Identification and Recognition Technology)라는 기계어의 코드로부터 컴파일러 특유의 Library함수를 산출해낼 수 있는 기능이 있습니다.

3. 각종 플러그인 지원

4. Obfuscation(난독화)코드도 해석이 잘됨

 

그니까 한줄로 요약하자면 IDA는 바이너리 >> 어셈블리어 >> 프로그래밍 언어 까지 변환을 지원해줍니다. 물론 아주 가끔씩 틀릴때도 있지만 어셈을 하나하나 보고있을 필요가 없어서 덕분에 리버싱 능력은 떨어져도 매우매우 애정하는 프로그램임,,

 

 

일단 IDA는 여느 디버깅 프로그램과 같이 32bit와 64bit로 나뉩니다. 당연히 프로그램 상태에 따라서 잘 쓰면 되겠죠?

 

 

개인적으로 IDA를 쓰면서 자주 쓰는 기능들과 알아두면 좋은 기능들을 서술하려고 합니다. ((((주관적인)))) 기준으로 많이 쓰는 것들을 정리했으며, 지극히 포너블 기준이니 다른 글들도 찾아보는 걸 추천드립니다.

 

0. 기본 인터페이스

 

일단 파일을 처음 실행시키면 다음과 같은 화면이 뜹니다.

혼란스럽져?

구간으로 나누어서 보면 다음과 같습니다.

 

 

일단 크게 저정도로만 봐도 상관없을 것 같네요. 지금 "해당 함수에 대한 description"부분은 어셈코드로 써져있는데, 보통 이대로 분석하지는 않습니다.

 

 

1. Pseudo Code 보기

변환을 원하는 함수를 선택한 후 F5를 누르면 됩니다. 그러면 창에 Pseudocode라는 창이 새로 생기면서 프로그래밍 변환된 걸 보여줍니다. 

그리고 실행된 코드 내에서 있는 함수로 넘어가고 싶다면 더블클릭을 하면 넘어가집니다.

포너블을 할때는 보통 이런식으로 코드를 분석하며 취약점을 발견합니다.

그리고 여기서 팁을 하나 주자면 평소에 배웠던 C언어/C++의 방식으로 코드가 보여지진 않습니다. 근데 이건 정말 어셈블리어 코드를 다시 pseudocode로 자동적으로 바꾼 것이기 때문에 예를들어 __int64는 int구나, _isoc99_scanf는 scanf구나, 이런식으로 코드를 눈치껏 잘 봐야합니다. 그래서 이런걸 분석할 때는 한줄한줄 이게 무슨 함수지 하고 붙잡고있는것보다 큰 줄기를 이해한 뒤에 중요해보이는 부분만 세부적으로 분석하는게 좋습니다.

 

 

2. Text검색하기

Alt + t를 통해서 검색하려는 어셈블리어 구문 및 string을 찾을 수 있습니다.

 

 

이건 문제풀면서 전혀 감이 안잡힐 때 쓰입니다.

 

3. 다른 함수로 점프하기

ida를 실행하면 기본적으로 main함수가 열립니다. 다른 함수의 pseudocode나 정보가 보고싶으면 왼쪽의 functions윈도우에서 해당 함수를 더블클릭하거나 Ctrl + p 를 통해 다른 함수를 볼 수 있습니다.

 

 

 

 

4. open한 파일의 정보 보기

맨 처음 화면에서 F5를 누르지 않고 변수크기(초록글씨)를 더블클릭하게 되면 파일에 대한 이런저런 정보들이 나옵니다. 그 중에서도 최상단으로 올리게 되면 open한 파일의 경로, 해당 파일의 format 정보, ImageBase정보, Section size, 그리고 OS정보 등을 조회할 수 있습니다.

 

 

 

크게 이정도 기능 쓰는 것 같네요. 솔직히 IDA는 1번기능때문에 쓴다고 봐도 무방하고, IDA도 가끔씩 잘못 해석하는 경우가 있기 때문에 IDA에 너무 의존하지 않는 것을 추천드립니다. 솔직히 이외의 웬만한 기능들은 리눅스 환경이나 기타 디버거로도 충분히 확인할 수 있기 때문에 적어놓지는 않았습니다. 사실 지금 그냥 생각나는대로 적어내려간거라 나중에 더 생각나면 추가하도록 하겠습니다.

 

 

혹시나 다른 기능도 궁금한 분들을 위해 상세하게 적어놓은 링크 남겨둡니다.

 

https://koharinn.tistory.com/69

 

IDA Pro 7.0 사용법

# Pseudo Code 보기 -F5 -특정 함수 이름 더블클릭 # 디스어셈블 상태, 디버깅 상태에서 특정 어셈블리어 코드 고치고 싶을 때 - 고칠 부분 클릭하고 Alt + F2 - Menu : edit -> Other -> Manual Instruction 바..

koharinn.tistory.com

 

끝!