首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IDA python查找问题

IDA python查找问题
EN

Stack Overflow用户
提问于 2020-10-05 08:09:36
回答 1查看 85关注 0票数 0

我在这里的目标是在进程的整个内存范围内搜索以下模式:

代码语言:javascript
复制
pop *
pop *
retn

我尝试过使用FindText,但它似乎只返回已经在IDA中解析其指令的区域的结果。因此,要使用FindText id,需要弄清楚如何解析整个内存范围中的指令(这似乎是密集的)。

所以我转而使用FindBinary,但在那里我也遇到了一个问题。我搜索的模式只需要匹配字节的前5位,其余的是通配符。所以我的目标是搜索:

代码语言:javascript
复制
01011***
01011*** 
11000011

我发现有帖子说IDA有一个?字节的通配符,但我不能让它工作,即使它工作,它似乎只工作了整整8位。因此,对于这种方法,我需要找到一种方法来搜索位模式,然后解析结果周围的位。这似乎是最可行的路线,但到目前为止,我还没有在docs中找到任何可以像这样搜索比特的东西。

谁知道实现我想要的东西的方法?

EN

回答 1

Stack Overflow用户

发布于 2020-10-05 08:32:53

在经典的stackoverflow风格中,我花了几个小时试图弄清楚,然后在请求帮助20分钟后,我找到了我需要的确切函数,get_byte()

代码语言:javascript
复制
def find_test():
    base = idaapi.get_imagebase()
    while True:
        res = FindBinary(base, SEARCH_NEXT|SEARCH_DOWN, "C3")
        if res==BADADDR: break
        if 0b01011 == get_byte(res-1) >> 3 and 0b01011 == get_byte(res-2) >> 3: 
            print "{0:X}".format(res)
        base=res+1

现在,如果我能弄清楚如何在每条指令中使用通配符就好了。因为对于这个解决方案,我至少需要知道模式的一个完整字节

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64201037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档