728x90

IDA에 내장되어있는 Python 기능이다.

내부의 소스코드 실행가능

 

idc.ScreenEA() : 현재 위치의 주소를 리턴한다.

here() : 현재 위치의 주소를 리턴

 

MainEA() : 최소주소를 리턴

MaxEA() : 최대 주소를 리턴

Segment 출력

SegName(address) : address에 대한 세그먼트 이름을 리턴

SegStart(address) : address에 대한 세그먼트 시작 주소를 리턴

SegEnd(address) : adadress에 대한 세그먼트 마지막 주소를 리턴

 

세그먼트별 주소 출력 소스코드

for seg in Segments():

       print SegName(seg), hex(SegStart(seg)),hex( SegEnd(seg))

 

함수 목록 출력

Functions(start_addr, end_addr) : 함수 목록을 리스트 형태로 리턴(범위 지정 가능)

GetFuncName(function_address) : 함수 주소의 이름을 리턴

 

함수목록 출력 소스코드

for func in Functions() :

       print GetFunctionName(func), hex(func)

 

 

현재 코드의 디스어셈블리 코드 출력하기

GetDisasm(here())

NextHead(here()) : 다음 명령 주소

PrevHead(here()) : 이전 명령 주소

 

 

 

함수의 주소 받아오기

GetFunction(address, attr) : address에 해당하는 함수의 attr(함수의 시작 or 끝 주소) 리턴

    - Attr : FUNCATTR_START ( 함수의 시작), FUNCATTR_END(함수의 끝)

 

현재 함수 디스어셈블 출력하기 소스코드

ea = here()

start = GetFunctionAttr(ea, FUNCATTR_START)

end = GetFunctionAttr(ea, FUNCATTR_END)

cur_addr = start

while cur_addr <= end:

print hex(cur_addr), GetDisasm(cur_addr)

cur_addr = NextHead(cur_addr, end)

플래그 받아오기

GetFunctionFlags(address) : address의 플래그 값을 리턴

Flags

FUNC_LIB : 라이브러리 코드를 찾는데 사용

FUNC_STATIC : 정적함수로 컴파일된 함수를 식별하는데 사용

FUNC_FRAME : 프레임 포인터 push ebp를 사용하는 함수를 식별하는데 사용

FUNC_BOTTOMBP : FUNC_FRAME과 마찬가지로 프레임 포인터 pop ebp를 추적하는데 사용

FUNC_THUNK : 다른 함수로 점프하는 간단한 함수인 THUNK를 식별하는데 사용

 

라이브러리 함수 목록 및 주소 출력 코드

for func in Functions():

        flags = GetFunctionFlags(func)

        if flags & FUNC_LIB:

                 print hex(func), "FUNC_LIB", GetFunctionName(func)

 

 

 

 

 

 

 

 

728x90

'study > 리버싱' 카테고리의 다른 글

IDA - 사용법 및 단축키  (0) 2021.02.04
728x90

IDA 사용법

 

IDA는 바이너리 파일을 어셈블리어로 디스어셈블(disassemble) 해주는 프로그램 입니다.

바이너리 -> 어셈블리어 -> C언어 까지 변환을 해줍니다.

 

IDA를 통해 특정 바이너리를 열었을때

위처럼 바이너리의 함수들과 해당 함수들의 어셈블리어 코드들을 확인할 수 있다.

 

Hex-Ray

특정 함수 선택 및 f5 입력

어셈블리어를 C언어 소스코드로 변환해서 보여준다.

Search

Alt + T : 문자열 및 어셈블리어 검색

 

function list

Ctrl + p

함수목록을 보여주고 더블클릭시 해당 함수로 이동이 가능하다.

파일의 정보

TEXT View에서 가장 위쪽에 파일의 대략적인 정보를 확인할 수 있다.

 

 

어셈블리어 코드 수정하기

수정하고싶은 어셈블리 코드 클릭후 Alt + F2

어셈블리어 구문 삽입

바이너리 수정이아닌 분석 소스코드만 수정

 

 

Text View -> Layout Graph

Space bar 입력

text view상태에서 space를 입력하면 아래처럼 그래프 모드로 전환된다.

 

 

Stack Frame 확인하기

아래의 초록색 변수를 더블클릭하면 각 함수의 Stack Frame을 확인할 수 있고 각 변수들의 위치도 확인할 수 있다.

 

 

Jump to structure offset

이동하고 싶은 주소를 입력하면 해당 주소로 이동

단축키 : g

 

 

Search name

Ctrl + L

 

문자열 목록확인

Shift + F12

문자열 및 api 확인 가능

더블클릭시 해당 주소로 이동

이전단계로 돌아가기

ESC

ida에서 진행한 이동을 이전단계로 돌아간다.

 

xref call 따라가기

단축키  : x

특정함수 클릭 후 x를 입력하면 해당함수를 호출한 위치가 나온다. 더블클릭시 이동가능

 

함수 또는 변수 이름 바꾸기

단축키 : N

N입력시 아래처럼 함수명이나 이름을 변경할 수 있다.

 

북마크 기능

특정 주소 클릭 후 Alt + m

북마크 설명 설정

북마크 주소 목록 출력

Ctrl + M

북마크로 설정한 주소들이 출력된다.

 

 

IDA Debugging 모드

break point

F2

break point로 설정할 소스코드를 클릭하고 F2를 입력하면 아래사진처럼 bp가 설정된다.

Process run

F9

F9를 입력하면 process가 실행된다.

F7 : step into

F8 : step over

F5 : IDA View에서는 hexray 기능이고 debugging 모드에서는 run 기능이다.

Ctrl + F2 : 디버깅 종료

 

728x90

'study > 리버싱' 카테고리의 다른 글

IDA Python  (0) 2021.02.06

+ Recent posts