본문 바로가기

IDA

IDA Python 상호참조

반응형

IDA Python 상호참조

: 데이터/함수가 어디에서 쓰이는지 파악하여 활용.


IDA Script는 자동화 분석이 목적이다.

취약점을 유발시킬 수 있는 함수를 알고 있을 때

1) 그 함수를 호출하는 부분의 주소를 쭉 출력

2) 그 함수를 호출하는 부분에 색칠로 표시. --> SetColor() 함수 사용.

등의 작업을 미리 해두면 분석 시 좀 더 편하다.


idautils 모듈CodeRefsTo(ea, flow) 함수를 통해 코드 상호참조를 얻을 수 있다.

(CodeRefsTo()는 object generator)



예시)

취약점을 많이 유발시키는 memcpy 함수를 call 하는 부분을 다 찾아보자.

memcpy_addr = idc.LocByName("memcpy")

for addr in CodeRefsTo(memcpy_addr, 0): #모든 상호참조 받아옴

print hex(addr), idc.GetDisasm(addr); #참조 위치,명령어 출력

SetColor(addr, CIC_ITEM, 0xBBFFFF); #색칠하기

스크립트 작성


콘솔창 결과


SetColor 함수도 잘 적용 됐음 !


이외에도)

//데이터 참조

DataRefsTo(ea)

DataRefsFrom(ea)


//특정 주소 참조

XrefsFrom(ea, flags=0)

XrefsTo(ea, flags=0)

등도 유용하게 사용된다.


자세한 건 hex-ray의 idautils-module 참조.

https://www.hex-rays.com/products/ida/support/idapython_docs/idautils-module.html#CodeRefsTo

반응형

'IDA' 카테고리의 다른 글

IDA Python 찾기(immediate, text, code 등)  (0) 2019.02.21
IDA Python 바이너리 패턴 검색  (0) 2019.02.21
IDA Python 함수 타입  (0) 2019.02.21
IDA Python 피연산자 타입 확인  (0) 2019.02.21
IDA Python 특정 함수 디스어셈블링  (0) 2019.02.21