Print This Post Дорабатываем DLL для LastFM

Понедельник, 3. Октябрь 2011
Раздел: Assembler, C/C++, Windows, автор:

Как оказалось, библиотека для LastFM из статьи от 31.08.11 оказалась не особо юзабельной из-за нескольких досадных недоработок:
1. Клавиши управления не работали, если окно свернуто (связано с тем, что управление производилось с помощью SendMessage, но в свернутом состоянии окно не обрабатывает оконные сообщения, поэтому они переставали реагировать). (Спасибо Artik'у за наводку)
2. При сворачивании окна в трей и последующем восстановлении пропадали элементы управления, так как окно "уничтожалось".

Чтобы исправить эти моменты, я решил переписать библиотеку. В этой статье я опишу изменившиеся методы (к слову, CreateThumbnailToolbar и EnumWindowsProc остались без изменений).
Читать дальше »

Print This Post Получаем лицензионный Minecraft почти бесплатно

Среда, 21. Сентябрь 2011
Раздел: Жизнь, автор:

There is no security on this earth; there is only opportunity.
– Douglas MacArthur

Недавно ко мне в гости приехали родственники из СНГ и привезли всяких забавных "вкусняшек", которые я сразу же решил попробовать. Особенно хочется отметить такую вещь, как: метионил-глутамил-гистидил-фенилаланил-пролил-глицил-пролин (или просто Семакс). На удивление один из, по-моему, немногих препаратов производства СНГ, обладающий ярко выраженным эффектом, который ощущается практически сразу после начала приема, причем вроде как без серьезных противопоказаний. Концентрация запредельная.

Но что-то мы отошли от темы. Листал я интернеты в поисках чего-нибудь эдакого и наткнулся на чье-то игровое видео по Minecraft. Полез на официальный сайт игры (minecraft.net) и с сожалением обнаружил, что игра платная, причем стоит не очень-то дешево.
Зарегистрировался на сайте, посмотрел способы оплаты и решил посмотреть, как происходит процесс оплаты игры. Платить можно через PayPal или банковской картой. В качестве агрегатора платежей (для всех вариантов, кроме PayPal) используется Moneybookers, казалось бы, откуда взяться проблеме, но, видимо, не перевелись ещё "гениальные девелоперы", которые кладут на документацию системы обслуживания оплаты.

Встречайте глупый и примитивный баг: если выбрать оплату игры кредитной картой (главное не через PayPal, там, слава богу, косяков не допустили), нажать кнопку Proceed to checkout, перехватить запрос и поменять в нем сумму с 21.95$ (цена для США), на, например, 0.7$ (сумма обусловлена минимальным размером платежа через систему), а затем ввести данные своей или виртуальной карты и оплатить, то оплата успешно пройдет и Premium account будет удачно оплачен (или можно купить gift-кодов, я проверял на них).

Конечно, небольшой минус состоит в том, что не у всех есть банковская карта, а некоторым не хочется светить данные своей карты, но это не проблема, так как всегда можно купить Visa Virtual с необходимым номиналом (например, на плати.ру: долларовая карта, рублевая карта).
Для тех, кто не понял, что и как надо делать, чтобы купить майнкрафт дешево:
Читать дальше »

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-формат. Часть 3 — Импорт

Воскресенье, 4. Сентябрь 2011
Раздел: C/C++, Windows, Для новичков, автор:

Импорт - это важнейший элемент любого исполняемого файла. Невозможно найти exe- или dll-файл без каких-либо таблиц, имеющих отношение к импорту, разве что у упакованных файлов и у вирусов. Импорт позволяет указать, какие внешние функции и из каких модулей требуются исполняемому файлу для нормальной работы. Например, если мы пишем простейший "Hello, world!", который выводит приветствие в MessageBox'е и завершает выполнение, то ему потребуются как минимум две функции: MessageBoxA (или MessageBoxW) из user32.dll и ExitProcess из kernel32.dll.

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

Print This Post Добавляем в LastFM управление через панель задач

Среда, 31. Август 2011
Раздел: C/C++, Windows, автор:

С появлением Windows 7 в системе появилась полезная фишка, позволяющая размещать элементы управления в панели задач, а именно в превью, которое высвечивается при наведении на элемент в панели. Однако, редко встретишь приложение, которое её использует. Из множества приложений, которыми я пользуюсь, на ум приходит только одно - Media Player Classic. Вот так выглядят элементы управления для него:

Так сложилось, что я люблю слушать "полу-радио", в частности, Last.fm. Но, к сожалению, в клиенте Last.fm нет поддержки этих модных кнопочек, поэтому мне захотелось добавить их в него собственноручно. Перечень действий, которые необходимо для этого, примерно следующий:
1. Находим хендл основного окна клиента.
2. Добавляем элементы управления.
3. Ставим свой обработчик оконных сообщений, в котором задаем поведение элементов управления.
Читать дальше »

Print This Post Распаковываем Perl-скрипты, обработанные PerlApp

Воскресенье, 7. Август 2011
Раздел: C/C++, Perl, автор:

Как известно, для Perl, впрочем, как и для других скриптовых языков, существуют утилиты, позволяющие создавать из скрипта полноценный exe-файл, который можно переносить на другие компьютеры и запускать, даже если интерпретатор языка на них не установлен. В случае с perl'ом наиболее популярными утилитами являются Perl2Exe и PerlApp.
Принцип работы этих утилит довольно прост и состоит в упаковке внутрь результирующего exe-файла библиотеки перла, основного скрипта и зависимых модулей. Содержимое, естественно, сжимается, шифруется (с помощью XOR) и не хранится в открытом виде внутри файла. Исследуем чуть подробнее внутреннее устройство результирующих exe-файлов, которые получаются с помощью PerlApp.
Для начала, определим с помощью чего сжимаются данные. Это сделать довольно просто, например, с помощью PeID (с плагином Krypto Analyzer) или какого-нибудь hex-редактора. В случае с PeID все тривиально: указываем путь к файлу, запускаем плагин и получаем список найденных крипто-сигнатур.

С hex-редактором тоже просто: открываем нужный файл, нажимаем Alt+F6 (справедливо для Hiew), получаем список строковых ресурсов, гуглим эти строки.

Таким образом определяем, что для сжатия используется библиотека zlib, причем довольно старая версия - 1.1.4. Конечно, можно начать искать, где именно в файле хранятся сжатые данные, но мне захотелось пойти другим путем.
Читать дальше »

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

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

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

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

Print This Post Пишем простое клиент-серверное приложение на Perl

Понедельник, 1. Август 2011
Раздел: Perl, Для новичков, автор:

В этой статье я рассмотрю создание простого чата на Perl. Чат будет состоять из консольного сервера и клиента с GUI на основе Tk. Для начала реализуем серверную часть.
В серверной части мы не будем использовать процессы или потоки, а вместо этого воспользуемся мультиплексированием. Мультиплексирование довольно просто реализуется с помощью модуля IO::Select, который является классом-оболочкой над системной функцией select.
Функция select позволяет определить готовность дескриптора к записи/чтению. Также стоит отметить, что при использовании select следует избегать использования блокирующих вызовов, как, например, print, read, вместо них необходимо использовать syswrite, sysread.
Читать дальше »

Print This Post PE-формат. Часть 1 — Базовая информация

Воскресенье, 24. Июль 2011
Раздел: Windows, Для новичков, автор:

Данная статья является первым маленьким шажком на пути к написанию собственного несложного упаковщика. Знаний предстоит получить весьма большое количество, так что садитесь поудобнее, запасайтесь попкорном и готовьтесь к чтению. В статье большое количество отсылок к MSDN, поэтому не ленитесь открывать и изучать те структуры, на которые я ссылаюсь. Если будете следовать моим простым советам, обучение пойдет гораздо проще. Еще я бы рекомендовал скачать какой-нибудь PE-редактор, например, CFF Explorer и скормить ему реальный PE-файл, чтобы можно было вживую пробежаться по тем структурам, которые я здесь описываю.

PE-формат (Portable Executable) - это формат всех 32- и 64-разрядных исполняемых файлов в ОС Windows. Такой формат имеют файлы exe, dll, ocx, sys и т.д. (Разумеется, exe под DOS не в счет). В этой статье я расскажу самую базовую информацию об устройстве этого формата и его структурах. Практически самое полное и доступно изложенное описание можно найти в статье Криса Касперски, и она является обязательной к прочтению, если вы действительно решили во всем этом разобраться. Помните - никто не говорил, что будет легко, но у вас появился отличный шанс показать, что вы настоящие мужики с железными волосатыми яйцами, разобравшись во всем этом.
Читать дальше »

Print This Post Вопрос к аудитории

Понедельник, 18. Июль 2011
Раздел: Без категории, автор:

У нас с Kaimi есть некоторые идеи, которые мы могли бы реализовать и описать в блоге, но их достаточно много, и преимущественно все они весьма объемные. Поэтому я решил сделать небольшой опрос, чтобы определить, какие статьи действительно стоит написать, и они будут интересны читателям блога, а какие стоит отложить или вообще не браться. Мы иногда пишем статью, которая набирает меньше десяти комментариев, а это может говорить лишь о том, что ее прочло небольшое количество людей, она не цепляет и неинтересна. Конечно, подобное нас не радует, потому что работа оказывается проделанной зря.

В опросе примутся только 5 вариантов ответов, поэтому указывайте то, что вас интересует больше всего.

Какие темы действительно были бы Вам интересны?

 

  • Статьи про зарубежные социальные сети, а также методы и софт для работы с ними (39%, 92 Голосов)
  • Разбор PE-формата исполняемых файлов (exe, dll). Финал цикла статей - написание простого упаковщика (27%, 64 Голосов)
  • Сборка такого вот устройства с пояснениями, как это все работает (цикл статей): http://www.youtube.com/watch?v=6mXM-oGggrM (27%, 62 Голосов)
  • Примеры скриптов на Perl с разбором кода (23%, 54 Голосов)
  • Какие-либо несложные программы на MASM32 с разбором их исходных кодов (продолжение существующего цикла статей) (23%, 53 Голосов)
  • Реализация MBR и загрузчика с дополнительным функционалом (22%, 52 Голосов)
  • Написание набора классов для работы с HTTP на C++ и их использование (цикл статей) (19%, 44 Голосов)
  • Создание своего USB-устройства и реализация удаленного взаимодействия с платформой Arduino (18%, 42 Голосов)
  • Переходник captchabot <-> anticaptcha для любой программы (18%, 42 Голосов)
  • Написание плагина для Проводника Windows, позволяющего в два нажатия загрузить выбранное изображение на хостинг картинок (17%, 39 Голосов)
  • Создание виджета под Windows 7 (16%, 38 Голосов)
  • Простой морфер ассемблерного кода (15%, 34 Голосов)
  • Классы на C++ для сбора с компьютера файлов, удовлетворяющих определенному критерию, и отправки их в сеть на указанный гейт (14%, 33 Голосов)
  • Примеры использования библиотек OpenCL и OpenMP для ускорения вычислений (9%, 22 Голосов)
  • Генерация качественных паролей на C++ (7%, 17 Голосов)
  • Простые примеры использования библиотеки ClanLib (использовалась при создании третьего квеста) (4%, 10 Голосов)

Всего проголосовало: 233

Страница 2 из 1512345678910...Конец »