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

2024-05-12 23:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

如何处理命令?比如: SaveDump(起始地址,结束地址) 存储转储(0x000010000、0x00002000)


Tags: 文件内存命令gt视图区域字节here
3条回答

使用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)

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

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

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

在IDA中按Shift+F2,然后粘贴此脚本:

auto file, fname, i, address, size, x;
address = 0x0159ADB0;
size = 0xEA90;
fname = "C:\\dump_mem.bin";
file = fopen(fname, "wb");
for (i=0; i<size; i++, address++)
{
 x = DbgByte(address);
 fputc(x, file);
}
fclose(file);

运行脚本,从0x0159ADB0获取dump_mem.bin文件,大小为0xEA90

是的,可以,但是一次只写一个字节是很慢的。 尝试立即转储:

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

savefile(file, 0, address, size);
fclose(file);

相关问题 更多 >