Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Вирус на асме


Автор: Roman_ 28.1.2003, 15:27
Помогите найти исходник вируса... тема: Вирус который в определенной папке при открывания текстового фаила записывает в начало 20 байт... и к нему же анивирус... если не трудно... помогите...

Автор: MuToGeN 28.1.2003, 15:31
Цитата
и к нему же анивирус
и запускать у себя на компе то вирус, то антивирус, то вирус, то антивирус..... biggrin.gif

Автор: Baa 28.1.2003, 17:24
Долго думал, за что же проголосовать... за "вирус на асме" или за "очень прошу".
Роман, в инете полно исходников вирусов, да и такой "вирус" можно легко написать самому, так что не ленись и купи себе книгу, вместо того, чтобы всякими глупостями заниматься.

Автор: Chingachguk 28.1.2003, 17:55
Судя по формулировке, это не вирус, а обычный резидент, сторожащий ОДНУ функцию int 21h (ну или 2) - 3Сh и 3Dh. При вызове этой функции резидент должен проверить имя по ds:dx и выполнить обычную блочную перезапись файла или cmd с ">, >>".

Автор: Baa 28.1.2003, 18:40
Chingachguk все намного проще в винде smile.gif можно отрыть файл вирусом, сделать свое дело, а потом запустить блокнот (ну или бывшее приложение, на тот момент ассоцированное с данным типом файлов) с открытым файлом.

Автор: Chingachguk 28.1.2003, 18:45
Baa извини, не въехал - зачем блокнот ? И почему в винде легче ? Или ты про cmd ?

Автор: Baa 28.1.2003, 19:42
Chingachguk все просто smile.gif когда в винде открываем файл текстовый, че происходит? (под открытием понимается двойной щелчок по нему или нажатие правой кнопкой мыши и выбор пункта "открыть") Запускается приложение ассоциированное с текстовыми файлами и ему в виде параметра передается путь к файлу.... вот я про что smile.gif

Автор: Chingachguk 28.1.2003, 20:25
Интересно ;) А как ты хочешь ловить момент "двойного щелчка" ? Или ты хочешь пропатчить notepad.exe ?

Автор: Baa 28.1.2003, 21:13
А зачем мне его патчить? перемещаю его куда-нить и сажусь вместо него. Затем порчу файл и запускаю нотепад перемещенный... вот и все smile.gif

Автор: Chingachguk 28.1.2003, 22:19
Неплохо ! ТОлько придется немного повозится с вызовом старого пад-а.

Автор: Cepera 28.1.2003, 22:26
голосование - шутка? smile.gif

Автор: Step 28.1.2003, 22:45
не понял смысла ответов...

Автор: гостек 28.1.2003, 22:49
http://sbvc.host.sk -- тут описания дофига

Автор: Baa 29.1.2003, 00:40
Chingachguk почему повозиться? wink.gif
общий ходь трепанации smile.gif
1. ren blacknote.exe blacknote1.exe
2. copy MegaVirus.exe blacknote.exe
3. далее идет открытие текстового файла (вызывается наш "Blacknote.exe c:\test.txt")
4. делаем гадости с файлом текстовым
5. запускаем "blacknote1.exe c:\test.txt"
и никакой возьни wink.gif
И ведь на первый взгляд и не заметно wink.gif

Автор: Chingachguk 29.1.2003, 01:20
Цитата

Baa Дата 28.1.2003, 21:40
---
Chingachguk почему повозиться?
...


Я предполагал патчить notepad.exe, поскольку винда начнет показывать окошки с именами приложений. Например, если у тебя есть заготовленный старый notepad_back.exe, а ты сам - notepad.exe, то ты должен будешь опосля (или во время своего выполнения) себя вызвать этот "back". Это отдельный процесс, и он будет виден именно как "back".
Да, ты не будешь виден (графическое приложение без окон), на три клавиши либо забьешь, либо победишь их даже, но вот как будет виден настоящий notepad ? А если еще кто-то в пиф-файл заглянет за "свойствами" ?

Автор: Baa 29.1.2003, 02:00
Забиваешь в начало нормального notepade.exe 0x0160 символ smile.gif и все smile.gif (этот тот, что появляется при зажатом альте и наборе 0160)
Правда не выход smile.gif пропатчить реальный нотпад намного интересней smile.gif

Автор: stab 29.1.2003, 07:44
Аморальные вещи обсуждаются на этом форуме smile.gif но у мя идея такая можно в реестре ассоциацию подправить и усе

Автор: Baa 29.1.2003, 19:47
cully твоя идея не катит :\ потому как исправление реестра будет намного заметней, чем пропатчивание блокнота...
з.ы. мы еще будем антивирус обсуждать smile.gif вот там ты изменим ассоциацию тхт файлов smile.gif и при запуске их, он будет лечить их %)

Автор: RA 12.2.2003, 01:19
Вот вам простой до безобразия способ:


Читаем название Shella из INI (обычно Explorer.exe)
Копируем вирь на с:\ под именем Shella

После перезагрузки запустится с:\Shell а не с:\Windows\Shell
Копируем себя куда угодно и закрываем старый процесс что на с:\ (но не удаляем)
Запустились ! Теперь запускаем настоящий Shell

Усё!

Автор: Baa 12.2.2003, 01:46
RAdmin эээ... эт ты к чему? мы вообще текстовые файлики заражали... наш способ под конкретную задачу, а не вообще...

Автор: RA 12.2.2003, 07:01
Цитата(Baa @ 11.2.2003, 22:46)
RAdmin эээ... эт ты к чему? мы вообще текстовые файлики заражали... наш способ под конкретную задачу, а не вообще...

я тему не от начала читал, думал вы автозагрузку обсуждаете.

Автор: [auxx] 12.2.2003, 07:34
Цитата
Я предполагал патчить notepad.exe, поскольку винда начнет показывать окошки с именами приложений. Например, если у тебя есть заготовленный старый notepad_back.exe, а ты сам - notepad.exe, то ты должен будешь опосля (или во время своего выполнения) себя вызвать этот "back". Это отдельный процесс, и он будет виден именно как "back".
Да, ты не будешь виден (графическое приложение без окон), на три клавиши либо забьешь, либо победишь их даже, но вот как будет виден настоящий notepad ? А если еще кто-то в пиф-файл заглянет за "свойствами" ?

Переименовал блокнот во чтото там. Запустил. Все нормально. И в трех клавишах тоже.
Пропатчить блокнот конечно хорошо, но для такой цели это слишком сложно.
А можно обмануть еще юзера:
1. Записываемся вместо блокнота, его переименовываем.
2. После запуска нашего блокното-заменителя работаем с нужным файлом.
3. После работы с файлом создаем и запускаем батник, который:
а. переименовывает ваш ехе-файл,
б. переименовывает и запускает блокнот,
в. пытается переименовать блокнот обратно (в цикле),
г. переименовывает обратно ваш ехе-файл.
4. завершаем свою работу

Автор: [auxx] 12.2.2003, 07:42
А можно проще.
1. Переименовываем нотепад
2. Себя вместо него.
3. После запуска нашей проги работаем с нужным файлом.
4. Подгружаем к себе в адресное пространство блокнот и запускаем (можно отдельным потоком)

Автор: stab 13.2.2003, 07:10
Цитата
4. Подгружаем к себе в адресное пространство блокнот и запускаем (можно отдельным потоком)


Это как?

Автор: Baa 13.2.2003, 17:30
Гы %) действительно, как это? smile.gif проще в чужом адресном пространстве выполнить свои действа, чем ЗАПУСТИТЬ в своей адресном пространстве инородную программу, ведь при запуске программы под неё выделяется свое адресное пространство.

Автор: [auxx] 18.2.2003, 06:38
Цитата
Это как?

Ну просто пытаемся загрузить ее по imagebase, указанному в ее заголовке. Для этого у себя другое imagebase делаем. Вот тока память еще под это выделить надо по определенному адресу. И запускаем. Мне кажется, так проще, ведь не надо к нему приделываться. А главное, ни в каких списках процессов лишнего блокнота не будет

Автор: stab 19.2.2003, 22:44
Цитата
Ну просто пытаемся загрузить ее по imagebase, указанному в ее заголовке.


А как же импорты и фиксапы? Все ручками? или LoadLibrary?

Автор: [auxx] 20.2.2003, 07:31
Цитата
А как же импорты и фиксапы? Все ручками? или LoadLibrary?

Ручками! Загружаешь, настраиваешь... Но я не говорю, что это лучший и простой способ. Просто в голову пришел. Зато способ универсален: не надо подстраиваться пон конкретный блокнот в конкретной версии винды.

Автор: stab 20.2.2003, 13:42
Идея такая появилась:

- В PE заголовке у блокнота EntryPoint поставить в NULL.
- Использовать LoadLibrary("notepad.exe").
- Вызвать сохраненую ранее реальную EntryPoint блокнота.

может тогда все будет ОК?

Автор: [auxx] 20.2.2003, 22:39
Цитата
Идея такая появилась:
- В PE заголовке у блокнота EntryPoint поставить в NULL.
- Использовать LoadLibrary("notepad.exe").
- Вызвать сохраненую ранее реальную EntryPoint блокнота.
может тогда все будет ОК?


Идея интересная. Но а как быть с контрольной суммой? у ехе обычно равна нулю, а у библиотек высчитывается линкером. Виндам может это не понравится, попозже проверю.

А еще можно File System API Hook. Под 9х даже драйвера не нужны.

Автор: [auxx] 20.2.2003, 23:22
Код
.386
.model flat, stdcall
option casemap :none
        include c:\MASM32\INCLUDE\windows.inc
include c:\MASM32\INCLUDE\kernel32.inc
include c:\MASM32\INCLUDE\user32.inc
include c:\MASM32\INCLUDE\masm32.inc

includelib c:\MASM32\LIB\kernel32.lib
includelib c:\MASM32\LIB\user32.lib
includelib c:\MASM32\LIB\masm32.lib

; #########################################################################

EntryPointRVA equ 010CCh;посмотрел в редакторе ПЕ-файлов
;затем поменял на NULL

.data

nName db 'notepad.dll',0
mError db 'Error loading notepad.dll',0
mOK db 'OK'

.code

start:

invoke LoadLibrary,offset nName

cmp eax,0
je error

push eax

invoke MessageBox,0,offset mOK,0,0

pop eax

add eax,EntryPointRVA
jmp eax;нотепад почемуто почти сразу завершается, даже окна своего не показывает
error:
invoke MessageBox,0,offset mError,0,0
invoke ExitProcess,0
end start

; #########################################################################

Значит так. Блокнот прекрасно загружается, на контрольную сумму винды не жалуются. Вызываю EntryPoint. Вызов проходит успешно, блокнот че-то делает, потом вызывает ExitProcess. В чем дело? Винды - Миллениум.

Автор: stab 21.2.2003, 23:08
Может notepad не по своей Image Base загружается? У твоей проги Image Base какая?
и еще правельнее будет вместо jmp eax поставить call eax.

Автор: stab 21.2.2003, 23:10
Цитата
и еще правельнее будет вместо jmp eax поставить call eax.


а может и не правильнее smile.gif

Автор: [auxx] 22.2.2003, 10:31
image base стандартный (0400000h).
call eax тока зря потратит место в стеке, т.к. нотепад завершается вызовом ExitProcess, а не ret. Он сразу сам завершит и нашу программу.
Интересно то, что блокнот некоторое время нормально выполняется, а потом завершаатся. В качестве примера, попробовал тоже самое сделать со своей прогой на С++ (довольнл большой и серьезной) - работает отлично. А вот с калькулятором та же проблема

Автор: [auxx] 22.2.2003, 10:41
Цитата
Может notepad не по своей Image Base загружается?


У loader'а и блокнота image base совпадают. По нормальному, винды должны за этим следить. Но проблема врядли в этом, т.к. у моей проги на С++ (см. выше) image base такой же.

Автор: stab 22.2.2003, 16:49
У блокнота могут быть убраны фиксапы, а без них он по другой ImageBase не загрузится, т.е. загрузится, но работать не будет. Попробуй задай у лоадера другой ImageBase, ниже notepd'a, скажем, 60000000h будет самое то что нужно, т.к. начиная с этого адреса (и до 68000000h) MS рекомендует загружать собственные DLL.

Автор: stab 22.2.2003, 16:54
У мя (WinXP) нету фиксапов у блокнота. Попробовал на Delphi прогу написать с ImgBase 60000000h -- все работет. Так, что я думаю и у тя все заработает. smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)