|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 23, 2004 21:17:03 · Поправил: choor Подскажи как будет оптимальнее открыть файл для заражения и заразить его, через какие функции? Примечание: нужно заразить только один файл, все адреса апи найдены. Мой способ не канает:
.data
...
ff_struc struc
ff_attr dd ?
ff_time_create dd ?,?
ff_time_lastaccess dd ?,?
ff_time_lastwrite dd ?,?
ff_size_hi dd ?
ff_size dd ?
dd ?,?
ff_fullname db 260 dup (?)
ff_shortname db 14 dup (?)
ff_struc ends
fileinfo ff_struc <?>
filename db 'rabbit.exe',0
...
.code
...
lea edi,fileinfo
lea edx,filename
push edi
push edx
call _FindFirstFileA
push 0
push 80h
push 3
push 0
push 1+2
push 080000000h+40000000h
push edx
call _CreateFileA
cmp eax, -1
je error_message
...
Всегда вылетает на error_message не могу понять почему :( P.S. Не судите строго, я только учусь ;) |
|
|
Дата: Июл 23, 2004 22:15:10 а как ты думаешь, что находится в edx после вызова FindFirstFileA ??? |
|
|
Дата: Июл 24, 2004 13:48:22 адрес filename |
|
|
Дата: Июл 24, 2004 13:52:13 · Поправил: ssx в fileinfo.ff_fullname будет имя файла |
|
|
Дата: Июл 24, 2004 15:32:45 > адрес filename А вот и не угадал, делаем rtfm пока не поможет =) |
|
|
Дата: Июл 24, 2004 17:01:21 Dr.Golova: я Дебагером прошёлся :) там ASCII 'rabbit.exe', токо меняется когда вылетаю на MessageBoxA |
|
|
Дата: Июл 24, 2004 18:19:07 · Поправил: Asterix choor Процедуры в Windows не обязаны сохранять eax, edx, ecx |
|
|
Дата: Июл 24, 2004 18:48:44 Asterix: мож у меня глюк но я чётко в дебагере смотрел что, edx сохраняется |
|
|
Дата: Июл 24, 2004 19:13:00 choor А ты не смотри, ты запомни что это так как я написал ;-) |
|
|
Дата: Июл 24, 2004 23:34:57 Странно, тогда щас поиграю с регистрами |
|
|
Дата: Июл 26, 2004 14:07:58 FindFirstFileA вообще не использует edx (и не сохраняет) - но вызывает RtlUnicodeStringToAnsiString из NTDLL которая в свою очередь тоже не использует edx но зато вызывает RtlUnicodeToMultibyteN - где в edx (по крайней мере так показалось :)) помещается второй параметр - указатель на макс. кол-во байт в мультибайт-строке. И затем из него вычитается кол-во заполненых байтов - отсюда поидее на выходе edx будет соодержать разницу между MaxBytesInMultiByteString и BytesInMultiByteString. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.060 |