ged_ Napisano Maj 11, 2008 Zgłoś Udostępnij Napisano Maj 11, 2008 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Bartosz Wójcik Napisano Maj 11, 2008 Zgłoś Udostępnij Napisano Maj 11, 2008 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.