Skocz do zawartości

ktos poznaje to algo?


Recommended Posts

pdp. kod ponizej to procka dekompresujaca dane, zaraz ja przekompiluje i sprawdze, ale warto by wiedziec, czy to jest custom, czy implementacja jakiegos znanego algosa?

cseg01:0005905C decompress      proc near               ; CODE XREF: sub_117F4+333p
cseg01:0005905C                                         ; sub_117F4+358p ...
cseg01:0005905C
cseg01:0005905C compressed      = dword ptr  8
cseg01:0005905C decompressed    = dword ptr  0Ch
cseg01:0005905C
cseg01:0005905C                 push    ebp
cseg01:0005905D                 mov     ebp, esp
cseg01:0005905F                 pusha
cseg01:00059060                 mov     eax, [ebp+decompressed]
cseg01:00059063                 mov     ds:dword_199F20, eax
cseg01:00059068                 mov     eax, [ebp+compressed]
cseg01:0005906B                 mov     ds:dword_199F24, eax
cseg01:00059070                 xor     eax, eax
cseg01:00059072                 mov     ds:dword_199F0C, eax
cseg01:00059077                 mov     ds:dword_199F08, eax
cseg01:0005907C                 mov     ds:dword_199F28, eax
cseg01:00059081                 mov     ds:dword_199F10, 9
cseg01:0005908B                 mov     ds:word_199F14, 200h
cseg01:00059094                 mov     ds:word_199F1C, 102h
cseg01:0005909D
cseg01:0005909D loc_5909D:                              ; CODE XREF: decompress+134j
cseg01:0005909D                                         ; decompress:loc_592B2j
cseg01:0005909D                 mov     eax, ds:dword_199F0C
cseg01:000590A2                 add     eax, ds:dword_199F10
cseg01:000590A8                 xchg    eax, ds:dword_199F0C
cseg01:000590AE                 mov     ecx, 8
cseg01:000590B3                 xor     edx, edx
cseg01:000590B5                 div     ecx
cseg01:000590B7                 add     eax, ds:dword_199F20
cseg01:000590BD                 mov     esi, eax
cseg01:000590BF                 lodsw
cseg01:000590C1                 mov     bx, ax
cseg01:000590C4                 lodsb
cseg01:000590C5                 mov     ecx, edx
cseg01:000590C7                 jcxz    loc_590D1
cseg01:000590CA
cseg01:000590CA loc_590CA:                              ; CODE XREF: decompress+73j
cseg01:000590CA                 shr     al, 1
cseg01:000590CC                 rcr     bx, 1
cseg01:000590CF                 loop    loc_590CA
cseg01:000590D1
cseg01:000590D1 loc_590D1:                              ; CODE XREF: decompress+6Bj
cseg01:000590D1                 mov     ax, bx
cseg01:000590D4                 xor     ebx, ebx
cseg01:000590D6                 mov     ebx, ds:dword_199F10
cseg01:000590DC                 sub     ebx, 9
cseg01:000590DF                 shl     ebx, 1
cseg01:000590E1                 and     ax, ds:word_199F00[ebx]
cseg01:000590E8                 cmp     ax, 100h
cseg01:000590EC                 jz      loc_592B7
cseg01:000590F2                 cmp     ax, 101h
cseg01:000590F6                 jnz     loc_59195
cseg01:000590FC                 mov     ds:dword_199F10, 9
cseg01:00059106                 mov     ds:word_199F14, 200h
cseg01:0005910F                 mov     ds:word_199F1C, 102h
cseg01:00059118                 mov     eax, ds:dword_199F0C
cseg01:0005911D                 add     eax, ds:dword_199F10
cseg01:00059123                 xchg    eax, ds:dword_199F0C
cseg01:00059129                 mov     ecx, 8
cseg01:0005912E                 xor     edx, edx
cseg01:00059130                 div     ecx
cseg01:00059132                 add     eax, ds:dword_199F20
cseg01:00059138                 mov     esi, eax
cseg01:0005913A                 lodsw
cseg01:0005913C                 mov     bx, ax
cseg01:0005913F                 lodsb
cseg01:00059140                 mov     ecx, edx
cseg01:00059142                 jcxz    loc_5914C
cseg01:00059145
cseg01:00059145 loc_59145:                              ; CODE XREF: decompress+EEj
cseg01:00059145                 shr     al, 1
cseg01:00059147                 rcr     bx, 1
cseg01:0005914A                 loop    loc_59145
cseg01:0005914C
cseg01:0005914C loc_5914C:                              ; CODE XREF: decompress+E6j
cseg01:0005914C                 mov     ax, bx
cseg01:0005914F                 xor     ebx, ebx
cseg01:00059151                 mov     ebx, ds:dword_199F10
cseg01:00059157                 sub     ebx, 9
cseg01:0005915A                 shl     ebx, 1
cseg01:0005915C                 and     ax, ds:word_199F00[ebx]
cseg01:00059163                 mov     ds:word_199F18, ax
cseg01:00059169                 mov     ds:word_199F16, ax
cseg01:0005916F                 mov     ds:byte_199F1E, al
cseg01:00059174                 mov     ds:byte_199F1F, al
cseg01:00059179                 mov     edi, ds:dword_199F28
cseg01:0005917F                 add     edi, ds:dword_199F24
cseg01:00059185                 ror     al, 3
cseg01:00059188                 mov     [edi], al
cseg01:0005918A                 inc     ds:dword_199F28
cseg01:00059190                 jmp     loc_5909D
cseg01:00059195 ; ---------------------------------------------------------------------------
cseg01:00059195
cseg01:00059195 loc_59195:                              ; CODE XREF: decompress+9Aj
cseg01:00059195                 mov     ds:word_199F18, ax
cseg01:0005919B                 mov     ds:word_199F1A, ax
cseg01:000591A1                 cmp     ax, ds:word_199F1C
cseg01:000591A8                 jl      short loc_591C6
cseg01:000591AA                 nop
cseg01:000591AB                 nop
cseg01:000591AC                 nop
cseg01:000591AD                 nop
cseg01:000591AE                 mov     ax, ds:word_199F16
cseg01:000591B4                 mov     ds:word_199F18, ax
cseg01:000591BA                 mov     al, ds:byte_199F1F
cseg01:000591BF                 push    eax
cseg01:000591C0                 inc     ds:dword_199F08
cseg01:000591C6
cseg01:000591C6 loc_591C6:                              ; CODE XREF: decompress+14Cj
cseg01:000591C6                                         ; decompress+1A7j
cseg01:000591C6                 cmp     ds:word_199F18, 0FFh
cseg01:000591CF                 jle     short loc_59205
cseg01:000591D1                 nop
cseg01:000591D2                 nop
cseg01:000591D3                 nop
cseg01:000591D4                 nop
cseg01:000591D5                 mov     bx, ds:word_199F18
cseg01:000591DC                 mov     cx, bx
cseg01:000591DF                 xor     ebx, ebx
cseg01:000591E1                 mov     bx, cx
cseg01:000591E4                 shl     bx, 1
cseg01:000591E7                 add     bx, cx
cseg01:000591EA                 add     ebx, offset unk_196F00
cseg01:000591F0                 mov     al, [ebx+2]
cseg01:000591F3                 push    eax
cseg01:000591F4                 inc     ds:dword_199F08
cseg01:000591FA                 mov     ax, [ebx]
cseg01:000591FD                 mov     ds:word_199F18, ax
cseg01:00059203                 jmp     short loc_591C6
cseg01:00059205 ; ---------------------------------------------------------------------------
cseg01:00059205
cseg01:00059205 loc_59205:                              ; CODE XREF: decompress+173j
cseg01:00059205                 mov     ax, ds:word_199F18
cseg01:0005920B                 mov     ds:byte_199F1F, al
cseg01:00059210                 mov     ds:byte_199F1E, al
cseg01:00059215                 push    eax
cseg01:00059216                 inc     ds:dword_199F08
cseg01:0005921C                 mov     ecx, ds:dword_199F08
cseg01:00059222                 jcxz    loc_5923F
cseg01:00059225
cseg01:00059225 loc_59225:                              ; CODE XREF: decompress+1E1j
cseg01:00059225                 pop     eax
cseg01:00059226                 mov     edi, ds:dword_199F28
cseg01:0005922C                 add     edi, ds:dword_199F24
cseg01:00059232                 ror     al, 3
cseg01:00059235                 mov     [edi], al
cseg01:00059237                 inc     ds:dword_199F28
cseg01:0005923D                 loop    loc_59225
cseg01:0005923F
cseg01:0005923F loc_5923F:                              ; CODE XREF: decompress+1C6j
cseg01:0005923F                 mov     ds:dword_199F08, ecx
cseg01:00059245                 mov     bx, ds:word_199F1C
cseg01:0005924C                 mov     cx, bx
cseg01:0005924F                 xor     ebx, ebx
cseg01:00059251                 mov     bx, cx
cseg01:00059254                 shl     bx, 1
cseg01:00059257                 add     bx, cx
cseg01:0005925A                 add     ebx, offset unk_196F00
cseg01:00059260                 mov     al, ds:byte_199F1E
cseg01:00059265                 mov     [ebx+2], al
cseg01:00059268                 mov     ax, ds:word_199F16
cseg01:0005926E                 mov     [ebx], ax
cseg01:00059271                 inc     ds:word_199F1C
cseg01:00059278                 mov     ax, ds:word_199F1A
cseg01:0005927E                 mov     ds:word_199F16, ax
cseg01:00059284                 mov     bx, ds:word_199F1C
cseg01:0005928B                 cmp     bx, ds:word_199F14
cseg01:00059292                 jl      short loc_592B2
cseg01:00059294                 nop
cseg01:00059295                 nop
cseg01:00059296                 nop
cseg01:00059297                 nop
cseg01:00059298                 cmp     ds:dword_199F10, 0Ch
cseg01:0005929F                 jz      short loc_592B2
cseg01:000592A1                 nop
cseg01:000592A2                 nop
cseg01:000592A3                 nop
cseg01:000592A4                 nop
cseg01:000592A5                 inc     ds:dword_199F10
cseg01:000592AB                 shl     ds:word_199F14, 1
cseg01:000592B2
cseg01:000592B2 loc_592B2:                              ; CODE XREF: decompress+236j
cseg01:000592B2                                         ; decompress+243j
cseg01:000592B2                 jmp     loc_5909D
cseg01:000592B7 ; ---------------------------------------------------------------------------
cseg01:000592B7
cseg01:000592B7 loc_592B7:                              ; CODE XREF: decompress+90j
cseg01:000592B7                 mov     ecx, ds:dword_199F08
cseg01:000592BD                 jcxz    loc_592C3
cseg01:000592C0
cseg01:000592C0 loc_592C0:                              ; CODE XREF: decompress+265j
cseg01:000592C0                 pop     eax
cseg01:000592C1                 loop    loc_592C0
cseg01:000592C3
cseg01:000592C3 loc_592C3:                              ; CODE XREF: decompress+261j
cseg01:000592C3                 popa
cseg01:000592C4                 pop     ebp
cseg01:000592C5                 retn    8
cseg01:000592C5 decompress      endp ; sp-analysis failed
Link do komentarza
Udostępnij na innych stronach

to musi byc cos bardzo starego, skoro uzywa jecxz (bo optymalizacja na rozmiar to to raczej nie jest), poza tym zewnetrzne referencje do danych nie pojawiaja sie praktycznie w popularnych algosach jak aplib, nrv, ucl, hlz, poszukalem troche i kod wyglada podobnie do 16 bitowej wersji dekompresora LZ http://www.google.com/codesearch?hl=en&q=+rcr+bx,+1+show:hL6hCcTHTAU:XF-hQVUCFfY:a5JpsWPmUlc&sa=N&cd=4&ct=rc&cs_p=http://www.math.utah.edu/pub/misc/zoo-2-10-1.zip&cs_f=v2-10.1/lzd.asm podobne rozstawienie instrukcji, podobne petle, zewnetrzne dane oraz wartosci inicjalizacyjne, poza tym twoj kod wyglada jakby ktos na sile przerabial 16 bitowe zrodla

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...