Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Использование TEB для антиотладки

18.01.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter

Использование TEB для антиотладки

Структура TEB (Thread Environment Block), как и PEB (Process Environment Block), при грамотном использовании позволяет получить огромное количество полезной информации. Сегодня расскажу еще об одном малоизвестном антиотладочном трюке. Он основан на том, что при нормальном запуске приложения в поле StaticUnicodeBuffer структуры TEB не содержится ничего, а при запуске под отладчиком там обязательно оказывается название той или иной динамической библиотеки, используемой приложением.

Читать статью целиком »
Просмотров: 1517 | Комментариев: 14

Удобная компиляция DLL в FASM

28.12.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Удобная компиляция DLL в FASM

Поделюсь маленьким лайфхаком, как можно удобно компилировать DLL в FASM. Предположим, что в вашем проекте должен быть исполняемый файл и динамическая библиотека. Вроде бы ничего сложного, принципиальная разница в заголовках исходников:
  1. ; Файл будет скомпилирован в DLL
  2. format PE GUI 4.0 DLL
  1. ; Файл будет скомпилирован в EXE
  2. format PE GUI 4.0
А как быть, если нужно, чтобы в проекте были одновременно program.exe и program.dll? Держать два исходника с одинаковым именем невозможно (всякие экзотические случаи окружения не рассматриваем); переименовывать каждый раз после сборки что-то-там.dll в program.dll лениво; собирать файлы из разных папок неудобно; если поменять расширение со стандартного ".asm" на кастомное, то слетит ассоциация и иконка файла в Проводнике; оставлять разные имена можно, но не выполняется начальное условие задачи. Я понимаю, что весь смысл Ассемблера заключается в непрерывном преодолении и подобные мелочи настоящего джедая не остановят. Но если есть возможность хоть немного облегчить работу программиста, то почему бы этого не сделать.

Читать статью целиком »
Просмотров: 1636 | Комментариев: 0

Распаковка данных с помощью LZ-функций

19.12.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Распаковка данных с помощью LZ-функций

В статьях о распаковке, опубликованным на этом сайте, мы рассмотрели уже несколько системных способов компрессии и декомпрессии данных. Сегодня разберем еще один. Это функции, появившиеся еще в ранних версиях Windows и использовавшиеся, в основном, в инсталляторах. Речь идет о LZ-функциях, в которых применяется алгоритм Lempel-Ziv, он же LZ77.

Читать статью целиком »
Просмотров: 924 | Комментариев: 0

Упаковка и распаковка данных с помощью библиотеки zlib

10.12.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Упаковка и распаковка данных с помощью библиотеки zlib

Продолжаем тему упаковки и распаковки. Сегодня в качестве инструмента будет известная библиотека zlib от Jean-loup Gailly и Mark Adler, признанных профессионалов в области компрессии данных. Ну а что, по системным функциям прошлись, почему бы не пройтись по сторонним библиотекам. Тем более, что zlib используется во многих программных продуктах, и, если вдруг возникнет необходимость поковыряться в их базах, то будет уже практически готовое решение.

Читать статью целиком »
Просмотров: 2291 | Комментариев: 4

Работа с метаданными изображений с помощью GDI+

28.11.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Работа с метаданными изображений с помощью GDI+

Библиотека Windows GDI+ предназначена для работы с графикой и мультимедиа и включает в себя более 600 различных функций для этого. Особо радует поддержка: все ключевые функции доступны уже начиная с Windows XP. Ранее мы уже немного касались этой темы. Сегодня разберем примеры, как средствами GDI+ можно получить метаданные из изображений различных форматов и изменить их.

Читать статью целиком »
Просмотров: 1182 | Комментариев: 10

01 ... 20 21 22 23 24 25 26 ... 76
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 3 (0.0168 сек.) / Память: 4.5 Mb
Наверх