Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ida.final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6 Mб
Скачать

Success savefile (long handle,long pos,long ea,long size);

Функция, обратная loadfile (смотри описание выше). Она позволяет сохранить фрагмент виртуальной памяти на диске в виде файла.

Например:

seg000:03D3 sub_0_3D3 proc near ; CODE XREF: seg000:03C7p

seg000:03D3 push ax

seg000:03D4 push bx

seg000:03D5 mov al, byte ptr es:loc_0_F+1

seg000:03D9 mov bx, 3EAh

seg000:03DC

seg000:03DC loc_0_3DC: ; CODE XREF: seg000:03E4j

seg000:03DC cmp [bx], al

seg000:03DE jz loc_0_3E7

seg000:03E0 inc bx

seg000:03E1 cmp byte ptr [bx], 0

seg000:03E4 jnz loc_0_3DC

seg000:03E6 inc bx

seg000:03E7

seg000:03E7 loc_0_3E7: ; CODE XREF: seg000:03DEj

seg000:03E7 pop bx

seg000:03E8 pop ax

seg000:03E9 retn

seg000:03E9 sub_0_3D3 endp

seg000:03E9

seg000:03EA aDeifxcblst db 'DEIFXCBLST',0

auto a;

a=fopen(“fileme”,"wb");

savefile(a,0,0x103D9,0x200);

╔═[ ]═══════════════════════════ F:\IDAF\fileme ═════════════════════ 23:28:03 ╗

║00000000: 50 53 26 A0 10 00 BB EA 03 38 07 74 07 43 80 3F ¦ PS&а.+ъ8

t

CА? ║

║00000010: 00 75 F6 43 5B 58 C3 44 45 49 46 58 43 42 4C 53 ¦ .uЎC[X+DEIFXCBLS ║

Возможность сохранения отдельных фрагментов файла очень полезна и может стать основой для множества утилит (например, такой, что извлекает все текстовые строки, встретившиеся в программе в отдельный файл)

Кроме того, она пригодится, если необходимо сохранить модифицированный вызовами PatchByte файл на диск. Дело в том, что IDA не поддерживает экспорт ни во что другое, кроме com и MS-DOS EXE. И то, и другое, очевидно, давным-давно устарело. И поддержку формата популярных сегодня PE файлов придется реализовывать самостоятельно.

Перед началом операции необходимо открыть целевой файл на запись с помощью функции fopen и передать savefile его дескриптор.

Позиция в файле для записи может быть выбрана любая, как внутри, так и вне него. Однако, в последнем случае возможно разрушение FAT, поэтому необходимо соблюдать дополнительные меры предосторожности.

Размер записываемого фрагмента может превосходить длину дизассемблируемого файла, в этом случае «хвост» будет заполнен символами 0xFF, (именно такое значение возвращает функция Byte при попытке чтения несуществующих адресов), но функция, не смотря на это завершится без ошибки.

Операнд

Пояснения

handle

Обработчик открытого на запись файла

pos

Позиция в файле, относительно его начла

ea

Линейный адрес начала региона виртуальной памяти

Size

Число байт для записи

Return

Завершение

Пояснения

0

Функция завершилась неуспешно

1

Функция завершилась успешно

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]