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

+ Recent posts