face

Вопросы, которые бесят меня в программистских эхах

Эх, ну когда же у нас в стране разовьется нормальный рынок программного обеспечения и програмистского труда?.. Вот что меня бесит в фидошных эхах типа RU.CPP или SU.WIN32.PROG, так это не столько глупые вопросы чайников, сколько вопросы тех программистов, кому приходится выполнять идиотские требования заказчиков на нашем первобытном рынке.

Итак, топ-лист идиотских требований.

1. Чтобы программу не было видно в списке задач Windows 9x.
2. Чтобы программу нельзя было убить менеджером задач.
3. Чтобы база данных хранилась в зашифрованном виде (при этом используются такие методы шифрования, как xor с константой -- дальше можно не перечислять).
4. Защитить файловую систему от удаления/модификации файлов, при этом отказываясь поставить нормальную операционку, в которой этот вопрос решен.
5. Запретить каждому встречному логиниться на машину, опять-таки не отказываясь от старушки Windows 95.
6. Чтобы работало под Windows 95 на 486.
7. Разного рода защиты от копирования, по техническому уровню место которым в песочнице.
8. Чтобы вся программа поставлялась в виде одного exe-файла, никаких там dll-ок.
9. Показать пользователю какой-нибудь документ, но не давать сохранить или напечатать его.
10. Запретить пользователю сдирать содержимое с экрана клавишами Alt-PrintScreen.
А что идиотского? В пунктах 3 и 7 не требования дурные, а программист схалтурил при реализации. Остальное в ряде случаев вполне разумно: один из продуктов нашей лавки помимо прочего реализует 4 и 5, на 9 вообще построен бизнес с e-books, и ведь дышит, хоть и хреново.
Все эти требования есть результат повального пиратства в России. Которое, в свою очередь, есть результат бедности населения. Всего 7% населения России наскребли деньги на какой-никакой компьютер, и им просто немыслимо выложить еще столько же денег за лицензионный софт.
Ну да, конечно, все от бедности. Особенно те e-books, о которых я упоминал.

Говорю же: существуют задачи, при решении которых эти требования являются необходимыми. Да, требовать чтобы какая-нибудь бухгалтерская база данных была не видна в task manager, довольно глупо. Ну так надо уточнять, что требования эти являются идиотскими при разработке АСУ прачечной (впрочем, пункт 6 туда вполне вписывается все равно).

В моей области, например, половина этих требований обязательны.
Назови такую программу, для которой необходимо, чтобы ее не было видно в task manager (кроме вирусов, снифферов и прочей подобной дряни).
Это для вас, знаете ли, снифферы "дрянь". А когда их разрабатывают серьезные дяди, то они называются "средства скрытого наблюдения".

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

И все это делается на почве повальной безграмотности заказчиков, которому подавай, чтобы база данных была зашифрована, а "зашифрована" в его понимании -- это чтобы в ней не было видно текста клавишей F3. Защита от секретарш, короче говоря. Такие вот "меры" защиты от чего бы то ни было вызывают одно раздражение, поскольку преодолеть их, как правило, способен школьник в перерыве между уроками.

А потом другой горе-заказчик наймет другого "профессионального студента" (c), чтобы вскрыть игрушечную защиту первого и незаконно юзать или продавать то, что ею защищалось.

Такой вот рынок.
То, что в качестве шифрования используется XOR с константой -- это не дурацкое требование заказчика, а дурацкая реализация программиста и виновен именно он, а не заказчик. Так что этот пункт надо перенести в список "самые дурацкие решения программистов".

Впрочем, если модель атаки выглядит как "в базу заглядывает побаивающаяся компьютера, но любопытная секретарша", то XOR вполне адекватное решение.
Да заказчик, заказчик дурак, если он не интересуется классом защищенности продукта, который ему предлагают, и если он нанимает за копейки студента, чтобы тот "сделал ему защиту для файлов".

А защита от секретарш тоже реализуется штатными методами -- правильной настройкой прав доступа. Причем это понадежнее будет, чем xor.
Кстати, "самые дурацие решения программистов" -- это мысль. Надо будет написать такой топ-лист.
(Anonymous)
Первое делается настолько элементарно (RegisterServiceProcess), что вряд ли ему место в этом списке. Или ты его просто невнятно сформулировал?

andrews(at)ktm.kiev.ua
Отнюдь. Так, как ты сказал, это делается только в Windows 9x, а не в NT/2000/XP.

Кроме того, я ведь не по сложности реализации сюда поместил, а по степени идиотизма требований и по частоте, с которой спрашивают о том, как такое делается.
(Anonymous)
Значит точно невнятно написан пункт :). Я там четко вижу надпись Windows 9x.

Насчет идиотизма - ну, не буду спорить. Такое можно хотеть только при написании троянов/вирусов, а за них платят редко.

andrews(at)ktm.kiev.ua
(Anonymous)
Кстати, только что совершенно случайно наткнулся:
http://www.mvps.org/vcfaq/sdk/index.htm
Список у них немного другой, но...
Обрати внимание на вопрос №11.

Как видишь, эта проблема шире чем ты думал :)

andrews(at)ktm.kiev.ua
Нет, это немного не то. Там у них FAQ, и они просто собрали там самые популярные вопросы без анализа причин, почему они задаются. И тем не менее, заметь, что в их списке всего один пункт пересекается с моим топ-листом. В нашей стране ситуация несколько другая, это видно по вопросам, задаваемым в SU.WIN32.PROG.
А главное - всё решается при помощи сервера приложений и тонких клиентов.
Re: Reply to your post...
Да и многими другими способами оно решается. Главное в данном случае то,
что в условиях цивилизованного рынка перечисленное попросту не нужно.