有时,由于编译器优化或只是为了隐藏字符串(例如在恶意软件中),字符串会在程序中动态构造。例如 :
将字节显示为字符时,我们可以看到字符串'INVALID FILE SIZE'
。
有谁知道在 IDA 中提取这些字符串的脚本?如果它不存在,我会写一个,但我想我会先问。
有时,由于编译器优化或只是为了隐藏字符串(例如在恶意软件中),字符串会在程序中动态构造。例如 :
将字节显示为字符时,我们可以看到字符串'INVALID FILE SIZE'
。
有谁知道在 IDA 中提取这些字符串的脚本?如果它不存在,我会写一个,但我想我会先问。
选择要转换的代码块,然后运行以下 IDAPython 函数。如果您不想添加评论,请注释掉对 MakeComm 的调用。
def convert_to_char():
current = SelStart()
end = SelEnd()
tmp = ''
while current < end:
OpChr(current,1)
try:
tmp += chr(GetOperandValue(current, 1))
except:
tmp += '_'
current = NextHead(current)
MakeComm(PrevHead(current), tmp)
如果其他指令也在所选区域中,则添加一些逻辑来验证操作数可能会很有用。
这正是您从 Assert MindshaRE 中寻找的内容 实际上,该脚本将逐条指令查找 ASCII 字符移动到内存位置。它变得很花哨,并使用 QT 来创建一个交互式表格,但是您可以删除该部分并让它在使用的指令上添加注释。