生活总喜欢在你最得意的时候给你当头一棒,你还不得不表示感谢。
学了一个多月逆向,打开教程:“我可以!”,关掉教程:“诶诶诶??什么来着?”
IDA Python
学逆向必不可少的要使用脚本,比来比去还是觉得IDAPython要比IDC用着习惯一点,东拼西凑弄来了大体用法,权当自己总结下来好查资料,如果能帮到正在读文章的你就更好了。
#十六进制获取当前位置的地址
hex(here()) #或者hex(idc.ScreenEA()),二者相同
#获取地址的最大值和最小值
hex(MaxEA())
hex(MinEA())
#获取段的名称
idc.SegName([address]) #例如idc.SegName(here())
#获得反汇编语句
idc.GetDisasm([address])
#获取指定地址的段的起始地址
idc.SegStart([address])
#获取段的一个可迭代数组,每个元素是段的起始地址
idautils.Segments()
#获取地址所在段的起始和终止地址
idc.SegStart([address])
idc.SegEnd([address])
#获取一个函数迭代器,元素为IDA已经解析的函数的起始地址
idautils.Functions()
#获取地址对应的内容
idc.Byte([address])
dc.Word([address])
idc.Dword([address])
idc.Qword([address])
idc.GetFloat([address])
idc.GetDouble([address])
#如果上面觉得麻烦的话可以用下面这个函数自定义读取长度
#获取address的length Byte的内容
get_byte([address],length)
#patch
idc.PatchByte([address], value)
idc.PatchWord([address], value)
idc.PatchDword([address], value)
能写能读,应该可以处理新手逆向的多数问题了,后续用到的再继续补充
参考资料:https://www.cnblogs.com/whitehawk/p/10803489.html