# IDA 툴 개념
- 멀티 아키텍처 디스어셈블 지원
- 멀티플랫폼 간 원격 디버깅 지원
- 4개 아키텍처(x86, ARM, MIPS, PowerPC) 디컴파일 지원
#! download : https://www.hex-rays.com/products/ida/support/download_freeware.shtml
#! IDA 5.0 is freeware : static analysis tool, help to understand program structure
- dynamic debugging tool : GDB in Linux
#! 분기문
cmp 이후에 Jxx 구문을 만족하면 녹색(오른쪽), 만족하지 않으면 빨강색(왼쪽)으로 진행됨
#! 그래픽 모드와 어셈코드 화면 전환은 SPACE 이용
#! 더블클릭으로 함수를 쫓아가다가 원래위치로 가고 싶을 때는 ESC 키 이용
만약 갈 수 없다면 g 키를 누르고 main을 찾아가면 됨
#! 특정 단어를 클릭하면 동일한 단어 또는 변수의 색깔이 노란색으로 변경됨
#! 바이너리 분석 시 먼저 체크할 부분
1. loop 확인
- 카운터를 확인, 초기화값 확인
- 반복하는 횟수와 loop에서 확인하는 값 체크
2. 함수의 구조 및 파라미터를 확인하여 어떤 값이 어떤 인자인지 유추
- 리턴값은 eax에 저장
#! 노트기능
- 그래픽에서 원하는 곳 클릭 후 ; 버튼을 누르면 메모장이 나타나며, 주석을 달 수 있다.
#! 그래픽 모드에서 주소값 보기 설정
options -> Gerneral
Disassembly에 line prefixes 선택
#! Color setting
왼쪽 상단의 네모를 클릭하면 박스에 색깔을 설정할 수 있음
#! Debugger function key
F2 : BreakPoing
F4 : Run to Cursor
F7 : Step into
F8 : Step over
F9 : Run
Ctrl + F7 : Run until return
#! ida 사용방법
- 분기문
만족하면 녹색, 만족하지 않으면 빨강색
- 그래픽, 코드 화면전환은 SPACE 이용
함수클릭 시 동적오픈 소스로만 이동
- 다시 원래로 가려면 ESC 이용
- call을 클릭하면 노란색으로 변경
- 그래프에서 loop 확인
- 카운터를 확인, 초기화값 확인
반복하는 횟수와 loop에서 확인하는 값 체크
- 함수의 구조 및 파라미터를 확인하여 어떤 값이 어떤 인자인지 유추
- 리턴값은 eax에 저장
- 노트기능 활용 - 그래픽에서 원하는 곳 클릭 후 ; 버튼을 누르면 메모장
file *fp;
int a
fp = fopen("/dev/urandom", "rb");
for (a=1; a<3;a++) {
fgets(buf, 2, fp);
sprintf(xxx);
}
c언어 함수구조는 linux에서 man 이용
man (함수이름)
모르는 명령어 파악은 IDA로 보고 gdb로 보면서 레지스터가 어떻게 변했는지 확인
#! download : https://www.hex-rays.com/products/ida/support/download_freeware.shtml
#! IDA 5.0 is freeware : static analysis tool, help to understand program structure
- dynamic debugging tool : GDB in Linux
#! 분기문
cmp 이후에 Jxx 구문을 만족하면 녹색(오른쪽), 만족하지 않으면 빨강색(왼쪽)으로 진행됨
#! 그래픽 모드와 어셈코드 화면 전환은 SPACE 이용
#! 더블클릭으로 함수를 쫓아가다가 원래위치로 가고 싶을 때는 ESC 키 이용
만약 갈 수 없다면 g 키를 누르고 main을 찾아가면 됨
#! 특정 단어를 클릭하면 동일한 단어 또는 변수의 색깔이 노란색으로 변경됨
#! 바이너리 분석 시 먼저 체크할 부분
1. loop 확인
- 카운터를 확인, 초기화값 확인
- 반복하는 횟수와 loop에서 확인하는 값 체크
2. 함수의 구조 및 파라미터를 확인하여 어떤 값이 어떤 인자인지 유추
- 리턴값은 eax에 저장
#! 노트기능
- 그래픽에서 원하는 곳 클릭 후 ; 버튼을 누르면 메모장이 나타나며, 주석을 달 수 있다.
#! 그래픽 모드에서 주소값 보기 설정
options -> Gerneral
Disassembly에 line prefixes 선택
#! Color setting
왼쪽 상단의 네모를 클릭하면 박스에 색깔을 설정할 수 있음
#! Debugger function key
F2 : BreakPoing
F4 : Run to Cursor
F7 : Step into
F8 : Step over
F9 : Run
Ctrl + F7 : Run until return
#! ida 사용방법
- 분기문
만족하면 녹색, 만족하지 않으면 빨강색
- 그래픽, 코드 화면전환은 SPACE 이용
함수클릭 시 동적오픈 소스로만 이동
- 다시 원래로 가려면 ESC 이용
- call을 클릭하면 노란색으로 변경
- 그래프에서 loop 확인
- 카운터를 확인, 초기화값 확인
반복하는 횟수와 loop에서 확인하는 값 체크
- 함수의 구조 및 파라미터를 확인하여 어떤 값이 어떤 인자인지 유추
- 리턴값은 eax에 저장
- 노트기능 활용 - 그래픽에서 원하는 곳 클릭 후 ; 버튼을 누르면 메모장
file *fp;
int a
fp = fopen("/dev/urandom", "rb");
for (a=1; a<3;a++) {
fgets(buf, 2, fp);
sprintf(xxx);
}
c언어 함수구조는 linux에서 man 이용
man (함수이름)
모르는 명령어 파악은 IDA로 보고 gdb로 보면서 레지스터가 어떻게 변했는지 확인
'IT Tech > Tip' 카테고리의 다른 글
아스키코드표 (0) | 2021.08.14 |
---|---|
dumpbin과 hiew를 이용한 바이너리 분석 (0) | 2021.08.14 |
예쁜 글씨체, PPT, 이미지 작업할 수 있는 사이트 (0) | 2021.08.14 |
윈도우 Python 개발환경 만들기 (0) | 2021.08.14 |
Markdown을 실시간으로 사용해볼 수 있는 온라인 서비스 (0) | 2021.08.14 |