IDA 如何使用命令或脚本保存内存转储?

Din*_*ons 2 python debugging reverse-engineering ida

  1. IDA,十六进制视图 这里图片
  2. 我用鼠标从 StartAddress 到 EndAddress 的字节区域选择
  3. 右键单击 -> 保存到文件
  4. 得到内存转储。

如何与命令相同?如: SaveDump(StartAddress , EndAddress) SaveDump(0x00001000 , 0x00002000)

小智 8

是的,可以,但是一次写入一个字节非常慢。试试这个即时倾销:

auto fname      = "C:\\dump_mem.bin";
auto address    = 0x0400000;
auto size       = 0x0300000;
auto file= fopen(fname, "wb");

savefile(file, 0, address, size);
fclose(file);
Run Code Online (Sandbox Code Playgroud)


rec*_*rom 6

使用 IDA Python API,您可以使用以下脚本保存内存区域,该脚本将提示您指定结果文件的保存位置:

filename = AskFile(1, "*.bin", "Output file name")
address = 0x009DD5B8
size = 0x37a0
dbgr = False
with open(filename, "wb") as out:
    data = GetManyBytes(address, size, use_dbg=dbgr)
    out.write(data)
Run Code Online (Sandbox Code Playgroud)

如果要保存与图形界面中突出显示的内存区域相对应的字节,可以在上面的脚本中使用以下内容:

address = idc.read_selection_start()
if address == idc.BADADDR:
    raise Exception("No memory region selected")
size = idc.read_selection_end() - address
Run Code Online (Sandbox Code Playgroud)

如果脚本在调试器会话期间运行,则设置dbgr为。True