Как эффективно сжать буффер?

Тема в разделе "WASM.WIN32", создана пользователем nullPtr, 3 дек 2020.

Метки:
  1. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    Переписываю проект. Нужно сжимать логи и отправлять на гейт. Юзал zlib, но нужно штатными средствами.

    Приглянулся - RtlCompressBuffer. Взял и сделал. Но иногда он просто не сжимает, сжимает криво и не разжимает.

    Из флагов пробовал - COMPRESSION_FORMAT_LZNT1.
    Остальные пробовал - вообще не воркают. В чем может быть проблема?

    В качестве буфера взял массив char с длиной - 50 символов.
    Сжал в '\x2'. А после не разжимает.

    Не силен в алгоритмах сжатия и прочее, но не подскажите, что делать?

    Так же благодарен буду, если есть нечто такое, что сжимает буфер на чистом winapi/
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    nullPtr,

    Погугли чем скриптом тут твои сообщения жмутся.
     
  3. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    Мне прост интересно, у меня ли такая шляпа. Кореш тестил - воркает. У меня нет
     
  4. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Можно использовать zipfldr.dll и сжимать в zip архив.
    • Создаешь пустой файл архива;
    • Создаешь COM объект Shell.Application;
    • Получаешь объект Folder пустого архива;
    • Вызывая метод CopyHere копировать файл/папку/файлы в архив.
    Проблема в том что копирование в архив выполняется асинхронно, но можно так или иначе определить когда копирование завершено (если заинтересует этот метод - расскажу). Если файлы маленькие - то можно навскидку подождать.
    --- Сообщение объединено, 3 дек 2020 ---
    Код давай.
     
    Ronin_ нравится это.
  5. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    Собирать бы желательно в памяти без дропа. Делаю без COM, ну чтоб детектов не было.
    Как вариант - либа на winapi по сжатию

    код скину через сутки, не за рабочим компом прост
     
  6. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    nullPtr,

    А в чём детект может быть, эвристика по импорту ?

    Полная чушь. Обычно наоборот, чем больше апп отлично от статистики по норм апп, тем выше вероятность детекта. Ну если авер увидит что ты дёрнул нэйтив ртл он тебе точно детект выдаст, тут без вариантов.
     
    nullPtr нравится это.
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    А там вроде только он один и реализован. Надо код смотреть, чтобы видеть, где что не работает.
    --- Сообщение объединено, 3 дек 2020 ---
    Есть еще апи для создания cab-файлов, но он много темповых файлов создает для работы.
     
  8. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    я не помню, что тестил по кому, но убрал - пропал детект. Хз я че делал, но отрицательный отпечаток остался. А так согласен.

    как буду за компом - скину сразу. Искал именно кросплатформ решение и чтоб веса не добавляло. Решил все написать на венапи.
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    nullPtr,

    Что убрал, во первых какой детект, generic это эвристика.

    Так смысла нет гадать, ты инфы не дал для решения. Во первых название детектов.
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Я кстати пробовал этот метод, он работает, но если закидываешь в папку большие объемы, то возникал прогрессбар эксплорера на экране.
     
  11. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    кстати, я вспомнил кео-что
    char buff[] = "Hello world. This is Simple text for compress. We are using RtlCompressBuffer"

    Этот буфер он сжимает в нечто - "\x1" или "\x0" И разжать не получается

    А буфер char buff[] = "bufferbufferbufferbufferbufferbufferbufferbuffer"
    сжимает в "\x1 buffer 0" - и когда разжимаем, то получаем оригинальный буфер. Мб буфер стоило больше взять? Хотя так не думаю
    --- Сообщение объединено, 3 дек 2020 ---
    Ничего не могу сказать за COM. Помню смутно. Мб дело было и не в ком. Я хз.
    Но заюзал паблик решение одного малвари
     
  12. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    А какие системные требования? Можно использовать к примеру https://docs.microsoft.com/en-us/windows/win32/cmpapi/-compression-portal

    Я уже давно исследовал этот метод уже не помню всех деталей, но кажется можно убрать окно.
     
  13. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    nullPtr, сорцы архиватора не предлогать ?
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    nullPtr,

    Вот же новость что авер читает текст к которому применена штатная крипта да ?

    Да они ксоры со сдвигами над массивами палили когда ты есчо не знал наверно что такое авер :sarcastic:
     
  15. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    наоборот, буду рад. Ток без stl и crt (если малоки аллоки - перепишу). Самый минимальный архиватор. То что на гите распоковал - все stl и crt.
    А ТЗ по чистому винапи

    Пробовал, с венды 8 стартует ток. А мне отстук нужен и на более старых машинах
     
  16. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    http://ibsensoftware.com/products_aPLib.html - достаточно легковесный, но часто использовался в пакерах, так что наверное может палиться всеми аверами на свете. А так то просто взять любую реализацию deflate/gzip/bzip и юзать.
     
  17. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    https://github.com/madler/zlib

    чище некуда, даже без винапи
     
    nullPtr нравится это.
  18. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    читает ксор - давно известно.

    Я ща не парюсь т.к. проект не зиродей. Тот же самый oski дропал в APPDATA - 6 dll, создавал директорию и собирал файлы. И отстук был 80%.
    А строки вроде base64. А что на это скажешь?)
    --- Сообщение объединено, 3 дек 2020 ---
    Вродь долго сжимает что ле. Или я путаю. На примете пока что zlib
    Так же нашел - https://github.com/nemequ/lzo/blob/master/minilzo/
    Ток перепилить надо, а я не хочу чтоб потом багов было немеренно
     
  19. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Вы превратились в комерс площадку.)
     
  20. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    лол, и чем же это? Я тут продавать/покупать не пришел. Если надо, могу на дамаг или экспу с гарантом, но вряд ле.

    Тут чистый интерес. Что, даже вопрос задать нельзя? Мб я пишу софт под белую организацию по порьбе с черными?)