Blog. Just Blog

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

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

Исследование защиты программы Franzis NEAT projects 2

11.01.2021 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы Franzis NEAT projects 2

Вообще я стараюсь придерживаться правила, что после выкладывания разбора очередной защиты, больше не трогать ни одной программы этого разработчика. Но тут уж очень классная программа, да и защита немного поменялась, так что пусть это будет шпаргалка для самого себя. Franzis NEAT projects позволяет в автоматическом режиме убирать с фотографий все движущиеся предметы. Например, в поездке вы делаете несколько снимков какой-нибудь достопримечательности с разными интервалами времени, затем отправляете всю пачку фотографий в программу, она анализирует все возможные статичные области и составляет из них чистое изображение. Словно по волшебству из кадра пропадает вся человечина. Причем даже не обязательно пользоваться штативом, программа сама выровняет все кадры.

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

Исследование защиты программы SVG To PNG Converter

03.11.2020 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы SVG To PNG Converter

SVG To PNG Converter - весьма толковая программа для пакетного конвертирования файлов из векторного формата SVG в более привычный формат PNG. Сейчас на сайте разработчика 1533 программы, в числе которых различные конвертеры, надстройки над офисными пакетами и всякое подобное. Если циферками не зашло, продублирую буковками: у разработчика в списке релизов числятся более полутора тысяч программ. Часть из них используют бесплатные утилиты других авторов, другая часть, как мне кажется, какие-то бесплатные компоненты. Пора воплощать в жизнь марксистский термин "экспроприация экспроприаторов".

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

Вывод изображения на Ассемблере с помощью OLE

21.09.2019 | Категория: Образ мышления: Assembler | Автор: ManHunter
Ранее я уже разбирал загрузку и вывод изображения с помощью GDI+, но это далеко не единственный способ загрузки изображения из файла. В дополнение к этой теме предлагаю рассмотреть еще один способ, как можно загрузить изображение из файла средствами OLE. Сперва пропишем GUID объекта IID_IPicture и создадим структуру для методов интерфейса IPicture. В MSDN методы перечислены в алфавитном порядке, а не так, как они фактически идут в интерфейсе, имейте это в виду.
  1. ; GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
  2. IID_IPicture       dd 7BF80980h
  3.                    dw 0BF32h
  4.                    dw 0101Ah
  5.                    db 08Bh, 0BBh, 0h, 0AAh, 0h, 030h, 00Ch, 0ABh
  6.  
  7. ; IPicture Interface
  8. struct IPicture
  9.     ; IUnknown
  10.     QueryInterface dd ?
  11.     AddRef         dd ?
  12.     Release        dd ?
  13.  
  14.     ; IPicture
  15.     get_Handle     dd ?
  16.     get_hPal       dd ?
  17.     get_Type       dd ?
  18.     get_Width      dd ?
  19.     get_Height     dd ?
  20.     Render         dd ?
  21.     set_hPal       dd ?
  22.     get_CurDC      dd ?
  23.     SelectPicture  dd ?
  24.     get_KeepOriginalFormat dd ?
  25.     set_KeepOriginalFormat dd ?
  26.     PictureChanged dd ?
  27.     SaveAsFile     dd ?
  28.     get_Attributes dd ?
  29.     SetHdc         dd ?
  30. ends
Итак, у нас есть файл с изображением, который надо загрузить в память и затем выполнить с ним нужные действия, например, вывести на форму. Первым делом загружаем его целиком в память.
  1.         ; Прочитать файл в память
  2.         invoke  _lopen,fname,OF_READ
  3.         cmp     eax,-1
  4.         je      loc_free_1
  5.         mov     ebx,eax
  6.  
  7.         ; Получить размер файла
  8.         invoke  GetFileSize,ebx,NULL
  9.         mov     [file_size],eax
  10.  
  11.         ; Выделить память под файл
  12.         invoke  GetProcessHeap
  13.         mov     [hProcHeap],eax
  14.         invoke  HeapAlloc,[hProcHeap],0,[file_size]
  15.         mov     [hLock],eax
  16.  
  17.         ; Загрузить картинку в память
  18.         invoke  _lread,ebx,[hLock],[file_size]
  19.         invoke  _lclose,ebx
Тут ничего сложного, в куче выделяется блок памяти под размер файла картинки, затем в него считывается содержимое файла.

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

Градиентный фон на PHP

31.07.2019 | Категория: Web-мастеру и не только | Автор: ManHunter

Градиентный фон на PHP

Продолжаем работать с графикой на PHP. Сегодня будем рисовать градиентную заливку фона, когда один цвет плавно перетекает в другой.

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

Получение реального формата изображения

08.04.2019 | Категория: Web-мастеру и не только | Автор: ManHunter
Одно из основных правил при разработке web-приложений - не доверять никаким данным, полученным от пользователя. Они могут быть перепутаны случайно, но могут быть специально модифицированы в злонамеренных целях. Это касается в том числе и загружаемых изображений. Чтобы применять к ним функции типа ImageCreateFromXXX, просто ориентироваться на расширение файла недостаточно, оно запросто может не соответствовать содержимому. Для определения реального типа изображения я всегда проверяю внутренний формат файла, его служебные заголовки, и только на основании этого принимаю решение, как обрабатывать этот файл. Для этого у меня написана вот такая функция:
  1. //-------------------------------------------------------------------
  2. // Функция получения реального формата изображения
  3. // (C) ManHunter / PCL
  4. // https://www.manhunter.ru
  5. //-------------------------------------------------------------------
  6. function get_real_image_type($file_path) {
  7.   // По умолчанию файл имеет неизвестный формат
  8.   $type=false;
  9.  
  10.   // Анализ по внутренней структуре файла
  11.   if ($f=fopen($file_path,'r')) {
  12.     $data=fread($f,20);
  13.     fclose($f);
  14.     // Заголовок файла GIF
  15.     if (substr($data,0,3)=='GIF'
  16.       && (substr($data,12,1)=="\x00" 
  17.       || substr($data,12,1)=="\x01")) {
  18.       // Проверка на классические сплойты
  19.       if (strpos(substr($data,6,4),'/*')!==false 
  20.         || strpos(substr($data,6,4),'//')!==false) {
  21.         $type=false;
  22.       }
  23.       else {
  24.         // Проверка на более хитрые сплойты
  25.         $tmp=preg_replace('/[^\("\']/','',substr($data,6,4));
  26.         if ($tmp=='("' || $tmp=='(\'') {
  27.           $type=false;
  28.         }
  29.         else {
  30.           $type='gif';
  31.         }
  32.       }
  33.     }
  34.     // Заголовок файла PNG
  35.     elseif (substr($data,0,8)==chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) {
  36.       $type='png';
  37.     }
  38.     // Заголовок файла JPEG
  39.     elseif (substr($data,0,3)==chr(255).chr(216).chr(255)) {
  40.       $type='jpg';
  41.     }
  42.     // Заголовок файла BMP
  43.     elseif (substr($data,0,2)=='BM') {
  44.       $type='bmp';
  45.     }
  46.     // Заголовок файла WebP
  47.     elseif (substr($data,0,4)=='RIFF' && substr($data,8,4)=='WEBP') {
  48.       $type='webp';
  49.     }
  50.   }
  51.   return $type;
  52. }
Единственный параметр $file_path - путь к проверяемому файлу. На выходе строка с реальным типом изображения или false, если файл не является изображением.

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

Просмотров: 1457 | Комментариев: 6

01 ... 07 08 09 10 11 12 13 ... 25
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.24 сек. / MySQL: 3 (0.0091 сек.) / Память: 4.5 Mb
Наверх