IPB
ЛогинПароль:

> Пишем вирус..., Наконец написал.
сообщение
Сообщение #1


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Почти каждый, кто изучает язык ассемблера, рано или поздно пишет вирус, некоторые люди пишут вирус, когда заканчивают изучать какой-нибудь язык программирования... Прежде чем читать то, что я буду писать ниже и понимать хоть что-нибудь, вы должны:
а) знать основные команды ассемблера
б) уметь пользоватся АПИ-функциями
в) взять где-нибудь (можно и у меня) TASM32 (можно и другой, но каждый компилятор имеет свои особенности).
г) отладчик (если собираетесь собственноручно создать зверька, то без отладки довольно трудно найти ошибки)
д) прогу, которая прикреплена (на неё вопит касперский, но это не вирус!!!! )
е) иметь здоровую голову (если вы хотите испортить все компы на Земле, то ваше место в больнице, а не здесь)
ё) ПОМНИТЬ, ЧТО ЭТОТ МАТЕРИАЛ ПРЕДСТАВЛЕН ТОЛЬКО В ЦЕЛЯХ ОБУЧЕНИЯ, И ЗА ПОСЛЕДСТВИЯ Я НИКАКОЙ ОТВЕТСТВЕННОСТИ НЕ НЕСУ
Вроде всё.

Теперь план обучения:
1) формат заголовка файла РЕ
2) разбор основных полей заголовка РЕ
3) методика заражения
4) дельта-смещение.
5) поиск АПИ
6) разбор используемых АПИ
7) пишем код
8) Reserved smile.gif


Прикрепленные файлы
Прикрепленный файл  Pewrsec.exe ( 8.62 килобайт ) Кол-во скачиваний: 3


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


7.1 Пишем код
Для разминки напишем прогу, которая определяет адрес Кернела на той системе, где она запущена.

includelib import32.lib
extrn ExitProcess: near
extrn MessageBoxA: near
;функции для работы проги

.386
.model flat
.data

; надпись в заголовке сообщения
szTitle db 'kernel base search prog', 0

; начало сообщения
szMessage db 'ADDR OF KERNEL BASE ON YOUR COMPUTER IS: '

;тут будет лежать символьное представление адреса кернела
k_addr_str dd 0, 0

; после адреса переходим на новую строку и печатаем ещё строку
db 0ah, 0dh,'by FreeMan ©. Kiev 2004', 0

.code

start:
call delta
delta:
; так как это немного переделанный кусок вируса, поиск дельты остался
sub dword ptr [esp], offset delta

R_SEH:
xor edx, edx
mov eax, fs:[edx]
dec edx

search32:
cmp [eax], edx
je check32
mov eax, [eax]
jmp search32

check32:
mov eax, [eax+4]
xor ax, ax
searchMZ:
cmp word ptr [eax], 5A4Dh
je IsPe
sub eax, 10000h
jmp searchMZ
IsPe:
mov edx, [eax+3ch]
cmp [eax+edx], 4550h
jne Exit
; этот кусок я объяснил

write:
mov ecx, 8 ; начинаем переводить адрес в символы

; пихаем в esi адрес места, куда будем пихать символы
mov esi, offset k_addr_str
add esi, 7 ; с конца это делать удобней
loops:
mov ebx, eax ; сохраняем eax, мы будем его использовать
and al, 0fh ; обнуляем старший байт
cmp al, 0ah ; сравниваем с 10
jl mensh
add al, 7h ; если больше, то имеем дело с символом
mensh:
add al, 30h
pechat:
mov byte ptr [esi], al ; суём al и строку (это уже печатный символ)
dec esi ; указатель на следующую позицию
mov eax, ebx ; достаём сохранённый еах
shr eax, 4 ; убираем полбайта, которые обработали
loop loops ; повторяем
xor eax, eax ; обнулить еах для последующего использования в функции

push 30h
push offset szTitle
push offset szMessage
push eax
call MessageBoxA
; вызов функции вывода сообщения

Exit:
push 0
call ExitProcess
; выход из проги
end start


Можете компилировать и юзать.
для компиляции:
Tasm32.exe /m3 /ml /zi iasdf.asm , , ;
Tlink32.exe /Tpe /aa /v iasdf, iasdf, ,import32.lib
iasdf - имя проги
юзать: запускать файл, в нашем случае iasdf.ехе.
Если заметите ошибки в коде (или материале) - пишите, стучите, звоните... Просто писал перевод в символы без проверки (нет компилятора), используя не самый лучший алгоритм (просто он простой для понимания:))

Поюзав эту прогу на нескольких компах с разными операционками вы увидите, что база кернела вполне зафиксированное значение для каждой операционки.


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
FreeMan   Пишем вирус...   4.01.2005 14:23
FreeMan   1. Формат заголовка РЕ Заголовок - это структура,…   4.01.2005 14:25
FreeMan   2. Разбор основных полей РЕ заголовка. Итак, вы п…   4.01.2005 14:31
FreeMan   3. Методика заражения Пишу в виде алгоритма, хотя…   4.01.2005 14:33
FreeMan   4. Дельта смещение. При линковке программы происхо…   5.01.2005 14:17
FreeMan   3.1 В поисках дельты. Может вам показалось, что по…   5.01.2005 14:17
FreeMan   5) Поиск АПИ. Когда Винда загружает файл, она в ад…   5.01.2005 14:20
FreeMan   [b]5.1. Поиск адреса кернела Кернел висит в памяти…   5.01.2005 15:38
FreeMan   [b]5.2 Поиск АПИ... Теперь адрес кернела мы знаем…   5.01.2005 17:07
FreeMan   [b]6. Pазбор используемых АПИ Разбор сводится к ко…   7.01.2005 16:51
FreeMan   FindFirstFileA - ищет файл в текущей директории …   7.01.2005 17:13
FreeMan   FindNextFileA - ищет следующий файл hFindFile -…   7.01.2005 17:30
FreeMan   MapViewOfFile - помещает промэппированный файл в п…   7.01.2005 17:45
FreeMan   UnmapViewOfFile - полная противоположность MapView…   12.01.2005 21:37
FreeMan   [b]7. Пишем код В исполняемый файл добавляем код …   12.01.2005 21:38
FreeMan   То есть, для успешного заражения надо пофиксить ещ…   12.01.2005 21:41
FreeMan   [b]7.1 Пишем код Для разминки напишем прогу, котор…   12.01.2005 21:42
FreeMan   Кстати, вышел номер 29А... http://www.vx.netlux.or…   12.01.2005 22:03
FreeMan   Теперь пришло время писать код. includelib import…   14.01.2005 20:51
FreeMan   ls_found: ; сюда попадём после того, как найдена …   14.01.2005 20:52
Тоха   ЭТО КРУТО! Спасибо большое.   26.02.2009 17:09


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 18:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name