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

[原创]IDA搜索立即数

2022-6-23 15:19
12537

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

[注意]APP应用上架合规检测服务,协助应用顺利上架!

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

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