Study/IDA

IDAPython API 정리 2

대장흰둥 2021. 1. 19. 14:48

1. 바이트 검색

idc.find_binary(주소, flag, 검색 바이트) : 해당 주소에서부터 조건에 따라 바이트를 검색해 준다

flag 목록

SEARCH_UP = 0

SEARCH_DOWN = 1   # 위 또는 아래 방향

SEARCH_NEXT = 2     # 다음 찾기

SEARCH_CASE = 4     # 대소문자 구별 여부

SEARCH_REGEX = 8

SEARCH_NOBRK = 16

SEARCH_NOSHOW = 32

SEARCH_UNICODE = 64 **

SEARCH_IDENT = 128 **

SEARCH_BRK = 256 **

**은 ida 옛날버전은 지원 X

 

2.문자열 찾기

idc.find_text(주소, flag, y, x, 검색 문자열) : flag 의 조건에 따라 주소에서 부터 문자열을 검색 해 준다

 

3.주소의 특징 판단(IDA 해석 기준)

idc.is_code(주소) : 해당 주소부분이 코드면 True

idc.is_data(주소) : 해당 주소부분이 데이터면 True

idc.is_unknown(주소) : 해당 주소부분이 unknown 이면 True

idc.find_code(주소, flag) : 다음 코드부분을 반환

ex )

addr = idc.find_code(주소, SEARCH_DOWN|SEARCH_NEXT)

 

idc.find_data(주소, flag) : 다음 데이터부분을 반환

ex)

addr = idc.find_data(주소, SEARCH_UP|SEARCH_NEXT)

 

idc.find_unknown(주소, flag) : 다음 unknown 부분을 반환

idc.find_defined(주소, flag) : 다음 unknown 이 아닌 부분을 반환

 

idc.find_imm(주소, flag, 상수) : 특정 상수 값을 찾기. (주소, 오퍼랜드에서의 위치) 튜플을 반환

ex) 0x343fd찾기

addr = idc.find_imm(get_inf_attr(INF_MIN_EA), SEARCH_DOWN, 0x343FD )

 

4. 유저가 선택한 부분 가져오기

idc.read_selection_start() : 선택된 부분의 시작 주소 반환

idc.read_selection_end() : 선택된 부분의 끝 주소 반환

 

idaapi.read_selection() : (선택된 여부, 시작주소, 끝주소) 튜플 반환

 

5. 주석달기

reapeatable : 0이면 일반 주석, 1이면 Repeatable 주석

 

idc.set_cmt(주소, 주석, repeatable) : 해당 주소에 해당 주석을 달음

idc.get_cmt(주소, repeatable) : 해당 주소의 주석 가져옴

idc.set_func_cmt(주소, 주석, repeatable) : 해당 주소의 함수에 주석을 달음

idc.get_func_cmt(ea, repeatable) : 해당 주소의 함수의 주석 가져옴

 

6. 바이트 가져오기

idc.get_wide_byte(주소)

idc.get_wide_word(주소)

idc.get_wide_dword(주소)

idc.get_qword(주소)

idc.GetFloat(주소)

idc.GetDouble(주소)

idc.get_bytes(주소, 배열 크기) : 바이트들의 배열을 가져옴

 

7. 바이트 수정하기

idc.patch_byte(주소, 수정 바이트)

idc.patch_word(주소, 수정 바이트)

idc.patch_dword(주소, 수정 바이트)

 

'Study > IDA' 카테고리의 다른 글

[PyQt4] Example  (0) 2021.03.28
IDA 간단한 팝업창 만들기  (0) 2021.03.22
IDA Python Plugin  (0) 2021.03.11
IDAPython API 정리  (0) 2021.01.12