Print This Post MASM32: Начало

Суббота, 21. Август 2010
Раздел: Assembler, Windows, Для новичков, автор:

Решил начать цикл статей по ассемблеру, и, в частности, по MASM32. Пригодятся эти мануалы с примерами тем, кто хочет поднять свои навыки программирования и развить умение программировать на ассемблере. Пакет MASM32 - это не просто голый ассемблер. В нём есть огромное множество облегчающих разработку софта вещей - пользовательские макросы, встроенные функции и макросы, дебаггер и прочее, и обо всём этом я буду рассказывать. Конечно, читать такие статьи будет гораздо легче тем, кто уже умеет программировать на каком-нибудь языке. Если вы программируете на каком-нибудь говне вроде Visual Basic, или фанатеете от перетаскивания компонентов и кнопочек на формы в дельфи или Borland C++ - не расстраивайтесь, я расскажу, как можно перетаскивать кнопочки и в ассемблере. Разумеется, никаких стандартных облегчающих жизнь компонентов здесь не будет, но это побудит разобраться с WinAPI - огромной кладезью полезных функций, которые способны делать всё, начиная от чтения данных из сокета и заканчивая отображением окон.
Читать дальше »

Print This Post Делаем собственный инжектор

Суббота, 14. Август 2010
Раздел: Assembler, C/C++, Windows, автор:

Давным-давно, во времена мифов и легенд, когда древние Боги были мстительны и жестоки и обрушивали на программистов все новые и новые проклятия... На хабре была опубликована статья про сплайсинг.

В качестве примера в статье был приведен довольно масштабный код, который воспринимался не особо легко. Захотелось разобраться в процессе инжекта, а также написать более простой и менее громоздкий код.
Вкратце, инжектинг - это подгрузка нашей библиотеки в сторонний процесс, а сплайсинг - перехват какой-либо функции (мы перехватывали WinAPI) и модификация её работы средствами этой самой библиотеки.
Пример будет состоять из двух частей: 1 - библиотека, 2 - инжектор, который будет внедрять библиотеку в целевой процесс. Библиотеку будем писать на masm, что позволит в разы сократить объемы кода, а инжектор - на Си.
Читать дальше »

Print This Post KWM bruteforce

Среда, 2. Июнь 2010
Раздел: C/C++, автор:

Консольный брутфорс для .kwm файлов (файл ключей webmoney keeper classic) по словарю. Использование аналогично предыдущему брутфорсу для .pfx сертификатов.
Скорость перебора составляет ~100-200 тысяч паролей в секунду.

kwm bruteforce

kwm брутфорс

Скачать: kwm bruteforce

Update 03.04.11: Исправлена проблема совместимости с текущей версией kwm-файлов WebMoney.

Update 09.07.12: Немного измененная версия брутфорса, если предыдущий вариант на Intel Core i5 выдавал скорость ~190000 паролей/сек, то этот ~250000 паролей/сек. Скачать.

Update (07.02.14):
kwm bruteforce source
GitHub: kwm-bruteforce

Print This Post PFX bruteforce

Вторник, 11. Май 2010
Раздел: C/C++, автор:

Как-то раз случилось забыть пароль от сертификата Webmoney. Для того, чтобы ускорить процесс вспоминания, был написан простой консольный брутфорс (на Си + Win32 API) для pfx файлов (PKCS #12 Certificate File) по словарю.
Скорость работы на компьютере с процессором CoreDuo 2Ghz под Windows XP SP3 составляет примерно 30000 паролей/сек.

pfx bruteforce

pfx брутфорс

В комплекте с брутфорсом идет Crypt32.dll из WinXP, ибо с ней почему-то достигается наибольшая скорость работы (по сравнению с библиотеками из Windows Vista и Windows 7).

Скачать: pfx bruteforce (пароль на архив: kaimi-ru)
Update (07.02.14):
Скачать: pfx bruteforce source
GitHub: pfx-bruteforce

Print This Post Создаем плагин на ассемблере для популярного плеера AIMP

Среда, 10. Март 2010
Раздел: Assembler, автор:

Очередная статья, посвященная задротству и извращенству. Почему? Да потому что плагины для AIMP гораздо проще создаются на Дельфи, и для этого автор написал SDK (хотя SDK, конечно, громко сказано - всё ограничилось единственным файлом с исходником на дельфи). Тем не менее, в практике ассемблера этот пример будет весьма полезен и необычен.
Читать дальше »

Print This Post StepFucker — проходим треки в степмании на АААА

Воскресенье, 20. Сентябрь 2009
Раздел: Assembler, автор:

Написал на ассемблере программку для идеального прохождения треков в игре Stepmania.
Если вы не знакомы с такой игрой - посмотрите видео ниже, и поймёте ее суть - нажимать на 4 клавиши в ритм с песней руками или ногами (на специальных ковриках/автоматах).
Весь код программы я описывать не буду, опишу только новые особенности Win API, с которыми мне пришлось иметь дело во время написания.
Для начала, вот несколько скриншотов программы и видео ее работы:

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

Print This Post Библиотека для работы с http

Суббота, 22. Август 2009
Раздел: Assembler, автор:

Написал небольшую библиотеку на ассемблере (MASM32) для работы с http-протоколом.
Читать дальше »

Print This Post Пишем плагины для Winamp’а

Четверг, 30. Июль 2009
Раздел: Assembler, автор:

Совсем недавно я освоил написание плагинов для этого проигрывателя. Следует отметить, что официального SDK от NullSoft нет, и эта компания изредка выдает общественности куски документации по своему плееру. Некоторые описанные возможности не работают или работают неправильно, некоторые совсем плохо прокомментированы, поэтому мне пришлось много экспериментировать, чтобы написать нечто рабочее. Кстати, пример написанного мной плагина вместе с полностью работоспособным сервисом ведения статистики прослушиваний и создания подписей-картинок для форумов можно посмотреть тут: MusicSign.
Существует достаточно всевозможных тонкостей написания плагинов для WinAmp'а, и я постараюсь их описать в этой статье. Примеры буду приводить на ассемблере MASM32 (собственно, сами плагины я на нем и пишу), но примеры будут несложные, поэтому знающим c/c++ и немного Win32 API будет легко их понять.
Читать дальше »

Print This Post Универсальный конвертер текста 1.0

Вторник, 23. Июнь 2009
Раздел: Assembler, автор:

Очередной релиз от меня - программка для конвертации текста в разные представления и вычисления хэшей, написанная на ассемблере (masm32).
Имеется быстрое копирование и вставка текста, сохранение и открытие текстовых файлов.

Поддерживает конвертацию:
* Text -> URLEncode
* Text -> String.fromCharCode (ascii)
* Text -> String.fromCharCode (utf)
* Text -> base64
* Text -> MySQL char
* Text -> HEX
* Text -> BIN
* Text -> chr()
* Text -> MSSQL char
* Text -> PostgreSQL
* Text -> MD5
* Text -> SHA1
* Text -> &#xxx; (ascii)
* Text -> &#xxx; (utf)
* Text -> \xhh
* Text -> %XX
* Text -> VB chr$()
* Text -> C# (char)
* Text -> Транслит
* URLEncoded -> Text
* base64 -> Text

Скриншот:

Скачать exe (10кб) и исходные коды: ZIP

В общем исходный код программки ничем не отличается от тех, что я выкладывал раньше, но есть несколько интересных особенностей, которые я опишу дальше.
Читать дальше »

Print This Post Как сделать BSOD из User-mode

Воскресенье, 17. Май 2009
Раздел: Assembler, автор:

Наткнулся на забавный исходник на одном китайском сайте, где показано, как можно сделать BSOD (Blue Screen of Death, синий экран смерти) в Windows из User-Mode (ring 3) без всякого Native API:

Код на c++:

Код на ассемблере (переписал с си++ для уменьшения размера, весит всего 1кб):

Код проверен и работает на WinXP SP3 и Windows Vista SP1. На Windows 7 не работает, пофикшено, на XP SP2 тоже вроде бы не работает.

UPD: обнаружился код на c++, который способен вызвать BSOD на Win XP SP2, Win 2003 SP1 и Win NT SP4 (Discovered on 23.12.2004 by YuraN).
Читать дальше »

12