我在非常基本的级别上了解python,而在不存在的级别上了解IDA-Python。请帮助我提供有关如何在IDA中访问此数据的建议。
编辑:
我已阅读了此问题,并说无法直接访问具有以下功能的函数列表被IDA发现。您必须指定一个起始函数地址。有没有更好的方法列出功能?
#1 楼
在反汇编窗口的“文本视图”中,按Alt +T。在“文本搜索”窗口中,搜索shl
并检查Find all occurrences
:按
OK
,您将获取包含shl
的所有功能的列表:#2 楼
最好的选择是使用IDAPython API进行此操作。要遍历所有功能,可以执行以下操作:
from idautils import *
from idaapi import *
ea = BeginEA()
for funcea in Functions(SegStart(ea), SegEnd(ea)):
functionName = GetFunctionName(funcea)
functionStart = "0x%08x"%funcea
functionEnd = "0x%08x"%FindFuncEnd(funcea)
# ...
在函数的开头和结尾,您可以遍历它们之间的所有有效地址,并使用GetMnem()获取该地址上的指令。当然,您需要处理一些特定的情况,指令大小以及所有这些,但这是一般的想法。
评论
函数块可能存在于起始地址和结束地址之间的地址范围之外,实际上我的项目就是这种情况。 IDA在执行您建议的步骤时是否考虑到这一点?
– WMIF
13年7月17日在23:22
是的,我知道这一点,这就是为什么我说您需要处理特定的情况,只是在ida python上举了一个简短的示例...真的不确定如何处理您建议的问题
–0xea
13年7月18日在18:17
您可以遍历文本段中的所有代码,但是将数据放入代码中可能会出错。
–Milhous
15年9月23日在18:04
评论
我没有发生过的facepalm ...
–0xea
13年7月17日在14:00
如此简单,但对我来说却非常合适。它还允许使用简单过滤器ctrl + F来按功能名称前缀限制列表。谢谢!
– WMIF
13年7月17日在23:57