Анимация
JavaScript
|
Главная Библионтека void PatchByte (long ea, long value) Функция модифицирует содержимое байта виртуальной памяти, расположенного по линейному адресу ea, на значение value. По замыслу разработчика предназначалась для падченья программы (например, замене 7x на EB, т.е. инструкций условного перехода на безусловный переход - операция часто сопутствующая снятию защит), чем и объясняется ее название. Однако, она нашла применение в решении широкого круга различных задач, в частности копировании фрагментов виртуальной памяти. Функция не позволяет модифицировать не существующие ячейки памяти и не сигнализирует об ошибках записи, поэтому, перед ее вызовом рекомендуется проверить передаваемый ей линейный адрес на существование вызовом GetFlags (подробнее об этом рассказывается в описании функции Byte). Пример ее использования можно найти в файле "memcpy.idc", поставляемом вместе с IDA. ??? #верстальщику - change table
Родственные функции: PatchWord, PatchDword Интекративный аналог: «~EDIT\Patch program\Change byte» void PatchWord (long ea,long value) Функция модифицирует содержимое слова виртуальной памяти, расположенного по адресу ea на значение value. В остальном аналогичена PatchByte (см. описание PathByte). ??? #верстальщику - change table аргумент пояснения линейный адрес ячейки виртуальной памяти Записывамое значение (слово) ea value Родственные функции: PatchByte, PatchDword Интерактивный аналог: «~EDIT\ Patch program\Change word» void PatchDword (long ea,long value) Функция модифицирует содержимое двойного слова виртуальной памяти, расположенного по адресу ea на значение value. В остальном аналогична PatchByte (см. описание PatchByte) ??? #верстальщику - change table аргумент I пояснения ea I линейный адрес ячейки виртуальной памяти" value I Записывамое значение (слово) Родственные функции: PatchByte, PatchWord Интерактивный аналог: нет long NextAddr (long ea) Функция возвращает следующий существующий виртуальный адрес, и BADADDR в том случае, если такого адреса не существует. Вызов NextAddr (BADADDR) равносилен NextAddr (0x0). Пример использования:
a) исходные данные - требуется получить список адресов виртуальной памяти auto a; a=0; while(1) { a=NextAddr(a); if (a==BADADDR) break; Message(">%x\n",a); b) трассировка адресов последовательными вызовами функции NextAddr >10000 >10001 >10002 >10003 >10004 >10005 >10006 >10007 >10008 >10009 >1000a >1000b >1000c >1000d >1000e >1000f >10010 >10011 с) результат - получение перечня существующих адресов виртуальной памяти ??? #верстальщику - change table
Родственные функции: PrevAddr Интерактивный аналог: нет long PrevAddr (long ea) Функция возвращает предшествующий ea существующий виртуальный адрес, и BADADDR в том случае, если такого адреса не существует. Пример использования:
a) исходные данные - требуется получить список адресов виртуальной памяти auto a; a=BADADDR; while(1) a=PrevAddr(a); if (aBADADD) break; Message(">%X\n",a); 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 |