首页
社区
课程
招聘
[原创]IDA搜索立即数
2022-6-23 15:19 11338

[原创]IDA搜索立即数

2022-6-23 15:19
11338

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


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞5
打赏
分享
最新回复 (5)
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakasasa 2022-6-23 19:02
2
1
ALT+I
雪    币: 34
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_kycmtvwm 2022-6-23 20:47
3
0
kakasasa ALT+I
感谢大佬指点 
雪    币: 4059
活跃值: (3027)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
scz 5 2022-6-24 10:48
4
0
你这个脚本是在比较老的IDA中测的吧,现在这两个函数是

idc.get_operand_type
idc.get_operand_value
雪    币: 198
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
天会晴心会暖 2022-6-25 13:57
5
0
scz 你这个脚本是在比较老的IDA中测的吧,现在这两个函数是 idc.get_operand_type idc.get_operand_value
是的 在7.0的ida中跑的
雪    币: 6517
活跃值: (8405)
能力值: ( LV17,RANK:787 )
在线值:
发帖
回帖
粉丝
无名侠 12 2022-6-30 11:33
6
0
搜索立即数推荐用 FindFunc 插件,支持多个特征立即数组成规则
https://github.com/FelixBer/FindFunc
例如搜索 Lua 的指令 handler
```
RuleImmediate True False 23
RuleImmediate True False 14
RuleImmediate True False 10
```
游客
登录 | 注册 方可回帖
返回