Здравствуйте Хитрик Денис, Вы писали:
ХД>Переношу в Прочее из Философии программирования. ХД>Если начнётся неконструктивный флейм, топик будет удалён. Если будет что интересное, вернём его в Философию.
Накаркал!
ХД>Право называться "философским топиком" надо заработать!
Здравствуйте AndrewVK, Вы писали:
AVK>Может я чего не понимаю — но кто сказал что попытка выполнить код в странице, в которой находяться данные контрола не приведет к исключению?
Рихтер пишет, что на x86 и Alpha аттрибут PAGE_EXECUTE не поддерживается. ... Перечисленные процессоры воспринимают запрос на чтение как на исполнение...
Здравствуйте Алекс, Вы писали:
А>Мля, ну говорят же Windows — MUST DIE. Почему Linux нельзя? Или я забыл рожицу поставить?
А>В принципе ожидал подобную реакцию, но что столько нулей и сразу! Е-мое! Похоже на цензуру!
А ты попробуй тоже про Windows сказать. А потом посчитаем нули и вичислим коэфицент предвзятости.
А>Я ведь нигого не оскорбил, выражался прилично, кратко, словом не нарушил ни одного правила. И что? Цензура!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте AndrewVK, Вы писали:
А>>В принципе ожидал подобную реакцию, но что столько нулей и сразу! Е-мое! Похоже на цензуру!
AVK>Ты еще попробуй сказать "С++ — маздай"
Да! Дельный совет. Но учти в этом форуме это будет офтопик. Так что пиши в С++. И не цитируй ничего, а то в оверквотинге обвинят.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте Алекс, Вы писали:
А>>И чего? Ты будешь сканировать адресное пространство процесса пока не найдешь свою сигнатуру? И сколько ты это будешь делать?
A>Нет она вполне возможно будет всегда выкладываться по одному и тому же адресу, A>а его можно на своей машине узнать дизассемблером.
Еще про WM_TIMER.
Попробовал я вызвать
SendMessage(hWnd,WM_TIMER,0,(LPARAM)timerproc);
Нифига не вышло. Пишет The handle is invalid. Видимо, проверяется внутренний список установленных таймеров, которые имеют процедуру обработки, (а может быть это асоциативный массив?) и если соответствие не найдено — юк!
И вообще странно в MSDN написано If you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER.
Однако из опыта знаю, что никакая WinProc не вызывается. Вместо нее вызывается TimerProc. Это подтверждает следующая фраза из того же MSDN (из документации на DispatchMessage()) If the lpmsg parameter points to a WM_TIMER message and the lParam parameter of the WM_TIMER message is not NULL, lParam points to a function that is called instead of the window procedure.
А событие это генерит GetMessage(). При чем только в том случае, если в очереди потока установлен флаг QS_TIMER (т.е. имеется необходимость обработать сообщения от таймера). Установить это флаг вручную документированным способом нельзя. И даже если удастся, нет гарантии того, что DispatchMessage() не поведет себя также как и DefWindowProc(), т.е. не вернет код ошибки 6.
Здравствуйте, Anatolix, Вы писали:
A>(Источник bugtrack.ru)
A> Итак, схема взлома. Находим подходящий сервис, исполняющийся из-под A> аккаунта, с бОльшими правами, чем наш текущий, который будет способен A> принимать оконные сообщения, что мы ему собираемся посылать (грубо A> говоря, способный открывать окна . Находим в окне, открытом сервисом, A> подходящий элемент управления (edit box) и вставляем туда побольше A> символов, включающих в том числе внедряемый код (между делом для этого, A> возможно, придется снять ограничение на количество символов, которые A> можно вставить в текстовое поле, но и это можно сделать, послав сообщение, A> так что это непринципиально). В итоге все это хозяйство оказывается где-то в A> недрах адресного пространства данного приложения. Где именно — можно A> определить экспериментальным путем, вставив в текст некую сигнатуру и A> найдя ее с помощью отладчика.
А без отладчика? Слабо? На словах все очень просто...
A> Далее внедренный код надо бы как-то A> выполнить. На помощь приходит еще одно сообщение, WM_TIMER, в качестве A> одного из параметров которого можно указать адрес callback-функции. Стало A> быть, посылаем WM_TIMER, передав адрес, находящийся внутри блока наших A> засланных команд, после чего наш засланный код выполняется с правами того A> аккаунта, из-под которого был запущен сервис, если повезет — с системными.
С чего это он будет выполняться? Подробнее можно? Таймер будет думать, что его функция в адресном пространстве твоего процесса. К тому же код твоец пресловутой функции будет находиться в сегменте данных, а не кода, забыл? Хотя и возможно сделать программу с кодом в секции данных (сам писал такие на асме), но в данном случае не уверен, что сработает, все же это данные системного контрола...
А серьезно — этот баг использовался?
Здравствуйте, Алекс, Вы писали:
А>Здравствуйте RonWilson, Вы писали:
RW>>Слушайте, кто может что-нибудь сказать серьезного о программировании под Linux? Народ чего-то шевелится всякими там Kylix-ами и GNU C — а толку мало..... Надо ли все это????
А>Linux — MUST DIE!
Батенька.... умерьте свое либидо..... данные высказывания для мальчиков только познакомившихся с компутером....
Здравствуйте, Adekamer, Вы писали:
А>>Linux — MUST DIE! A>Батенька.... умерьте свое либидо..... данные высказывания для мальчиков только познакомившихся с компутером....
Добро пожаловать в наш форум! Это ведь твой первый постинг.
Как тебе понравится такая ситуация: в твою большую компанию, в которой ты всех знаешь, приходит неизвестный человек и первая фраза, которой он бросается, — это "умерьте свое либидо..."?
Я бы с таким человеком разговаривать не стал. Постарайся быть тактичнее и конструктивнее. В Правилах есть пункт о неуважении других участников форума и о манерах поведения вообще.
Что насчёт Алекса, то ты ошибся на его счёт. Он давно на форуме, многим помогает решать проблемы. Думаю, что своим постингом он просто сознательно спровоцировал народ. За что и получил тучу нулей в свой адрес
Здравствуйте Adekamer, Вы писали:
А>>Linux — MUST DIE!
A>Батенька.... умерьте свое либидо..... данные высказывания для мальчиков только познакомившихся с компутером....
Linux Must Die
Windows Must Die
Программирование масдай
Компьютеры масдай
Телевизор масдай и сакс
Асфальт масдай
Куплю водки и уеду на природу бухать, ибо это самый что ни на есть мастлив и рулез форева!
Здравствуйте, AndrewVK, Вы писали:
AVK>Linux Must Die AVK>Windows Must Die AVK>Программирование масдай AVK>Компьютеры масдай AVK>Телевизор масдай и сакс AVK>Асфальт масдай AVK>Куплю водки и уеду на природу бухать, ибо это самый что ни на есть мастлив и рулез форева! AVK>
Здравствуйте, AndrewVK, Вы писали:
AVK>Linux Must Die AVK>Windows Must Die AVK>Программирование масдай AVK>Компьютеры масдай AVK>Телевизор масдай и сакс AVK>Асфальт масдай
AVK>Куплю водки и уеду на природу бухать, ибо это самый что ни на есть мастлив и рулез форева!
Антил скорый маздай because of because of because of one man! и хренового самогона.
Здравствуйте zeus, Вы писали:
AVK>>Куплю водки и уеду на природу бухать, ибо это самый что ни на есть мастлив и рулез форева! AVK>>
Z>От водки печень MUST DIE.
-- Мы — нигилисты-поисты-маздаисты! Все вокруг маздай!
-- Винда маздай?
-- Маздай.
-- А Линукс?
-- Линукс маздай.
-- И девки маздай?
-- Нет, девки не маздай.
-- Но ведь неувязочка выходит?
-- А неувязочка маздай!
Здравствуйте, AndrewVK, Вы писали:
AVK>>>Куплю водки и уеду на природу бухать, ибо это самый что ни на есть мастлив и рулез форева! AVK>>>
Z>>От водки печень MUST DIE.
AVK>MAY DIE
MIGHT DIE
AVK>Отсутствие тормозов масдай.
При отсутствии тормозов will be dead.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, RonWilson, Вы писали:
RW>Слушайте, кто может что-нибудь сказать серьезного о программировании под Linux? Народ чего-то шевелится всякими там Kylix-ами и GNU C — а толку мало..... Надо ли все это????
Извиняюсь за поздний ответ, но надеюсь он Вам поможет
Итак ответ:
НАДО!!!
Но нужно, как и в любой отрасли программирования, найти свою нишу. В данный момент, с моей точки зрения наиболее перспективной является разработка shareware программ и баз данных. И не надо думать, что *nix — это только open source, ничего подобного. Shareware выгодно из-за того, что пользователи *nix не избалованны всяческими органайзерами, часиками и прочими полезняшками, и самое главное — они согласны за это платить (и платят)! Что бы не говорили о том, что *nix — это не домашняя система, она все-таки стоит у очень многих. Причем сейчас просматривается весьма интересная тенденция — многие конторы начинают постепенно переходить именно на linux, из-за его бесплатности, т.к. далеко не все хотят покупать Windows, MS офис, кучу приложений, необходимых в работе и прочее, а под Linux большинство подобных приложений все-таки бесплатно. Но вот этот переход как раз и дает второй пункт (базы данных) — им же понабодятся всё те же бухгалтерсие базы данных, генераторы отчетов и тому подобная радость.
Что касается средств разработки, то не надо относиться к ним с пренебрежением. GCC — имхо один из лучших компиляторов С, ничем не уступающий VC. Для любителей Pascal есть FreePascal — полная совместимость синтаксиса с TP 7.0, поддерживаются некоторые конструкции delphi, хотя тут ничего определенного сказать не могу, пишу все-таки на си. Среды разработки тоже есть (мне, например оч нравится KDevelop ). SQL серверов на порядок больше, чем под win, и они достаточно удобны, а MySQL работает даже пошустрее MS SQL 2000.
Web-приложения (имхо) по *nix создавать даже удобнее: PHP, Perl, Java, Python + одна из систем автоматизации разработки на выбор MidGard, BLADE или Zope. С последней не работал, а из первых двух, имхо вторая удобней.
Если так уж нужна .NET, то сейчас уже осуществляется её перенос на FreeBSD, ну а с неё уже не очень сложно спортировать и на Linux. (Кстати, команда Red Hat этим уже, кажется, занимается).
Так что поле для деятельности есть и, что приятно, работу найти довольно просто (по крайней мере в Питере не сложнее чем программисту под Win)
PS Ну и шпилька напоследок: интерфейс под иксы программировать много проше и приятней, чем под GUI, хотя это наверно из-за того, что я их лучше знаю