-
-
[原创]IDA搜索立即数
-
2022-6-23 15:19
11548
-
最近在分析一些应用的错误码处理,想通过接口返回的错误码找到应用中的处理方式
1.IDA直接搜索立即数
大多数情况下,立即数的搜索都可以直接使用ALT+B进行立即数的搜索
例如:
上图这种情况
直接ALT+B
即可得到结果
在搜索的时候记得把汇编视图的滚动条拉到最顶
2.IDApy脚本搜索立即数
在下图这种情况下
一个立即数被拆分成两个立即数位移后相加的情况下,可以采用idapython脚本进行搜索
1 2 3 4 5 6 7 8 9 10 11 12 13 | import idautils
import idaapi
search_number = 0xFFFD ;
for func in idautils.Functions():
flags = idc.GetFunctionFlags(func)
if flags & FUNC_LIB or flags & FUNC_THUNK:
continue
dism_addr = list (idautils.FuncItems(func))
for curr_addr in dism_addr:
if idc.GetOpType(curr_addr, 0 ) = = 5 and (idc.GetOperandValue(curr_addr, 0 ) = = search_number):
print hex (curr_addr)
if idc.GetOpType(curr_addr, 1 ) = = 5 and (idc.GetOperandValue(curr_addr, 1 ) = = search_number):
print hex (curr_addr)
|
idc.GetOpType(addr, index)函数用来判断指令类型, 返回值为5则为立即数
idc.GetOperandValue(addr, index)函数用来获取指令的值
上面的脚本遇上
这种伪指令就歇菜了 这里去读这个=XXX的值只能读到他的地址 其实可以读地址再去读地址对应的值,不过ALT+B能解决我就懒得写脚本找了
关于idapython的教程可以看这个
IDAPython基础教程
[培训]内核驱动高级班,冲击BAT一流互联网大厂工
作,每周日13:00-18:00直播授课