Быстрый поиск
Введите фрагмент названия статьи для поиска
M/o/Vfuscator. Ночной кошмар реверсера
06.04.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter
M/o/Vfuscator. Ночной кошмар реверсера
Когда-то давно наткнулся на интересный проект - M/o/Vfuscator от Chris Domas. Его необычность заключается в том, что все ассемблерные команды в исходнике преобразуются в набор команд MOV (и только их!!!), которые в результате выполняют то же самое действие, что и заменяемая команда. Никаких проверок, никаких условных переходов, никаких ветвлений алгоритма, вообще ничего, кроме сотен и тысяч последовательных инструкций MOV. Понятное дело, что размеры исходника и готовой программы распухают на порядки, но кого это в наше время волнует. Похоже на магию?
Читать статью целиком »
Просмотров: 1413 | Комментариев: 19
Обработка Drag'n'Drop в разные поля ввода
28.03.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter
В статье об обработке перетаскивания файлов я упомянул про раздельную обработку перетаскивания файлов в разные поля. В частности про вариант с субклассированием. Теперь расскажу, как это делается. Предположим, что у нас на форме есть три поля для выбора файла, причем каждое должно работать независимо.Code (Assembler) : Убрать нумерацию
- ; Разрешить каждому полю принимать файлы
- invoke GetDlgItem,[hwnddlg],ID_FILE1
- mov ebx,eax
- invoke DragAcceptFiles,ebx,TRUE
- ; Установить наш собственный обработчик
- invoke SetWindowLong,ebx,GWL_WNDPROC,EditWindowProc
- ; Сохранить хэндл предыдущего обработчика
- invoke SetWindowLong,ebx,GWL_USERDATA,eax
- invoke GetDlgItem,[hwnddlg],ID_FILE2
- mov ebx,eax
- invoke DragAcceptFiles,ebx,TRUE
- ; Установить наш собственный обработчик
- invoke SetWindowLong,ebx,GWL_WNDPROC,EditWindowProc
- ; Сохранить хэндл предыдущего обработчика
- invoke SetWindowLong,ebx,GWL_USERDATA,eax
- invoke GetDlgItem,[hwnddlg],ID_FILE3
- mov ebx,eax
- invoke DragAcceptFiles,ebx,TRUE
- ; Установить наш собственный обработчик
- invoke SetWindowLong,ebx,GWL_WNDPROC,EditWindowProc
- ; Сохранить хэндл предыдущего обработчика
- invoke SetWindowLong,ebx,GWL_USERDATA,eax
Читать статью целиком »
Просмотров: 679 | Комментариев: 3
Получение длительности MP3-файлов на Ассемблере
20.03.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter
Получение длительности MP3-файлов на Ассемблере
Вот и анонсированная ранее "другая история" про некорректное определение длительности MP3-файлов при использовании системных функций. При тестировании своих программ я нашел уже несколько таких файлов. Что интересно, на ошибочный результат размер файлов не влияет, это, как мне кажется, происходит из-за очень упрощенного расчета, который используется системой. Расчехляем Ассемблер, будем парсить внутреннюю структуру MP3 самостоятельно.
Читать статью целиком »
Просмотров: 829 | Комментариев: 0
Создание пользовательского MessageBox с помощью SoftModalMessageBox
14.03.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter
Ранее я уже рассказывал, каким образом можно кастомизировать стандартный MessageBox при помощи хуков, в частности, менять надписи на кнопках. Сегодня разберем создание MessageBox с помощью недокументированной функции SoftModalMessageBox. В качестве единственного параметра она принимает указатель на структуру MSGBOXDATA, которая тоже относится к недокументированным:Code (Assembler) : Убрать нумерацию
- struct MSGBOXDATA
- params MSGBOXPARAMS
- pwndOwner dd ? ; Хэндл окна-владельца
- wLanguageId dd ? ; Идентификатор языка
- pidButton dd ? ; Массив с идентификаторами кнопок
- ppszButtonText dd ? ; Массив с указателями на строки текста
- cButtons dd ? ; Количество кнопок в окне
- DefButton dd ? ; Кнопка по умолчанию
- CancelId dd ? ; Идентификатор кнопки отмены
- Timeout dd ? ; Таймаут окна
- Unknown rd 5 ; Зарезервировано
- ends
Читать статью целиком »
Просмотров: 1142 | Комментариев: 12
Парсинг метаданных MP3-файлов на Ассемблере
27.02.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter
Парсинг метаданных MP3-файлов на Ассемблере
В одной из предыдущих статей я рассказал, как можно получить данные из различных тегов MP3-файлов. Но, как выяснилось, системная реализация не в состоянии корректно обработать некоторые строковые данные. Например, название исполнителя "To/Die/For" обрезается до строки "To". Это связано с особенностями стандарта ID3v2.3, в котором символ слеша является служебным и используется для разделения нескольких значений. При этом в заголовке MP3-файла версия тегов может быть обозначена как ID3v2.4, в которой это ограничение снято, но система все равно будет обрабатывать данные по более старому стандарту. И вот опять, если хочешь сделать что-то хорошо, сделай это сам.
Читать статью целиком »
Просмотров: 1342 | Комментариев: 11