Print This Post Читаем MBS

Воскресенье, 12. Февраль 2012
Раздел: C/C++, Windows, автор:

В связи с недавним помутнением сознания начал разбираться в некоторых аспектах написания драйверов, а также содержимом WRK. По ходу исследований внезапно потребовалось затронуть MBR, создаваемую Windows.
Как известно, MBR (Master Boot Record) у ОС семейства Windows совпадает по размеру с MBS (Master Boot Sector) и содержится в нём. Однако, в общем смысле, MBR в общем смысле, MBR может занимать часть пространства и за пределами MBS.
Короче, чтобы не утомлять занятых людей, суть исходного кода, приведенного ниже, сводится к тривиальной задаче чтения MBS, вывода нескольких необходимых мне параметров из виндовой MBR (информации о разделах) и подсчета MD5 хэш-суммы от содержимого сектора.
Мини-программа выглядит как-то так:

Программа: скачать
Для людей, которым по каким-то неведомым причинам необходим исходный код: скачать

P.S. Товарищи, зря вы пьете фенотропил, честно, это ведь один из легких способов быстро посадить печень, а здоровье беречь нужно.

Print This Post Классы для работы с HTTP(S) на C++

Пятница, 6. Январь 2012
Раздел: C/C++, Софт, автор:

Написал кроссплатформенную библиотеку (набор классов) для работы с HTTP(S) на C++, используя последние концепции программирования. Пока что это, пожалуй, beta, так как тестировал я ее совсем мало.

Для сборки библиотеки потребуется собранный Boost (желательно версии 1.48 или выше). Если планируется включение функционала для работы с SSL (HTTPS), то потребуется еще собранная библиотека OpenSSL. Также в обязательном порядке требуется поддержка компилятором C++11. Сами заголовочные файлы библиотеки не включают ни заголовочные файлы boost, ни OpenSSL.

Для тех, кто захочет использовать библиотеку для написания чего-то жестоко многопоточного (конечно, спамеров, а что же еще подобное пишут с дохера потоками), учтите, что каждый запрос создает 1 дополнительный фоновый поток, т.е. количество потоков, используемых приложением, увеличивается вдвое. Такая особенность работы связана с тем, что в своем ядре библиотека использует boost::asio::io_service для контроля времени выполнения запроса (словом, внутри библиотеки всё происходит асинхронно).

Краткое описание возможностей класса:
[+] GET/POST/прочие запросы с использованием HTTP/1.0
[+] Поддержка HTTPS
[+] Поддержка multipart-POST запросов с возможностью загрузки произвольного количества файлов любого размера
[+] Автоматический менеджмент Cookies
[+] Автоматические переходы по Location-редиректам
[+] Поддержка скачивания больших файлов
[+] Поддержка HTTP/HTTPS/SOCKS5-прокси с авторизацией и без
[+] Возможность добавлять собственные HTTP-заголовки в запрос
[+] Поддержка автоматической обработки параметров (urlencode)
[+] Возможность задать таймаут на любой запрос
[+] Множество вспомогательных функций (urlencode, base64 и т.п.)

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

Далее я по пунктам приведу краткое описание возможностей библиотеки с примерами.
Читать дальше »

Print This Post Пишем простой cкринсейвер

Воскресенье, 20. Ноябрь 2011
Раздел: C/C++, Windows, автор:

Скринсейвер (или хранитель экрана) - это, по сути, обычная программа, в которой определены несколько специальных процедур для обработки сообщений, посылаемых ОС, при запуске и конфигурировании скринсейвера.
Программы-скринсейверы обычно хранятся в директории %WINDIR%\System32 и обладают расширением .scr. Таким образом, при переходе на страницу выбора заставки, Windows ищет в системной директории все файлы с соответствующим расширением и формирует из них список возможных скринсейверов. Также следует упомянуть несколько важных аспектов написания.

– Скринсейвер должен экспортировать функции ScreenSaverConfigureDialog, ScreenSaverProc.
– Название скринсейвера в окне настройки определяется строковым ресурсом с идентификатором IDS_DESCRIPTION, который должен быть равен 1.
– Идентификатор диалогового окна, которое будет появляться при нажатии клавиши "Параметры", т.е. при попытке настроить скринсейвер, должен быть DLG_SCRNSAVECONFIGURE и равняться числу 2003.
– Программа также должна содержать реализацию функции RegisterDialogClasses.

В принципе, почти всё это описано в MSDN. В нашем скринсейвере будет изображена вращающаяся изометрическая проекция куба. Выглядеть результат будет следующим образом:

Экран выбора скринсейвера


Читать дальше »

Print This Post Стеганография etc

Четверг, 15. Сентябрь 2011
Раздел: C/C++, C#, Софт, Это интересно, автор:

Было нечего делать, решил написать какую-нибудь необычную софтину. В голову пришла идея создания программки, которая могла бы прятать внутри картинок какие-либо данные. Такой подход сокрытия данных называется Стеганографией. Выбрал я самый простой формат картинок - BMP. В изображениях формата BMP (24- или 32-битных, несжатых) цветовые данные хранятся в виде отдельных байтов, поэтому можно модифицировать их младшие биты и без видимых изменений заныкать в картинку некоторый объем информации.

Я набросал консольную программу на C++ и GUI-интерфейс к ней на C#. Вот краткие возможности этого софта:
[+] Возможность прятать в 24- и 32-битные картинки BMP-формата без сжатия данные.
[+] Возможность использовать 1/2/4 младших бита картинки для сохранения информации.
[+] Можно также просто зашифровать файл и сохранить его в виде 24-битной картинки (это уже нельзя назвать стеганографией).
[+] Программа при упаковке файла сохраняет не только его данные, но и имя, а также CRC32, это все используется при распаковке.

Файлы распаковываются в директорию с программой.
Читать дальше »

Print This Post PE-формат. Часть 2 — Немного практики: выводим информацию о секциях исполняемого файла

Вторник, 2. Август 2011
Раздел: C/C++, Windows, Для новичков, автор:

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

Читать дальше »

Print This Post VKontakte NoAd

Среда, 9. Март 2011
Раздел: C#, Софт, Социальные сети, автор:

От нечего делать написал небольшую программу, которая убирает рекламу в ВКонтакте. Алгоритм работы простой, программа проходит по списку страниц, где обычно появляется реклама, и "нажимает" крестик рядом с каждым найденным объявлением. В результате объявление перестает отображаться.

Среднестатистическому аккаунту показывается в ротации ~300-400 объявлений. С минимальной задержкой программа убирает их примерно за 5-10 минут. Конечно, каждый день в ротацию добавляются новые объявления, но в довольно небольшом количестве.

Для работы программы необходим .NET Framework 2.0.
Скачать: NoAd

Print This Post Генератор аккаунтов

Воскресенье, 6. Февраль 2011
Раздел: C/C++, Софт, автор:

Пару дней назад в асю стукнул человек с просьбой написать программку для генерации списков невалидных аккаунтов, составляя их из паролей, логинов и доменов, которые он предоставит. Узнав, что дальнейшая судьба софта его не интересует, я решил выложить исходники в блог и немного прокомментировать их.
Для начала, возможности софта:
[+] Генерация заданного количества [email protected]:password из заданных списков логинов, доменов и паролей.
[+] Возможность задать файл с префиксами и постфиксами для логинов и паролей и указать вероятности их использования в логине и пароле.
[+] Возможность задать разделитель логина и пароля.
[+] Фильтрация списков логинов и паролей по заданным регулярным выражениям.
[+] Возможность переводить логины в нижний регистр.
[+] Возможность включить проверку, чтобы повторные [email protected] не генерировались.

Все это написано на C++ с использованием замечательной бесплатной библиотеки boost.
Читать дальше »

Print This Post Языки программирования для быстрого заработка

Среда, 1. Декабрь 2010
Раздел: $$$, Жизнь, Это интересно, автор:

Эта небольшая статья предназначена в первую очередь для тех людей, которые хотят определиться, какой же язык программирования изучить, чтобы и времени заняло немного, и написать на нем что-то более-менее серьезное можно было, и при этом еще и заработать. Заработок, конечно, подразумевается такой - написание небольших программ для рассылок, всевозможных чекеров-реггеров, словом, автоматизация работы с web. Если зайти на крупные форумы, такие как antichat.ru, zloy.org, xakep.ru и т.д., мы увидим большое количество объявлений "программистов" с предложениями своих услуг. На деле лишь немногие способны написать действительно стоящий продукт, и потребители знают, что заказывать написание софта следует с осторожностью, иначе можно случайно нарваться на вечно глючащее и плохо работающее г*вно. Разумеется, покупатели этого не хотят и в первую очередь требуют от исполнителя некоторое количество положительных отзывов, примеры работ и демо-версии.
Итак, мы плавно переходим к вопросу о том, как можно успешно закрепиться на рынке производства подобного софта. В первую очередь следует изучить годный язык программирования (об этом я расскажу далее). После некоторого освоения языка очень неплохо написать какую-либо несложную программу, демонстрирующую ваши возможности, которая была бы нужна людям. Конечно, нужно стараться все сделать хорошо, иначе потребители бесплатной программой пользоваться не будут, не говоря о том, чтобы в дальнейшем заказать у вас софт. По каким-то причинам многие разработчики делают откровенную лажу, а потом еще возмущаются, что пользователи недовольны и ничего не покупают. Второй вариант - делать демо-версию платного софта. Она должна иметь заранее урезанный функционал, чтобы ее нельзя было взломать, а полная версия должна продаваться независимо. Требование к хорошему качеству программы здесь также предъявляется.
Читать дальше »

Print This Post Патчинг софта, накрытого .NET Reactor’ом, на примере ActualSpamPro

Воскресенье, 7. Ноябрь 2010
Раздел: C#, Социальные сети, автор:

В последнее время всё большее количество авторов “рекламного соц. софта” используют платформу .NET для разработки. Причем для того, чтобы защитить свой софт, они не гнушаются использовать платные протекторы (двойные стандарты в области интеллектуальной собственности так и прут), в том числе довольно известный .NET Reactor. Не знаю, с чем связан частый выбор данного протектора, но особой сложности для анализа внутренностей защищенной программы он не добавляет, так как существует множество вспомогательных инструментов для разбора такого софта, да и ручками всё или почти всё не так уж сложно сделать.
Читать дальше »

Print This Post VIP v2

Воскресенье, 3. Октябрь 2010
Раздел: C/C++, Социальные сети, автор:

И снова здравствуйте. Представляю вам очередной продукт анализа «защищенности» продукта Vkontakte Inviter Pro v2, выполненного на заказ.
Как пользоваться:
1. Качаем этот архив (включает в себя дистрибутив VIP v2 2.9.3.0).
2. Запускаем serv.exe, ждем появления в окне строки «Server started».
3. Запускаем инвайтер (если у вас 64-битная ОС, то сначала прочтите примечание снизу), но не авторизуемся. Смотрим PID процесса инвайтера через диспетчер задач, нужная строка будет выглядеть как-то так:

Если у вас по каким-либо причинам не отображается PID процесса, то в окне диспетчера нажимаем Вид->Выбрать Столбцы и в появившемся окне ставим галочку рядом со строкой "Идентификатор процесса (PID)". Вводим PID в поле в инжекторе и нажимаем "Inject!".
4. Должен появиться MessageBox с сообщением "Attached!".
5. В качестве логина вводите: weehr
6. Пользуйтесь инвайтером бесплатно.
Читать дальше »