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