有时候想分析鼠标选中的部分,可以使用下面的API:
idc.read_selection_start()
idc.read_selection_end()
比如,选中下面的数据:
CODE:0040101D C7 05 64 20 40 00 03 40 00 00 mov ds:WndClass.style, 4003h
CODE:00401027 C7 05 68 20 40 00 28 11 40 00 mov ds:WndClass.lpfnWndProc, offset WndProc
CODE:00401031 C7 05 6C 20 40 00 00 00 00 00 mov ds:WndClass.cbClsExtra, 0
CODE:0040103B C7 05 70 20 40 00 00 00 00 00 mov ds:WndClass.cbWndExtra, 0
CODE:00401045 A1 CA 20 40 00 mov eax, ds:hInstance
CODE:0040104A A3 74 20 40 00 mov ds:WndClass.hInstance, eax
输出结果:
s = idc.read_selection_start()
print(hex(s))
0x40101d
e = idc.read_selection_end()
print(hex(e))
0x40104f
注意,read_selection_end返回的是选中指令最后一条的下一条指令的起始地址。
idc.set_cmt(ea, comment, repeatable) 是 IDA Python 中用于设置指令注释的函数。
参数:
ea: 要设置注释的指令地址。comment: 要设置的注释字符串。repeatable: 一个布尔值,用于指定注释是可重复的还是不可重复的。
idc.get_cmt(ea, repeatable)是 IDA Python 中用于获取指令注释的函数。
idc.set_func_cmt(ea, cmt, repeatable),用于函数。
idc.get_func_cmt(ea, repeatable),用于函数。
给函数设置评论后,会出现在汇编代码试图的函数顶部:
00401040 ; 这里是评论
00401040 ; Attributes: bp-based frame
00401040
00401040 sub_401040 proc near
00401040