Cel     : PACKER v1.20.0
URL     : http://www.packer.topnet.pl/
Opis    : Program do obslugi roznych formatow archiwow
Tools   : W32dsm, SI(www.crackpltools.prv.pl)

O ile program sam w sobie nie jest zbyt ciekawy to zainteresowala
mnie procka sprawdzajaca poprawnosc rejestracji a wiec do dziela.

Pierwsze spojrzenie w kod programu i widac, ze jest to VisualBasic,
dodatkowo ver 6 (korzysta z MSVBVM60.DLL), oki w About mamy mozliwosc
wybrania opcji "Rejestracja", program prosi nas o podanie sciezki do
pliku klucza PACKER.REG, tworzymy jakis pusty plik PACKER.REG i
klikamy na "Rejestracja", wybieramy nasz plik i program wywala nam
box-a z textem:

"Problem z potwierdzeniem autentycznoci rejestracji"

czyli teoretycznie mamy jakis punkt zaczepny, odpalamy W32dsm(versje
obslugujaca progi skompilowane w VB), otwieramy naszego glownego exeka
chwila czekania i mamy deadlisting, w text ref szukamy textu "Problem
z potwierdzeniem...":

:00445282 E9AA350000    jmp 00448831
:00445287 B804000280    mov eax, 80020004
:0044528C BE0A000000    mov esi, 0000000A
:00445291 898540FFFFFF  mov dword ptr [ebp+FFFFFF40], eax
:00445297 89B538FFFFFF  mov dword ptr [ebp+FFFFFF38], esi
:0044529D 898550FFFFFF  mov dword ptr [ebp+FFFFFF50], eax
:004452A3 89B548FFFFFF  mov dword ptr [ebp+FFFFFF48], esi
:004452A9 898560FFFFFF  mov dword ptr [ebp+FFFFFF60], eax
:004452AF 89B558FFFFFF  mov dword ptr [ebp+FFFFFF58], esi

* Possible StringData Ref from Code Obj ->"Problem przy odczycie ustawie"
                                  |
:004452B5 683CA84100    push 0041A83C

Nie ma zadnego odwolania do tego fragmentu kodu, co wskazuje na to,
ze ten fragment kodu zostal wywolany przez jakas debilna forme call-a
badz jmp-a ktora wyglada np. call [edx*4+eax] wskutek czego deasembler
nie jest w stanie przeanalizowac dokad taki call prowadzi.Ale nie
zalamujmy rak, jesli do naszego fragmentu kodu prowadzi call mamy
dosyc prosta sprawe, call odklada na stosie adres powrotu czyli
praktycznie jestesmy w stanie okreslic skad nastapilo wywolanie calla,
jesli to jmp przekierowal nas do tego fragmentu kodu to sprawa troche
inaczej wyglada...oki mozna tak jak napisalem wyzej ale mozna tez
troche inaczej, program pobiera nazwe pliku poprzez standardowy dialog
wywolywany przez funkcje biblioteki COMDLG32.DLL, GetOpenFileNameA,
funkcja ta zwraca nam wartosci w zaleznosci czy wybralismy z listy
jakis plik, jesli wybralismy plik sprawdzane jest czy ten plik istnieje
a tego dokonuje popularna funkcja CreateFileA, sam zrobilem tak, zanim
wybralem plik zalozylem bpx CreateFileA i potem tracowalem F12 az do
momentu gdy znalazlem sie w kodzie PACKER.EXE, wyladowalem w:

* Reference To: MSVBVM60.__vbaStrMove, Ord:0000h
                                  |
:004B64F4 FF1570124000  Call dword ptr [00401270]
:004B64FA 8D4DE4        lea ecx, dword ptr [ebp-1C]

* Reference To: MSVBVM60.__vbaFreeObj, Ord:0000h
                                  |
:004B64FD FF1598124000  Call dword ptr [00401298]

* Reference To: MSVBVM60.rtcDoEvents, Ord:0256h
                                  |
:004B6503 FF15AC104000  Call dword ptr [004010AC]
:004B6509 8B4DE8        mov ecx, dword ptr [ebp-18]
:004B650C 51            push ecx
:004B650D 68305B4100    push 00415B30

* Reference To: MSVBVM60.__vbaStrCmp, Ord:0000h
                                  |
:004B6512 FF15EC104000  Call dword ptr [004010EC]
:004B6518 85C0          test eax, eax
:004B651A 0F84B2010000  je 004B66D2
:004B6520 8B4DE8        mov ecx, dword ptr [ebp-18]
:004B6523 8B16          mov edx, dword ptr [esi]
:004B6525 8D45B0        lea eax, dword ptr [ebp-50]
:004B6528 50            push eax
:004B6529 51            push ecx
:004B652A 56            push esi
>004B652B FF9244070000  call dword ptr [edx+00000744]
:004B6531 8B45B0        mov eax, dword ptr [ebp-50]
:004B6534 B90A000000    mov ecx, 0000000A
:004B6539 3BC3          cmp eax, ebx

Najwazniejsza okazala sie procka wywolywana pod 004B652B po F8 ladujemy
w bardzo ciekawym kawalku kodu:

:004B7C4A 50            push eax        <-- nazwa pliku PACKER.REG
:004B7C4B 6AFF          push FFFFFFFF
:004B7C4D 6A01          push 00000001

* Reference To: MSVBVM60.__vbaFileOpen, Ord:0000h
                                  |
:004B7C4F FF15E0114000  Call dword ptr [004011E0]
:004B7C55 8D55B4        lea edx, dword ptr [ebp-4C]
:004B7C58 52            push edx
:004B7C59 8BCF          mov ecx, edi
:004B7C5B FFD6          call esi
:004B7C5D 50            push eax
:004B7C5E 68A01E4200    push 00421EA0

* Reference To: MSVBVM60.__vbaInputFile, Ord:0000h
                                  |
:004B7C63 8B1D70114000  mov ebx, dword ptr [00401170]
:004B7C69 FFD3          call ebx
:004B7C6B 83C40C        add esp, 0000000C
:004B7C6E 8D45B8        lea eax, dword ptr [ebp-48]
:004B7C71 50            push eax
:004B7C72 8BCF          mov ecx, edi
:004B7C74 FFD6          call esi
:004B7C76 50            push eax
:004B7C77 68A01E4200    push 00421EA0
:004B7C7C FFD3          call ebx
:004B7C7E 83C40C        add esp, 0000000C
:004B7C81 8D4DA0        lea ecx, dword ptr [ebp-60]
:004B7C84 51            push ecx
:004B7C85 8BCF          mov ecx, edi
:004B7C87 FFD6          call esi
:004B7C89 50            push eax
:004B7C8A 68A01E4200    push 00421EA0
:004B7C8F FFD3          call ebx
:004B7C91 83C40C        add esp, 0000000C
:004B7C94 8D55DC        lea edx, dword ptr [ebp-24]
:004B7C97 52            push edx
:004B7C98 8BCF          mov ecx, edi
:004B7C9A FFD6          call esi
:004B7C9C 50            push eax
:004B7C9D 68A01E4200    push 00421EA0
:004B7CA2 FFD3          call ebx
:004B7CA4 83C40C        add esp, 0000000C
:004B7CA7 8D45BC        lea eax, dword ptr [ebp-44]
:004B7CAA 50            push eax
:004B7CAB 8BCF          mov ecx, edi
:004B7CAD FFD6          call esi
:004B7CAF 50            push eax
:004B7CB0 68A01E4200    push 00421EA0
:004B7CB5 FFD3          call ebx
:004B7CB7 83C40C        add esp, 0000000C
:004B7CBA 8BCF          mov ecx, edi
:004B7CBC FFD6          call esi
:004B7CBE 50            push eax

* Reference To: MSVBVM60.__vbaFileClose, Ord:0000h
                                  |
:004B7CBF FF15DC104000  Call dword ptr [004010DC]

Najpierw otwierany jest plik PACKER.REG potem funkcja InputFile jest
wywolywana 5 razy, jako, ze podstawy tego badziewnego "jezyka"
przerabialem ostatnio w budzie pamietam, ze VB ma taki glupi system
do odczytywania danych z plikow, mianowicie odczytac mozna z pliku
ale linia po linii(az do CR,LF albo EOF), mozna sie wiec domyslec
ze program odczytuje z naszego pliku PACKER.REG 5 linii textu, wiec
wpisujemy tam jakies dowolne 5 linii textu i zapuszczamy proga jeszcze
raz.Dalej w kodzie widzimy takie cosik:

:004B7CC5 8B4DB4        mov ecx, dword ptr [ebp-4C]
:004B7CC8 51            push ecx        <-- adres 1 linijki z pliku
:004B7CC9 68305B4100    push 00415B30   <-- 00h

* Reference To: MSVBVM60.__vbaStrCmp, Ord:0000h
                                  |
>004B7CCE FF15EC104000  Call dword ptr [004010EC]
:004B7CD4 85C0          test eax, eax
:004B7CD6 7518          jne 004B7CF0

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B7F05(C)
|
:004B7CD8 C745B000000000mov [ebp-50], 00000000

* Reference To: MSVBVM60.__vbaExitProc, Ord:0000h
                                  |
:004B7CDF FF1588104000  Call dword ptr [00401088]
:004B7CE5 9B            wait
:004B7CE6 6800804B00    push 004B8000
:004B7CEB E9E1020000    jmp 004B7FD1

Pod 004B7CCE sprawdzana jest pierwsza linijka z pliku rejestracyjnego
czy czasem nie jest pusta, jesli jest pusta wywolywana jest funkcja
__vbaExitProc kotrej nazwa niezbyt mi sie podoba ;), ok jesli cos tam
wpisalismy ladujemy:

:004B7CF0 BF01000000    mov edi, 00000001
:004B7CF5 33DB          xor ebx, ebx
:004B7CF7 895DC0        mov dword ptr [ebp-40], ebx
:004B7CFA 895DC4        mov dword ptr [ebp-3C], ebx
:004B7CFD 8B55B4        mov edx, dword ptr [ebp-4C]
:004B7D00 52            push edx

* Reference To: MSVBVM60.__vbaLenBstr, Ord:0000h
                                  |
:004B7D01 FF1524104000  Call dword ptr [00401024]
:004B7D07 8BC8          mov ecx, eax
:004B7D09 2BCF          sub ecx, edi
:004B7D0B 0F8011030000  jo 004B8022
:004B7D11 FFD6          call esi
:004B7D13 8945AC        mov dword ptr [ebp-54], eax
:004B7D16 8B55B4        mov edx, dword ptr [ebp-4C]
:004B7D19 8D4DA8        lea ecx, dword ptr [ebp-58]

* Reference To: MSVBVM60.__vbaStrCopy, Ord:0000h
                                  |
:004B7D1C FF1504124000  Call dword ptr [00401204]

* Reference To: MSVBVM60.__vbaStrMove, Ord:0000h
                                  |
:004B7D22 8B3570124000  mov esi, dword ptr [00401270]


Funkcja __vbaLenBstr zwraca rozmiar w bajtach textu z 1 linijki pliku
rej. aby uzyc jej w tej pieknej petli:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B7DC8(U)
|
:004B7D28 663B5DAC      cmp bx, word ptr [ebp-54] <-- bx trzyma licznik
:004B7D2C 0F8F9B000000  jg 004B7DCD
:004B7D32 0FBFC7        movsx eax, di
:004B7D35 50            push eax
:004B7D36 8B4DA8        mov ecx, dword ptr [ebp-58]
:004B7D39 51            push ecx

* Reference To: MSVBVM60.rtcLeftCharBstr, Ord:0268h
                                  |
:004B7D3A FF1554124000  Call dword ptr [00401254]
:004B7D40 8BD0          mov edx, eax
:004B7D42 8D4D94        lea ecx, dword ptr [ebp-6C]
:004B7D45 FFD6          call esi
:004B7D47 8B5594        mov edx, dword ptr [ebp-6C]
:004B7D4A C7459400000000mov [ebp-6C], 00000000
:004B7D51 6A01          push 00000001
:004B7D53 8D4D98        lea ecx, dword ptr [ebp-68]
:004B7D56 FFD6          call esi
:004B7D58 50            push eax

* Reference To: MSVBVM60.rtcRightCharBstr, Ord:026Ah
                                  |
:004B7D59 FF1574124000  Call dword ptr [00401274]
:004B7D5F 8BD0          mov edx, eax
:004B7D61 8D4DC8        lea ecx, dword ptr [ebp-38]
:004B7D64 FFD6          call esi
:004B7D66 8D5594        lea edx, dword ptr [ebp-6C]
:004B7D69 52            push edx
:004B7D6A 8D4598        lea eax, dword ptr [ebp-68]
:004B7D6D 50            push eax
:004B7D6E 6A02          push 00000002

* Reference To: MSVBVM60.__vbaFreeStrList, Ord:0000h
                                  |
:004B7D70 FF1510124000  Call dword ptr [00401210]
:004B7D76 83C40C        add esp, 0000000C
:004B7D79 8B4DC8        mov ecx, dword ptr [ebp-38]
:004B7D7C 51            push ecx

* Reference To: MSVBVM60.rtcAnsiValueBstr, Ord:0204h
                                  |
:004B7D7D FF153C104000  Call dword ptr [0040103C]
:004B7D83 0FBFD0        movsx edx, ax                   <-- kolejne bajty 1 linijki rej.
:004B7D86 899550FFFFFF  mov dword ptr [ebp+FFFFFF50], edx<-- zapisz do tymczasowgo bufora
                                                        aby mozna bylo odczytac to do rejestru
                                                        kooprocesora
:004B7D8C DB8550FFFFFF  fild dword ptr [ebp+FFFFFF50]   <-- zaladuj kolejny bajt do st0
:004B7D92 DD9D48FFFFFF  fstp qword ptr [ebp+FFFFFF48]   <-- zapisz bajt z st0 do bufora
:004B7D98 DD8548FFFFFF  fld qword ptr [ebp+FFFFFF48]    <-- znowu zaladuj ten sam bajt(zabawa w kotka i myszke)
:004B7D9E DC45C0        fadd qword ptr [ebp-40]         <-- dodaj do bajtu wartosc pod [ebp-40]
:004B7DA1 DD5DC0        fstp qword ptr [ebp-40]         <-- zapisz sume pod [ebp-40]
:004B7DA4 DFE0          fstsw ax
:004B7DA6 A80D          test al, 0D
:004B7DA8 0F856F020000  jne 004B801D
:004B7DAE 6683C701      add di, 0001
:004B7DB2 0F806A020000  jo 004B8022
:004B7DB8 B801000000    mov eax, 00000001
:004B7DBD 6603C3        add ax, bx
:004B7DC0 0F805C020000  jo 004B8022
:004B7DC6 8BD8          mov ebx, eax
:004B7DC8 E95BFFFFFF    jmp 004B7D28

Tyle kodu a mozna to strescic tak, petla ta sumuje wszystkie bajty
textu z 1 linijki pliku rej. tyle, ze operacje dodawania i koncowy
wynik zapisany jest w rejestrze kooprocesora st0(w SI wystarczy
wpisac WF zeby zobaczyc co kryje sie z rejestrach kooprocesora),
nastepnie:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B7D2C(C)
|
:004B7DCD DD45C0        fld qword ptr [ebp-40]          <-- pamietacie tu jest suma
:004B7DD0 DC0D30204000  fmul qword ptr [00402030]       <-- wynik=suma*magiczna wartosc
:004B7DD6 DC0D28204000  fmul qword ptr [00402028]       <-- wynik*2 magiczna wartosc
:004B7DDC DC0D20204000  fmul qword ptr [00402020]       <-- wynik*3 magiczna wartosc
:004B7DE2 DC2518204000  fsub qword ptr [00402018]       <-- wynik-4 magiczna wartosc
:004B7DE8 DD5DC0        fstp qword ptr [ebp-40]
:004B7DEB DFE0          fstsw ax
:004B7DED A80D          test al, 0D
:004B7DEF 0F8528020000  jne 004B801D
:004B7DF5 8B45B4        mov eax, dword ptr [ebp-4C]
:004B7DF8 50            push eax

Dzialanie tego fragmentu wyglada tak, do st0 ladowana jest suma bajtow
wyliczona we wczesniejszej petli, nastepnie suma jest mnozona kolejno
przez 3 "magiczne" wartosci, zeby zobaczyc jakie to wartosci w SoftIce
przelaczamy sie w tryb ogladania wartosci float EL (EditLong), klikamy na
adresie prawym przyciskiem myszy i wybieramy z menu "Display", zobaczymy,
ze sa tam wartosci 1975,6,8,1998(chyba nie w tej kolejnosci ale jakie to
ma znaczenie), w C++ moza by to przedstawic (cala procke z liczeniem sumy):

for (int t=0;t<strlen(name);t++)
suma+=name[t];

suma=(suma*1975*8*6)-1998;

To nie wszystko ale dopiero poczatek wiec lookamy na to dalej a dalej
jest:

:004B7DF5 8B45B4        mov eax, dword ptr [ebp-4C]
:004B7DF8 50            push eax

* Reference To: MSVBVM60.__vbaLenBstr, Ord:0000h
                                  |
:004B7DF9 8B3D24104000  mov edi, dword ptr [00401024]
:004B7DFF FFD7          call edi        <-- dlugosc textu w 1 linijce
:004B7E01 8BD8          mov ebx, eax    <-- do ebx
:004B7E03 8B4DB8        mov ecx, dword ptr [ebp-48]
:004B7E06 51            push ecx
:004B7E07 FFD7          call edi        <-- dlugosc textu w 2 linijce
:004B7E09 03D8          add ebx, eax    <-- dodaj do ebx
:004B7E0B 0F8011020000  jo 004B8022     <-- jesli przepelnienie wyskocz z procki
                                        ale to raczej nie grozi
:004B7E11 8B55A0        mov edx, dword ptr [ebp-60]
:004B7E14 52            push edx
:004B7E15 FFD7          call edi        <-- dlugosc textu w 3 linijce
:004B7E17 03D8          add ebx, eax    <-- dodaj do ebx
:004B7E19 0F8003020000  jo 004B8022
:004B7E1F 8B45DC        mov eax, dword ptr [ebp-24]
:004B7E22 50            push eax
:004B7E23 FFD7          call edi        <-- dlugosc textu w 4 linijce
:004B7E25 03D8          add ebx, eax    <-- dodaj do ebx
:004B7E27 0F80F5010000  jo 004B8022     <-- jesli przepelnienie pomin
                                        dekrementacje

:004B7E2D 83EB01        sub ebx, 1      <-- zmniejsz laczna dlugosc ciagow o 1
:004B7E30 0F80EC010000  jo 004B8022

Do rejestru edi wpisywany jest adres procki __vbaLenBstr ktora zlicza
ilosc bajtow w zadanym ciagu textowym(cos ala strlen), nastepnie procka
ta jest wykorzystana do zliczenia wszystkich bajtow z pierwszych 4
linijek pliku rejestracyjnego(bez znakow konca linii), laczna suma
jest zapisana w rejestrze ebx i ostatecznie zmniejszana o 1.Sa tam
tez sprawdzenia przed przepelnieniem(jo - JumpIfOverflow) te jmpy
prowadza do:

* Reference To: MSVBVM60.__vbaErrorOverflow, Ord:0000h
                                  |
:004B8022 FF15D8114000  Call dword ptr [004011D8]
:004B8028 90            nop

aby zobaczyc co sie stanie wystarczy zmienic stan flagi OF na ustawiony(r fl o)
i puscic proga, ale jest to tylko takie male zabezpieczenie i nie ma
praktycznie znaczenia...Dalej:

:004B7E36 899D44FFFFFF  mov dword ptr [ebp+FFFFFF44], ebx
:004B7E3C DB8544FFFFFF  fild dword ptr [ebp+FFFFFF44]
:004B7E42 DD5DD4        fstp qword ptr [ebp-2C]
:004B7E45 8B4DD8        mov ecx, dword ptr [ebp-28]
:004B7E48 51            push ecx
:004B7E49 8B55D4        mov edx, dword ptr [ebp-2C]
:004B7E4C 52            push edx

* Reference To: MSVBVM60.rtcSqr, Ord:0266h
                                  |
:004B7E4D FF1550124000  Call dword ptr [00401250]

* Reference To: MSVBVM60.__vbaFpI2, Ord:0000h
                                  |
:004B7E53 FF154C124000  Call dword ptr [0040124C]
:004B7E59 0FBFC0        movsx eax, ax

Suma bajtow z rejestru ebx zapisywana jest do tymczasowego bufora skad
jest odczytywana do rejestru st0 a z st0 jest zapisywana w formacie
double pod [ebp-2C].Kolejno potem wywolywana jest procedura rtcSqr
ktora przywodzi na mysl pierwiastek kwadratowy i nie mylimy sie gdyz
wew. tej funkcji wykonywana jest instrukcji fsqrt ktora liczy pierwiastek
kwadratowy z wartosci zapisanej w rejestrze st0 i tam tez zapisuje wynik,
zaraz po rtcSqr wywolywana jest funkcja __vbaFpI2 ktora zaokragla wynik
pierwiastka kwadratowego i zwraca wynik juz w rejestrze eax.Nastepnie
wynik jest ponownie ladowany do rejestru kooprocesora:

:004B7E5C 898540FFFFFF  mov dword ptr [ebp+FFFFFF40], eax
:004B7E62 DB8540FFFFFF  fild dword ptr [ebp+FFFFFF40]
:004B7E68 DD9D38FFFFFF  fstp qword ptr [ebp+FFFFFF38]
:004B7E6E DD45C0        fld qword ptr [ebp-40]
:004B7E71 833D00904C0000cmp dword ptr [004C9000], 00000000
:004B7E78 7508          jne 004B7E82
>004B7E7A DCB538FFFFFF  fdiv qword ptr [ebp+FFFFFF38]
:004B7E80 EB11          jmp 004B7E93

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B7E78(C)
|
:004B7E82 FFB53CFFFFFF  push dword ptr [ebp+FFFFFF3C]
:004B7E88 FFB538FFFFFF  push dword ptr [ebp+FFFFFF38]

* Reference To: MSVBVM60._adj_fdiv_m64, Ord:0000h
                                  |
:004B7E8E E8B1DAF4FF    Call 00405944

Jesli pod dword'em 4C9000 jest zapisane 0(a nie jest) wyladujemy w
procedurze wykonujacej dzielenie na 64bitowych wartosciach, inaczej
nastapi wykonanie instrukcji pod 004B7E7A czyli dzielenie, pobrana
zostaje suma bajtow 1 linijki textu spod [ebp-40] i jest dzielona przez
zapisany pod [ebp+FFFFFF38] wynik pierwiastka kwadratowego z sumy bajtow
4 linijek textu w pliku rejestracyjnym.Nastepnie:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B7E80(U)
|
:004B7E93 DD45D4        fld qword ptr [ebp-2C]
:004B7E96 DC0D10204000  fmul qword ptr [00402010]
:004B7E9C DEC1          faddp st(1), st(0)
:004B7E9E DD5DC0        fstp qword ptr [ebp-40]
:004B7EA1 DFE0          fstsw ax
:004B7EA3 A80D          test al, 0D
:004B7EA5 0F8572010000  jne 004B801D
:004B7EAB DD45C0        fld qword ptr [ebp-40]

Pod [ebp-2C] znajduje sie surowa(przed sqrt) suma bajtow 4 linijek
textu wczesniej zapisana, jest ona mnozona przez magiczna wartosc
spod adresu 00402010, d 00402010 i widzimy 666, nastepnie wykonywana
jest instrukcja faddp ktora dodaje do rejestru st0 rejestr st1 i
pop stosu kooprocesora.Po tych operacjach wartosc z st0 zostaje
przekonwertowana na stringa i porownana z 5 linijka textu w pliku
rejestracyjnym(ale niespodzianka co? hehe):

:004B7EF5 8B45BC        mov eax, dword ptr [ebp-44]
:004B7EF8 50            push eax
:004B7EF9 8B4DA8        mov ecx, dword ptr [ebp-58]
:004B7EFC 51            push ecx

* Reference To: MSVBVM60.__vbaStrCmp, Ord:0000h
                                  |
:004B7EFD FF15EC104000  Call dword ptr [004010EC]
:004B7F03 85C0          test eax, eax
:004B7F05 0F85CDFDFFFF  jne 004B7CD8

Aby zrobic sobie poprawny plik kluczyk wystarczy spisac sobie ta
5 poprawna linijke i cieszyc patrzalki zarejestrowanym progiem ale
naszym zadaniem jest zrobienie keygena(bo nie kazdy lubi miec
zarejestrowanego proga na jakiegos barta ;), zrobmy wiec male
strzeszczenie algorytmu:

1.Liczona jest suma bajtow 1 linijki textu i mnozona przez magiczne
wartosci.
2.Liczona jest laczna dlugosc 4 linijek textu(bez znakow konca linii)
3.Z lacznej dlugosci 4 linijek textu wyciagany jest pierwiastek kwadratowy
4.Suma 1 linijki po przemnozeniu przez magiczne wartosci jest dzielona przez
pierwiastek kwadratowy z lacznej dlugosci 4 linijek.
5.Do tego wyniku dodawany jest wynik mnozenia lacznej dlugosci 4
linijek textu przez 666

Program po zarejestrowaniu poprosi na o restart proga i po tej
operacji plik klucz mozemy skasowac gdyz ustawienia zostaly zachowane
do rejestru win pod kluczem:

HKEY_CURRENT_USER\Software\VB and VBA Program Settings\PACKER\Rejestracja

bart^CrackPl
cryogen@poland.com
cryogen@box43.pl
www.cryogen.prv.pl

begin 644 cp_Packer120.zip
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
F``!P86-K97)?9V5N+G)E<U!+!08``````P`#`+$```"<#0``````
`
end
sum -r/size 2136/3683
