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

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

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

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

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

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

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

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

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 Фишка WebMoney Keeper Classic

Суббота, 14. Май 2011
Раздел: C#, Windows, автор:

Недавно, от нечего делать, копался в WebMoney Keeper Classic и заметил одну забавную особенность, которую можно использовать с некоторой пользой.
Как известно, оплата через Keeper Classic не интегрируется непосредственно в установленные на компьютере браузеры, то есть инициировать оплату можно из любого приложения, если кипер запущен. Система инициации простая: при включении кипер поднимает обычный веб-сервер (на 2803 порту), который при определенном запросе к нему отображает пользователю окно с деталями о платеже. Мне казалось, что при такой схеме было бы логично предположить, что веб-сервер биндится на localhost, однако это не так.

Кипер позволяет обращаться к своему веб-серверу извне, таким образом, если вы не сидите за роутером/прокси/чем-угодно-защищающем-порты и у вас запущен кипер, то любой может сформировать и отправить вашему киперу запрос, в результате которого вы увидите окно оплаты, например, такое:

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

– Можно задалбывать пользователя всплывающими окнами (некоторые после этого начинают полагать, что их компьютер взломали)
– Если пользователь введет что-нибудь в поле для кода подтверждения, то в ответ вы получите URL с редиректом, содержащим его WMID
– Теоретически возможно купить таким образом товар за чужой счет, если перейти в веб-интерфейсе на форму оплаты какого-либо товара, подсмотреть данные платежа в исходном коде страницы, число на картинке (код подтверждения), а потом отправить запрос с интересующей суммой какому-нибудь недалекому человеку и в описании товара указать что-нибудь вроде: Введите код 12345

Возможно, существуют и другие опасности, например, я заметил, что при указании больших чисел в качестве суммы платежа начинает частично затираться содержимое поля с описанием товара. В общем, будьте бдительны.
Для тех, кто хочет поиграться с составлением запросов - маленькая программка на шарпе, которая позволяет указывать ip, порт, сумму, описание платежа и отправлять запрос.

В нижнем поле окна программы отображается ответ сервера.
Скачать: zip

Print This Post LSSender, detours и боянный сплайсинг

Вторник, 3. Май 2011
Раздел: C/C++, Windows, Социальные сети, автор:


Давно ничего не писал в связи с отсутствием интересных идей, поэтому решил написать эту статью, чтобы развеять пустоту.
Люди, пишущие софт на продажу, любят накрывать свои продукты протекторами, однако редко собственноручно проверяют качество защиты. Они, конечно, по-своему правы, так как обычный человек вряд ли примется читать статьи, например, на wasm, чтобы убрать защиту с программы. Рассмотрим способы "обмана" защиты одной из программ для всеми любимых социалочек.
Программа называется LSSender, последние версии которой накрыты DotFix NiceProtect от небезызвестного GPcH. В сети существуют мануалы по снятию этого протектора, но это слегка занудно, и поэтому мы займемся более детальным изучением системы привязки.
Читать дальше »

Print This Post Пишем на русском в Native Mode

Среда, 26. Январь 2011
Раздел: C/C++, Windows, автор:

Недавно у меня возникла необходимость писать на русском в нативном приложении, но, как оказалось, добиться этого не так-то просто.
Для того, чтобы получить возможность вывода русских букв, нужно разобраться, где и в каком формате хранятся глифы символов, которые отображаются на экране. Если подробнее рассмотреть функцию winx_printf (в своем проекте я использовал ZenWINX и NDK для упрощения разработки приложения), то мы увидим, что она в свою очередь вызывает winx_print, далее вызывается NtDisplayString, которая преобразует входящую строку с помощью RtlUnicodeStringToOemString, далее идет вызов функции InbvDisplayString, которая обращается к VGA Boot Driver (bootvid.dll).
Читать дальше »

Print This Post Шифрующий архиватор с автораспаковщиком

Воскресенье, 24. Октябрь 2010
Раздел: C/C++, Windows, Это интересно, автор:

Написал несложную программку - архиватор, позволяющий создавать запароленные зашифрованные архивы и прикреплять к ним автораспаковщик. Интерфейс архиватора выглядит так:

Как видно, архиватор позволяет добавить произвольное количество файлов в архив, при случайном добавлении лишних - удалить их или вообще очистить список файлов. Если добавить файлы в архив из разных директорий, архиватор автоматически вычислит самую общую для них и сохранит структуру расположения файлов. Пустые файлы и папки в архив не добавятся. Можно задать заголовок архива и текст, который отобразится в распаковщике перед полем ввода пароля. Также есть возможность задать уровень сжатия и сам пароль для шифрования файлов. Можно создавать архив с автораспаковщиком (формат exe), в этом случае не следует добавлять в него файлов больше, чем на 4 Гб. При создании архива без распаковщика (формат dxa) ограничений на размеры файлов или архива не накладываются, но такой архив можно будет распаковать, только имея разархиватор. Вот как он выглядит:

Распаковываться будут только выбранные в списке файлы. Если файл в папке разархивирования уже существует, распаковщик спросит, заменить ли его. Кроме того, распаковщик создаст все необходимые папки для разархивирования, если это необходимо.

Архивирование производится с помощью zlib, а шифрование - AES256.

Как все это можно использовать? Достаточно вспомнить о большом количестве файловых партнерок и понять, что теперь можно и самим делать платные архивы и распространять их, завися только от биллинга.
А еще это просто хороший архиватор :)

UPD: добавлена возможность создавать просто архивы без пароля.

Скачать: ZIP
Исходн говнокоды: source

Print This Post Tetris

Среда, 15. Сентябрь 2010
Раздел: C/C++, Windows, Жизнь, Это интересно, автор:

В связи с недавним юбилеем серии игр Mario, отдыхом от изучения WinDDK и появлением свободного времени решил написать свою реализацию олдскульной игры Тетрис.

Реализация обладает всеми или практически всеми фишками старых тетрисов:
[+] Хардкорная музыка (спасибки Kaimi)
[+] DOS-style интерфейс (консоль)
[+] Пауза, подсчет очков, различные сложности и т.д.
[+] После достижения 9-го уровня сложности открывается новый набор фигурок

Скачать: ZIP (исходники, ресурсы, exe в архиве).

Ностальгируйте на здоровье!

И напоследок:

Print This Post MASM32: Часть 3 — Брутальная бессердечность

Суббота, 11. Сентябрь 2010
Раздел: Assembler, Windows, автор:

Давно не писал новых статей по MASM, решил наконец-то продолжить цикл. Думаю, вы уже прочитали первые две статьи (эту и эту тоже) и разобрали их содержание. Пришло время поговорить о других возможностях MASM32. Возьмите исходный код из самой первой статьи, из той, в которой мы делали самое первое GUI-приложение, будем его использовать как базу для нового проекта.


В общем, сначала идея была проста... [click]

Но потом...


Программка будет сканировать все порты из указанного диапазона на заданном ip-адресе и выводить информацию в лог. Многопоточность делать не будем, но один поток всё равно создадим, чтобы при сканировании форма не висела.
Читать дальше »

Print This Post Simple PE Dumper

Среда, 1. Сентябрь 2010
Раздел: C/C++, Windows, автор:

Simple PE Dumper 1.0.

Программа, позволяющая вытянуть немного информации из исполняемых PE-файлов, а также PE .NET-файлов.

Дампит:

[+] Some DOS & NT-headers info
[+] DATA_DIRECTORY
[+] Section table
[+] Security directory
(все сертификаты, содержащиеся в файле)
[+] Debug directory
(+COFF / частично CodeView / Misc)
[+] Import directory
[+] Bound import directory
[+] Delay import directory
[+] Relocation directory
[+] Export directory
[+] TLS directory (incl. callbacks)
[+] Config directory (incl. SE Handlers)
[+] Resource directory (full STRINGTABLE and MESSAGETABLE dump)
[+] COM descriptor (full dotnet headers, streams and tables dump)

Способен корректно показать инфо о файлах, запакованных upack'ом, в отличие от многих других программ редактирования PE, а также лишен багов CFF explorer в плане просмотра информации о .NET-таблицах.

Для создания дампа просто перетащите PE-файл на форму открытого Simple PE Dumper'а.

Скачать: Simple PE Dumper