![]() |
![]() |
FreeMan |
![]() ![]()
Сообщение
#1
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
Почти каждый, кто изучает язык ассемблера, рано или поздно пишет вирус, некоторые люди пишут вирус, когда заканчивают изучать какой-нибудь язык программирования... Прежде чем читать то, что я буду писать ниже и понимать хоть что-нибудь, вы должны:
а) знать основные команды ассемблера б) уметь пользоватся АПИ-функциями в) взять где-нибудь (можно и у меня) TASM32 (можно и другой, но каждый компилятор имеет свои особенности). г) отладчик (если собираетесь собственноручно создать зверька, то без отладки довольно трудно найти ошибки) д) прогу, которая прикреплена (на неё вопит касперский, но это не вирус!!!! ) е) иметь здоровую голову (если вы хотите испортить все компы на Земле, то ваше место в больнице, а не здесь) ё) ПОМНИТЬ, ЧТО ЭТОТ МАТЕРИАЛ ПРЕДСТАВЛЕН ТОЛЬКО В ЦЕЛЯХ ОБУЧЕНИЯ, И ЗА ПОСЛЕДСТВИЯ Я НИКАКОЙ ОТВЕТСТВЕННОСТИ НЕ НЕСУ Вроде всё. Теперь план обучения: 1) формат заголовка файла РЕ 2) разбор основных полей заголовка РЕ 3) методика заражения 4) дельта-смещение. 5) поиск АПИ 6) разбор используемых АПИ 7) пишем код 8) Reserved ![]() Прикрепленные файлы -------------------- бб
|
![]() ![]() |
FreeMan |
![]()
Сообщение
#2
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
MapViewOfFile - помещает промэппированный файл в память.
Цитата LPVOID MapViewOfFile(
HANDLE hFileMappingObject, // file-mapping object to map into address space
DWORD dwDesiredAccess, // access mode
DWORD dwFileOffsetHigh, // high-order 32 bits of file offset
DWORD dwFileOffsetLow, // low-order 32 bits of file offset
DWORD dwNumberOfBytesToMap // number of bytes to map
);
hFileMappingObject - хендл, который остался от CreateFileMappingA dwDesiredAccess - тип доступа ставим SECTION_MAP_WRITE + SECTION_MAP_READ=2+4 dwFileOffsetHigh и dwFileOffsetLow - размер, если ноль, то столько, сколько в CreateFileMappingA dwNumberOfBytesToMap - сколько байтов фигачить в память, если 0, то все. Возвращает: если успех - адрес начала области памяти, куда всё это поместилось. Если нет - 0 Использование: xor edx,edx
MVF:
push edx ;number bytes to map - 0
push edx ;offs low - 0
push edx ;offs high - 0
push SRW ;access mode
push eax ;handle
call [ebp+_MapViewOfFile]
-------------------- бб
|
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 10:15 |