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)
'study > 리버싱' 카테고리의 다른 글
IDA - 사용법 및 단축키 (0) | 2021.02.04 |
---|