|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 18, 2003 22:58:38 Откуда импортируются такие API: ZeroMemory FillMemory CopyMemory А то в моей справке от Борланда в графе импорт стоит подозрительный прочерк. |
|
|
Дата: Ноя 18, 2003 23:00:02 ZeroMemory это редирект на RtlZeroMemory из kernel32.dll, а остальные - это функции из C runtime library. |
|
|
Дата: Ноя 18, 2003 23:14:27 Asterix Не используй их. Это тормознутые, конченые, примаханые на всю голову функции. Используй в худом случае movsd/movsb - основную часть гнать двойными словами, остальное догонять хвостиком. Выравнивать указатели. Уже обсуждалось на форуме. |
|
|
Дата: Ноя 18, 2003 23:19:00 А как их можно заюзать в masm'е? Просто подключив msvcrt.lib или они как-то по хитрому вызываются? |
|
|
Дата: Ноя 18, 2003 23:20:09 · Поправил: Asterix Volodya Ааааааааааа, я хотел сбацать дампер на их основе, узкоспециализированный. ;-) |
|
|
Дата: Ноя 18, 2003 23:55:24 Volodya Лучше через mmx регистры, это быстрее будет. Остальное можно байтами. А функции действительно тормознутые, причём все. Я как то посмотрел под отладиком, как длина строки определяется(lstrlen), нормальный код уже три таких длины бы нашёл. |
|
|
Дата: Ноя 19, 2003 00:11:09 Asterix Войди в приват, дам тебе статейки почитать. Правильные. |
|
|
Дата: Ноя 19, 2003 02:34:57 · Поправил: Asterix volodya Вобщем сделал как ты и предлагал через rep movsd, так будет универсальнее ;-) Письмо отослал.. |
|
|
Дата: Ноя 19, 2003 02:45:57 Asterix Проверяй. Все на русском :) |
|
|
Дата: Ноя 19, 2003 05:58:57 dragon ZeroMemory это редирект на RtlZeroMemory из kernel32.dll, а остальные - это функции из C runtime library. Не совсем верное утверждение. В Cи rtl их перенаправляют headr'ы. // winnt.h (psdk oct-2002)
...
#if defined(_M_AMD64)
NTSYSAPI
VOID
NTAPI
RtlCopyMemory (
VOID UNALIGNED *Destination,
CONST VOID UNALIGNED *Source,
SIZE_T Length
);
NTSYSAPI
VOID
NTAPI
RtlMoveMemory (
VOID UNALIGNED *Destination,
CONST VOID UNALIGNED *Source,
SIZE_T Length
);
NTSYSAPI
VOID
NTAPI
RtlFillMemory (
VOID UNALIGNED *Destination,
SIZE_T Length,
IN BYTE Fill
);
NTSYSAPI
VOID
NTAPI
RtlZeroMemory (
VOID UNALIGNED *Destination,
SIZE_T Length
);
#else
#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
#endif
...
// winbase.h (psdk oct-2002)
...
#define MoveMemory RtlMoveMemory
#define CopyMemory RtlCopyMemory
#define FillMemory RtlFillMemory
#define ZeroMemory RtlZeroMemory
...
Zero, Fill, Move тянутся из kernel32.dll (в w2k реально в ntdll.dll). Что касается Copy, то практически это Move. |
|
|
Дата: Ноя 19, 2003 16:58:06 Asterix Я ЧЕГО ЗРЯ НА ФОРУМ ФУНКЦИИ ОТПРАВЛЯЛ???? Посмотри в A&O тему Копирование байт для извращенцев.. Там в конце. |
|
|
Дата: Ноя 19, 2003 17:47:17 Edmond А вот так всегда. Пользоваться командой "поиск" тут не умеют. |
|
|
Дата: Ноя 19, 2003 18:59:38 Я как то посмотрел под отладиком, как длина строки определяется(lstrlen), нормальный код уже три таких длины бы нашёл. Этот код был оптимизирован или нет? |
|
|
Дата: Ноя 19, 2003 20:36:52 Edmond А я и не смотрел ;-) Тема то как называлась "...для извращенцев", я вроде нормальный :-))) |
|
|
Дата: Ноя 20, 2003 07:05:48 · Поправил: Asterix Мля, а вот с Армой такой дампер не катит, нужна CopyMemory :-( |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.090 |