因为我现在用的是IDA7.7的版本,然后python版本是3。但是网上基本上都是基于2.7来讲解的。在使用的时候经常报错。所以我准备把以后遇到的python脚本都统一的记录下来。

【一下的代码亲测有效】

获取地址

首先我们在IDA脚本中通常用ea来表示地址。

1.获取光标处的地址

1
2
3
ea = idaapi.get_screen_ea()
print(ea)#默认是用10进制打印
print(hex(ea))#用16进制打印

2.通过函数名称获取地址

获取的是这个函数的首地址。

函数名称一般是 :.text:0000000000056330 __do_global_dtors_aux proc near

1
2
3
4
import idaapi
func_name = "__do_global_dtors_aux" # 替换为你要查找的函数名
func_ea = idaapi.get_name_ea(BADADDR, func_name)
print(hex(func_ea))

for循环

这段代码的作用是遍历二进制文件的所有段,并输出每个段的名称、起始地址和结束地址。这对于分析二进制文件的结构和布局非常有用,特别是在逆向工程或恶意代码分析方面。

1
2
for seg in idautils.Segments():
print(idc.get_segm_name(seg), idc.get_segm_start(seg), idc.get_segm_end(seg))

这个示例会遍历所有函数,并打印它们的起始地址和名称。

1
2
3
4
5
6
7
8
9
10
11
import idaapi
import idautils

# 获取函数迭代器
function_iter = idautils.Functions()

# 遍历函数
for function_ea in function_iter:
# function_ea 是函数的起始地址
function_name = idaapi.get_func_name(function_ea) # 获取函数名称
print(f"Function at {hex(function_ea)}: {function_name}")