Раздел: Документация
0 ... 9 10 11 12 13 14 15 ... 102 эаиичного имиджа на lOOOh байт. Поскольку различные сект зличные атрибуты доступа к памяти, а всякий атрибут распр< :о страницу целиком, «делить» одну физическую страницу м< 1И с идентичными атрибутами.) IDA-WinNT.Infit.4608 ?" £* iump Swrcjj B»» jQptom. Windows Нф,: .. .. :BFBft383D start :BFBfl383B :8FBfl383B varjst -.BFBfi383D M!sr"«t«t :8FB«383D var~SC :8F8fi383B чйг~38 :8F8ft383» :8F8ftl83& : m йй:шад : 8K 81)3844 : m М138Ч9 : 8F 8П3840 :8F8fi384F :8F 8(43854 :8F8ft38S8 :8F0fi38SA :8Feft385F :8F8Й3863 :ВРЙЙ3865 :№вй38бй :ИРЙЙ386Е :BF 8Й3878 proc near = byteptr -»(C!i = byteptr ~s»sft - byteptr -3Ch byteptr -38h ehx pax, ?.(i<ih pax, [efixpaxSj [езх], gjx eax, 270b t»ax, [ebx+eas**!] [eax], ebx pax, 2F5ii pax, [pbx+eax*i»] [eax], ebx pax, 387h pax, [Pbx*eax»Ji] [eax], ebx pax, S1Bh pax, [ebx»eax«*j
с. 1.4. Так выглядит дизассемблерный листинг файла, зараженного вируа nNT.Infis.4608: точка входа расположена в секции .reloc, помещенной посредственно за концом инициализированных данных змой «кромки» исполняемого файла осмотрим, например, как устроен стандартный «блокнот tepad.exe через утилиту efd.exe от Ильфака Гупльфанова, мы ос ж в 6BCh байт, разделяющий секции .data и .rsrc. Причем нег амом исполняемом файле этот разрыв отсутствует (секции пр ipyry вплотную, без зазора), и он образуется уже после проен ж в память (листинг 1.7). 1СТИНГ 1.7. Расположение секций РЕ-файла до их проекции в память и пост TI0N 2 (.data ): virtual size : 00001944 ( 6468.) virtual address 00008000 section size 00000600 ( 1536.) offset to raw data for section: 00006COO offset to relocation ; 00000000 offset to line numbers - 00000000 number of relocation entries : 0 number of line number entries : 0 Flags C0000040-. data only Readable Writable Alignment: 16 bytes by default SECTION 3 (.rsrc ): virtual size . 00006000 ( 24576.) virtual address : 00OOAO0O section size : 00005400 ( 21504.) offset to raw data for section: 00007200 offset to relocation : 00000000 offset to line numbers : 0000000C number of relocation entries : 0 number of line number entries : 0 Flags 40000040: data only Readable Поэтому внедрение вируса в середину файла с последующей раздвижкой секций .data и .rsrc не искажает RVA-адреса остальных частей файла. Тем же самым способом вирус может внедриться и вконец секции .text, что сделает факт заражения менее заметным (хотя, учитывая, что в копне секции .command, «Блокнот» содержит свыше 1Кб неиспользуемого пространства, легко узнаваемого по цеопчкс нулей, драть задницу с перемещением секций незачем). Некоторые антивирусы (и DrWeb в частности), обнаружив, что точка входа указывает на секцию с атрибутом writable, сообщают, что файл, возможно, заражен. Однако это очень ненадежный признак, уверенно распознающий вторжение вируса в последнюю секцию файла, но пропускающий остальные типы внедрений. К тому же в атрибуте writable нуждаются многие вполне законопослушные Упаковщики и навесные защиты, вызывающие ложное срабатывание эвристического анализатора (впрочем, про то, что антивирусам доверять не стоит, мы Уже говорили). Убедитесь также, что точка входа не начинается с машинной команды jump или "И, передающей управление куда-то в конец файла. Обычно вирусы либо на-кяадывают.Щтр непосредственно поверх «живого» кода исходной программы (естественно, предварительно сохранив его оригинальное содержимое в своем теле), либо внедряют сюда целую функцию, предназначенную для отвода глаз («голый» jump привлекает к себе слишком много внимания). Реже здесь удастся встретить текстовые строки или какой-нибудь забавный код, как, например, 8 случае с Win32.cabanas.b (рис. 1.5). IDA - CABANAS EXE "*» E<* Sea«3i Vjew £ptra« )grrio»s Help «««йпдАяйЙИГЛк!)AU KteDowi .t>i* t7££ ШЮВЙЙ itWfflffflu slat ic. 1.5. Так выглядит дизассемблерный листинг файла, пораженного bmdvcc in32.Cabanas.b — непосредственно в точке входа находится jump 0 ... 9 10 11 12 13 14 15 ... 102
|