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 |