Уважаемые знатоки алгоритмов, не скажете ли вы мне, что это за алгоритм такой? Паковщик или криптор? И откуда он берет длину буфера?
Это распаковщик aPLib, дэрэгой. А размер буфера ему не нужен, там есть стоп-конструкция после которой он останавливается, параметра соответственно только два. unsigned int aP_depack(const void *source, void *destination);
спасибо, Dr.Golova, а нет сведений, как он длину входного буфера определяет и чему на выходе равна длина выходного? Ну или хоть каке-то данные
В данном случае - никак Еще раз повторюсь что длину source ему знать ненадо, в потоке закодирован признак коца потока, на котом он останавливает распаковку, а destination он считает достаточного размера (эта забота того кто вызывает функцию распаковки). Этот вариант распаковщика модифицирован и эта инфа нигде не используется. На самом деле readed/written определяется разницей esi/edi до выполнения и после (несложно заметить что в esi хранится указатель source, а в edi - destination). Точный размер наверняка можно узнать раньше, там где выделяется память под destination буфер, или сделать streamed версию распаковщика, чтобы он сам реаллочил память по мере необходимости.
Конечно ) в гугле набрал константу, вот тебе и своя подборка %) Это просто быстро, а вообще все популярные .lib .obj можно в один каталог собирать, если есть екзешник то можно в ollydbg их накатить, он покажет совпадения, или в IDA