0x00으로 일반적인 탐색
순회 기능
for fn in idautils.Functions():
print hex(fn), idc.get_func_name(fn)
또한,도 사용할 수 있습니다 idc.get_next_func(ea)
및 idc.get_prev_func(ea)
다음 및 이전 기능을 얻을
블록 탐색
ida_gdl.py이 흐름도 및 BasicBlock 두 개의 클래스가 정의 된
idaapi.FlowChart()
함수 또는도의 일부 영역에 대해 생성 될 수있는
기능 블록의 순회
f_blocks = idaapi.FlowChart(idaapi.get_func(fn), flags=idaapi.FC_PREDS)
for block in f_blocks:
print hex(block.start_ea)
지정하는 FC_PREDS
,의 전신 인 노드 블록 볼 수 있습니다
이송 블록의 후속 노드를
for succ in block.succs():
print hex(succ.start_ea)
블록의 전구체 노드 이송
for pred in block.preds():
print hex(pred.start_ea)
preds ()가 빈 집합을 반환하는 경우, 플래그가 FC_PREDS로 설정되어 있는지 여부를 확인,보다 자세한 정보는 플래그 [참조 https://www.hex-rays.com/products/ida/support/sdkdoc/group___f_c__.html ]
보기 지정된 블록
id = 0x1
f_blocks = idaapi.FlowChart(idaapi.get_func(fn), flags=idaapi.FC_PREDS)
block = f_blocks[id]
print block.id
어셈블러 지침 통과
BasicBlock
[start_ea, end_ea)로 정의 블록 클래스
어셈블러 명령어 블록의 모든 관통
curr_addr = block.start_ea
while curr_addr < block.end_ea:
print idc.GetDisasm(curr_addr)
curr_addr = idc.NextHead(curr_addr, block.end_ea)
마지막 명령 블록을 얻을 필요가 있다면, 당신은 쓸 수 있습니다 :
addr = idc.PrevHead(block.end_ea)
print idc.GetDisasm(addr)
데이터에 액세스하는 0x01
함수 및 함수 주소
- 함수 이름을 가져
idc.get_func_name(ea)
함수 내부 EA가 될 수 있습니다 - 속성 취득 기능
idc.get_func_attr(ea, attr)
함수의 선두 어드레스를 확인하는 데 사용할 수있는, FLAG 기능 등
idc.get_func_attr(ea, FUNCATTR_START)
idc.get_func_attr(ea, FUNCATTR_END)
idc.get_func_attr(ea, FUNCATTR_FLAGS)
지시
- 니모닉 받기
idc.print_insn_mnem(ea)
- 작업의 수를 가져옵니다
print_operand(ea, n)
- 피연산자의 유형을 가져옵니다
get_operand_type(ea, n)
0x02의 팁
IDA 직접 사용될 입력을 용이하게하기 위해, 파이썬 코드는 두 가지 예에 따라 연속으로 구성 될 수있는
현재의 모든 기능 블록의보기
for block in idaapi.FlowChart(idaapi.get_func(idc.get_screen_ea())) : print "%d: [0x%x, 0x%x)" % ( block.id, block.startEA, block.endEA)
후속 노드의 지정된 블록을 확인
id=0x1;successors=idaapi.FlowChart(idaapi.get_func(idc.get_screen_ea()))[id].succs()
for block in successors: print "%d: [0x%x, 0x%x)" % ( block.id, block.startEA, block.endEA)
0x03으로 관련 학습 자료
- IDAPython에 초보자 가이드
- IDA / 파이썬 디렉토리에서
idc.py
이 코드는 거의 모든 필요한 인터페이스에서 찾을 수 있습니다 - http://scz.617.cn:8/misc/201811281121.txt