IDA 파이썬 학습 및 사용 기록

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으로 관련 학습 자료

추천

출처www.cnblogs.com/go2sleep/p/12466751.html