Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/23: Рейтинг темы: голосов - 23, средняя оценка - 5.00
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014

Защищаем свое приложение от нечистоплотного заказчика

06.07.2011, 22:22. Показов 5151. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам

Не по теме:

Я никогда не писал программ на заказ, и пока не планирую


Как-то теплым летним вечером Вася видел в кресле, потягивал пиво и хрустел сухарями, смотря по телевизору Петросяна.
И тут видит краем уха, что кто-то написал ему в ICQ.
Ему написал его знакомый, студент Петя, которого уже дважды хотели отчислить за хорошую неуспеваемость.
Этот "звонок" в середине ночи, а именно в 20:36 пробудил в полутрезвом сознании Васи воспоминания, как этот же самый Петя как-то обращался к нему с просьбой написать программу для препода, но получив желаемое сначала отнекивался, что денег пока нет и как только появятся, сразу произойдет оплата, а потом и вовсе сказал, что он все равно завалил экзамены и программа ему мало чем помогла.

"Что за люди, - думал Вася, - наколпачил в тот раз и еще хватает наглости писать и просить помощи!"
Петя был очень вежлив и начал издалека, мол препод нехороший, материал как пища из макдоналдс - не усваивается и как сложно жить в этом несправедливом мире...
Вася под шафе был добрейшей души человек и грубо отказывать не стал, когда тот уже напрямую попросил помочь написать программу.
Помочь... Часто приходилось Васе слышать это слово, но всегда это "Помочь" означало лишь "Сделай за меня".

На том и порешили - Вася пишет программу, Петя платит деньги.
Наутро Вася написал программу, но сделал это немного по-другому.
Он снабдил форму информацией, смертельной для заказчика, ограничил функционал, добавил багов и глюков и ограничил работу приложения по времени.
Скомпилировал, выслал Пете. В этой программе находился архив полноценного приложения, то есть его проект. На форме соблазнительно красовалась кнопка, обещающая дать этот архив.
Program.rar

Сама программа выеденного яйца не стоила - ввести список учеников в ListBox, контролируя длину фамилии и ее уникальность (как будто не могут встречаться люди с одинаковыми фамилиями ) и сортировка списка, а так же сохранение списка в текстовый файл.

Петя получил программу, но не было времени ее смотреть, он поверил Васе и снова сказал, что денег пока нет. Вася злостно посмеялся и написал : "Отдашь, когда сможешь"

Осталась пара дней до судного часа, когда на монитор с открытой программой отразится свет лампочек в классной комнате от очков преподавателя. Петя решил поразбираться в программе.
Его ждал неприятный сюрприз - прога мотала нервы, ездила по монитору, удаляла информацию, идиотично требовала ввести фамилию не менее 20 символов (О_о), в файл сохраняла только 5 фамилий и еще писала в нем же всякие непристойности, которых и на форме хоть отбавляй, особенно Петю обидела шапка формы. Кнопка об исходнике была нажата первой, но Петя был послан вежливо, но убедительно.
В итоге программа грозно ругнулась, вежливо попрощалась и закрылась.
Петя вырвал волосы, но немного, потому что больно.
Больно и сердцу, ведь над ним посмеялись...
Написал в Асю Васе.
Вася сказал, что у него есть Кряк к этой программе, и что за саму программу Петя не должен ничего, пусть пользуется на здоровье, а вот кряк стоит денежку и без этой денежки будет программа кататься по монитору и мотать нервы.
Еще Вася сказал, что сейчас уходит, и если утром у него будет обещанная сумма, маленький кряк полетит на электронный ящик Пети вершить добрые дела. В противном случае полетит Петя из своей шараги.
Петя еще вырвал чуток волос, но уже у кошки, а что она довольная сидит, мурлычет, тут горе, а ей хоть трава не расти.
Понял Петя, что благотворительный фонд дебилам закрыт и придется раскошелиться.
Утром деньги были высланы, Вася выслал Кряк:
Crack.rar

Петя крякнул приложение и было ему счастье.
Сессию правда он все равно завалил, но это уже его проблемы.

====================================
Файлы и исходники представлены лишь в ознакомительных целях, прогеры, будьте бдительны, таких, как Петя - сплошь и рядом.

Исходный код программ:
Program(Code).rar
Crack(Code).rar
12
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.07.2011, 22:22
Ответы с готовыми решениями:

Запустить одно свое приложение через другое свое приложение
Здравствуйте. В программе "программа1" запускаю "программа2" через Process.Start("программа1"); Возникает ошибка, говорит не...

Как подключать приложение к MySQL - свое подключение для каждой формы, или одно на всё приложение?
Вопрос: как правильно организовать подключение к базе MySQL для приложения, которое обращается к разным таблицам одной базы - при каждом...

Не запускается свое приложение
Подскажите пожалуйста, создал приложенице с обоями по данному уроку http://danilov-jee.blogspot.ru/2014/02/android_8.html Писал в...

34
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
07.07.2011, 01:47
что сказать? Вася молодец)
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
07.07.2011, 06:01  [ТС]
В данном примере нет никакой привязки к компьютеру.
Ведь, например, делают ввод ключа и программа работает на целевом компьютере, а на других- уже нет. Привязывают к железу и прочее.
Здесь задачей было - демо-версия, в которой как бы патчится сам экзешник, после чего превращается в полнофункциональное приложение, куда его не унеси, как раз для заказчика-студенты.
Во многих других случая защиты своего софта этот пример - малоподходящий.
А здесь программа никуда и ничего не пишет, ни в реестр, ни в папки, можно дома пробовать, а можно нести преподу
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
07.07.2011, 08:04
Цитата Сообщение от Памирыч Посмотреть сообщение
как будто не могут встречаться люди с одинаковыми фамилиями
В списке все записи всё равно должны быть уникальны. А если это список фамилий, то однофамильцам соответствует одна запись. Если же список людей, а не их фамилий, то в случае совпадения фамилий добавляются инициалы, а если и они совпадают, то пишется полное имя и отчество.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
07.07.2011, 08:05  [ТС]
taras atavin, не думал, что выдуманная мной балалайка будет вполне имеющей право быть О_о
0
12 / 12 / 1
Регистрация: 18.06.2011
Сообщений: 435
07.07.2011, 08:57
а нельзя ли это добро на си шарп перевести??
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
07.07.2011, 09:27  [ТС]
Radzhab, к сожалению, не силен в C#
0
Заблокирован
07.07.2011, 10:39
Памирыч, тема полезная, думаю нужно ее закрепить вверху раздела чтобы не затерялась.
Возможно она будет дополняться другими методами защиты.

Памирыч, я как-то не могу понять принцип
вот пишу я
VB.NET
1
2
3
4
5
6
        Dim B() As Byte = IO.File.ReadAllBytes(Application.ExecutablePath)
        Dim z As String = ""
        For B2 As Byte = 0 To 55
            z += B(B2).ToString() + " "
        Next
        MessageBox.Show(z)
после крека MessageBox выводит другую строку(то есть работает как нужно)
в то время как
VB.NET
1
MessageBox.Show(Application.ExecutablePath)
отличается регистром букв "exe" и все.

Как оно работает и куда пишется?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
07.07.2011, 10:47  [ТС]
Dzhej-Dzhej, программа при запуске считывает все свои байты, и некоторые из них (находящиеся почти в начале файла, ибо в середине их ковырять чревато)
Сверяет их и если хоть один не совпал - работаем в демо-режиме.
Кряк переписывает эти байты (их там штук 5 вроде всего) как надо.
Таким образом экзешник - один и тот же, а поведение разное без сторонних файлов, реестра и привязки вообще к чему-либо
2
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
07.07.2011, 10:54
Цитата Сообщение от Памирыч Посмотреть сообщение
программа при запуске считывает все свои байты, и некоторые из них (находящиеся почти в начале файла, ибо в середине их ковырять чревато)
Сверяет их и если хоть один не совпал - работаем в демо-режиме.
Кряк переписывает эти байты (их там штук 5 вроде всего) как надо.
Таким образом экзешник - один и тот же, а поведение разное без сторонних файлов, реестра и привязки вообще к чему-либо
Круто!
0
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
07.07.2011, 23:25
Посылаем экзешник заказчику, внедрив в него зловреда (хотя нет, даже не зловреда, т.к к вирусам всё таки это не относится), смысл его в том, что поселившись у заказчика на компьютере он, если не ввести в специальное место код, будет постоянно надоедать пользователю при запуске программы(например через каждые 10 сек) такими сообщениями:"Жадина, жадина-солёный огурец...!" или "ах ты ..... а кто платить-то будет? В кидалово решил поиграть?". короче как-то так. Но если код введён (в текстовый файл в каком-нибудь далёком каталоге) злой модуль отключается. Вот так вот.
Способ в принципе не сильно отличается от предложенного Памирычем. Но выгоден тем, что:
1) не надо посылать файл, достаточно просто сообщить ключ, хоть послать по sms, если срочно нужен
2)программа пишется немножко легче, чем у Памирыча
(Ставим таймер, вешаем на него msgbox с нужным сообщением и проверяем введённость ключа. Информацию о ключе желательно хранить в нескольких местах реестра и в шифрованном виде, вот в принципе и весь защитный модуль)
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
07.07.2011, 23:48
Provaider, и такую программу чуть легче взломать через ....(не буду говорить. Почему? Читаем правила форума!)
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
08.07.2011, 06:31  [ТС]
Provaider, принципиально, чтобы програ стала "Валидной" один раз, и на разных машинах.
Твой метод разве не предполагает введение кодов на каждой новой машине?
0
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
08.07.2011, 17:08
да, предполагает, но если ты знаешь код, то ввести его не проблема. Тем более мы вводим его не в программу, а в текстовый файл, который можно будет таскать с собой вместе с программой=)
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
08.07.2011, 21:38  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Еще один вариант, похуже:

Вася создал простенький сайт без ничего, пока курил у монитора.
Петя отслужил в армии, потому что не поступил и сидел в "Моем мире", слушал Надежду Кадышеву онлайн. Долго искал Петя, как же скачать эти песни на компьютер, но так и ничего не придумал. И так, между делом написал Васе, мол, так и так - не можешь ли катануть софтинку для скачивания песен с "мыла". Вася сказал, что есть такая прога у него, это была вторая после Hello, World!

Вася закрыл в асе вкладку с Биллом Гейтсом, спрашивающем как лучше организовать Windows 8 и пояснил Пете, что эта софтина будет стоить денег.

Петя снова обещал расплатиться, ему нужен был лишь экзешник, потому как проку от исходника - нет, ибо Петя так и не выучил, как правильно пишется
VB.NET
1
Dim
Что ж, Вася катает софт, делает в нем функцию обращения к файлу на его сайте.
Программа при старте читает файлик, если в нем написано 0 или ничего, программа закрывается.
Если 1 - работает как ни в чем не бывало
Если 2 - скачивает себя любимую, но без проверки файла, то есть, стопудовую.
Если 3 - ищет на диске все файлы с расширением... Впрочем, это грязно, и не будем о следующих 58796633 цифрах

Петя получил программу и удивился, что Вася опять повелся. Платить чего-то перехотелось
Ночью прога сказала, что Кадышева - неактуально и закрылась. И так до утра
Утром все заработало, а Петя чесал репу и думал - как же так прога знает все...
Просто контент для мессаджбокса хранился у Васи на том же сайте при цифре 0
И Вася высылал свежие новости для быдло.
Петя понял, что так и не скачает новый альбом. Пришлось раскошелиться.

Как здорово, что не пригодились пункты 3 - 58796633
4
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
08.07.2011, 23:32
Памирыч, зачётный вариант. Спасибо за наглядное представление онлайн защиты. Особенно меня прикололо
Цитата Сообщение от Памирыч Посмотреть сообщение
Вася закрыл в асе вкладку с Биллом Гейтсом, спрашивающем как лучше организовать Windows 8
Теперь мы знаем, какая защита будет на Windows 8!!!!!!!!!!!!
0
 Аватар для Qgreg
49 / 49 / 4
Регистрация: 14.06.2011
Сообщений: 92
11.07.2011, 16:12
Лучший ответ Сообщение было отмечено как решение

Решение

Архивы в ресурсы лучше не пихать, вытаскиваются на раз, просто переименуем Program.exe в zip и откроем.
3
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
11.07.2011, 16:17
Qgreg, согласен на 100%
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
11.07.2011, 16:45  [ТС]
Да уж, не знал про эту фишку.
Теперь становится понятной фраза Винрара "Архивы не найдены".
Таки ищет, негодник...

Добавлено через 5 минут
Навскидку 3 варианта, пока дебильные:
  1. Запароливаем архив, при нажатии на кнопку помещаем его в буфер обмена и сообщаем пользователю
  2. Переписываем заголовок архива (байты), при распаковке возвращаем все как было
  3. Ищем другой способ соединить проект в один файл


Добавлено через 19 минут
Обрабатываем архив таким кодом:
VB.NET
1
2
3
4
5
6
7
        Dim OFD As New OpenFileDialog
        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
            FileOpen(1, OFD.FileName, OpenMode.Random, OpenAccess.Default, OpenShare.Default, 1)
            Dim R As Byte = Asc("а")
            FilePut(1, R, 2)
            FileClose(1)
        End If
Больше его не откроют, не спасут даже разные рековери.
Блокнотом тоже бесполезно - кому придет в голову, что вторая буква "а" в заголовке - русская...
При распаковке - обещаем все вернуть на место...
2
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
11.07.2011, 19:12
мне больше нравится идея запаролить архив шифром, который будет зашит в программу, тем же Rijdarev или как он там называется. Вот тогда уж точно архив никто не откроет, а если откроет, то никто не поймёт=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2011, 19:12
Помогаю со студенческими работами здесь

Зачем подписывать свое приложение?
Зачем подписывать свое приложение? Ведь это не Андроид, и апк файлы по рукам не ходят!

Как встроить IE в свое приложение?
Ну собственно вопрос в сабже: Как встроить IE в свое приложение? Так, чтобы в моей програмулине было только окошко эксплорера без всяких...

Не иогу найти свое приложение
Выложил приложение на вф стор (первое свое). Мне дали на него ссылку, по которой я могу его найти, но через поиск оно не находится. В чем...

Как защитить свое приложение (Активация)
Друзья, возник такой вопрос. Хочу свою программу сделать "от части" платной. Чтобы, например, при нажатии на кнопку программа не...

Управление программой через свое приложение
Идея такая, открыть программу (например браузер) в окне своей программы (типа как iframe в html) и управлять ею кликая программно по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru