что это за алгоритм?

Discussion in 'WASM.A&O' started by Wolfgang, Aug 29, 2005.

  1. Wolfgang

    Wolfgang New Member

    Blog Posts:
    0
    Joined:
    May 11, 2005
    Messages:
    82
    Location:
    Russia
    Уважаемые знатоки алгоритмов, не скажете ли вы мне, что это за алгоритм такой? Паковщик или криптор? И откуда он берет длину буфера?
     
  2. bogrus

    bogrus Active Member

    Blog Posts:
    0
    Joined:
    Oct 24, 2003
    Messages:
    1,338
    Location:
    ukraine
  3. Wolfgang

    Wolfgang New Member

    Blog Posts:
    0
    Joined:
    May 11, 2005
    Messages:
    82
    Location:
    Russia
    прошу прощения, вот этот (в первый раз не тот файлик приаттачил)

    [​IMG] 562822259___decrypt.txt
     
  4. bogrus

    bogrus Active Member

    Blog Posts:
    0
    Joined:
    Oct 24, 2003
    Messages:
    1,338
    Location:
    ukraine
    Наверное это упаковщик PCShrink
     
  5. Dr.Golova

    Dr.Golova New Member

    Blog Posts:
    0
    Joined:
    Sep 7, 2002
    Messages:
    348
    Это распаковщик aPLib, дэрэгой.

    А размер буфера ему не нужен, там есть стоп-конструкция после которой он останавливается, параметра соответственно только два.

    unsigned int aP_depack(const void *source, void *destination);
     
  6. Wolfgang

    Wolfgang New Member

    Blog Posts:
    0
    Joined:
    May 11, 2005
    Messages:
    82
    Location:
    Russia
    спасибо, Dr.Golova, а нет сведений, как он длину входного буфера определяет и чему на выходе равна длина выходного? Ну или хоть каке-то данные
     
  7. Dr.Golova

    Dr.Golova New Member

    Blog Posts:
    0
    Joined:
    Sep 7, 2002
    Messages:
    348
    В данном случае - никак :) Еще раз повторюсь что длину source ему знать ненадо, в потоке закодирован признак коца потока, на котом он останавливает распаковку, а destination он считает достаточного размера (эта забота того кто вызывает функцию распаковки). Этот вариант распаковщика модифицирован и эта инфа нигде не используется. На самом деле readed/written определяется разницей esi/edi до выполнения и после (несложно заметить что в esi хранится указатель source, а в edi - destination). Точный размер наверняка можно узнать раньше, там где выделяется память под destination буфер, или сделать streamed версию распаковщика, чтобы он сам реаллочил память по мере необходимости.
     
  8. bogrus

    bogrus Active Member

    Blog Posts:
    0
    Joined:
    Oct 24, 2003
    Messages:
    1,338
    Location:
    ukraine




    PCShrink наверное его юзает? бо тоже такой код встречается
     
  9. Wolfgang

    Wolfgang New Member

    Blog Posts:
    0
    Joined:
    May 11, 2005
    Messages:
    82
    Location:
    Russia
    bogrus, а как ты так быстро определяешь, откуда алгоритм? :) своя подборка сигнатур есть?
     
  10. bogrus

    bogrus Active Member

    Blog Posts:
    0
    Joined:
    Oct 24, 2003
    Messages:
    1,338
    Location:
    ukraine




    Конечно :)) в гугле набрал константу, вот тебе и своя подборка %)



    Это просто быстро, а вообще все популярные .lib .obj можно в один каталог собирать, если есть екзешник то можно в ollydbg их накатить, он покажет совпадения, или в IDA
     
  11. Dr.Golova

    Dr.Golova New Member

    Blog Posts:
    0
    Joined:
    Sep 7, 2002
    Messages:
    348
    > PCShrink наверное его юзает?

    Да, юзает. aplib вообще юзает половина пакеров :)