首页
论坛
课程
招聘
[原创]IDA搜索立即数
4天前 1880

[原创]IDA搜索立即数

4天前
1880

最近在分析一些应用的错误码处理,想通过接口返回的错误码找到应用中的处理方式
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基础教程


【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

收藏
点赞1
打赏
分享
最新回复 (4)
雪    币: 445
活跃值: 活跃值 (1335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakasasa 活跃值 4天前
2
1
ALT+I
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_kycmtvwm 活跃值 4天前
3
0
kakasasa ALT+I
感谢大佬指点 
雪    币: 645
活跃值: 活跃值 (304)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
scz 活跃值 4 3天前
4
0
你这个脚本是在比较老的IDA中测的吧,现在这两个函数是

idc.get_operand_type
idc.get_operand_value
雪    币: 3
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
0
scz 你这个脚本是在比较老的IDA中测的吧,现在这两个函数是 idc.get_operand_type idc.get_operand_value
是的 在7.0的ida中跑的
游客
登录 | 注册 方可回帖
返回