Анимация
JavaScript
|
Главная Библионтека savefile(a,0,0x103D9,0x200); [ ] F:\lDAF\fi1eme = 23:28:03 00000000: 50 53 26 A0 10 00 BB EA 03 38 07 74 07 43 80 3F PS&а□.+ъ□8□t□CА? I 00000010: 00 75 F6 43 5B 58 C3 44 45 49 46 58 43 42 4C 53 1 .uyc[X+DEIFXCBLS Возможность сохранения отдельных фрагментов файла очень полезна и может стать основой для множества утилит (например, такой, что извлекает все текстовые строки, встретившиеся в программе в отдельный файл) Кроме того, она пригодится, если необходимо сохранить модифицированный вызовами PatchByte файл на диск. Дело в том, что IDA не поддерживает экспорт ни во что другое, кроме com и MS-DOS EXE. И то, и другое, очевидно, давным-давно устарело. И поддержку формата популярных сегодня PE файлов придется реализовывать самостоятельно. Перед началом операции необходимо открыть целевой файл на запись с помощью функции fopen и передать savefile его дескриптор. Позиция в файле для записи может быть выбрана любая, как внутри, так и вне него. Однако, в последнем случае возможно разрушение FAT, поэтому необходимо соблюдать дополнительные меры предосторожности. Размер записываемого фрагмента может превосходить длину дизассемблируемого файла, в этом случае «хвост» будет заполнен символами 0xFF, (именно такое значение возвращает функция Byte при попытке чтения несуществующих адресов), но функция, не смотря на это завершится без ошибки.
long fgetc (long handle); Функция читает один байт из файла. При этом файл должен быть предварительно открыт вызовом fopen с правами, разрешающими чтение. Относится к функциям стандартной библиотеки Си. При неуспешном возращении возвращает ошибку BADADDR - иначе очередной считанный символ. Если не достигнут конец файла, то указатель увеличивается на единицу. Пример использования: auto a a=fope while( Messag fclose ("readme.txt","rt" ch=fgetc(a))!=-1) (ch); This patch allows you to permanently access the bonus track and bonus car without winning the tournaments. Операнд Пояснения Дескриптор открытого с правами на чтения файла handle Return
long fputc (long byte,long handle); Функция записывает один байт в файл. Файл должен быть предварительно открыт с правами на запись функцией fopen. При неуспешной записи возвратит ошибку BADADDR, иначе ноль.
long fprintf (long handle,char format,...); Ближайший аналог известной функции sprintf, однако, вместо буфера результат копируется в файл. Очевидно, что файл должен быть предварительно открыт с правами на запись вызовом fopen. Например: auto a,s0; s0=0x123; a=fopen("CON","wt"); fprintf(a, "%x \n",s0); Управляющие символы стандартные, и частично совместимые с printf и полностью совместимы со спецификаторами функции Message встроенного языка IDA. Сф пояснение
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 [ 114 ] 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |