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 |