You are on page 1of 7

Hogyan t�rj�nk fel telep�t� programot?

avagy
"Az install script rejtelmei."

K�sz�tette: Lukundoo [HPA]


e-mail: Lukundoo@SoftHome.Net
web: http://welcome.to/hpa

Tartalomjegyz�k:
1. Mi iS az a telep�t� program?
2. Mi KELL hozz�?
3. HoGYAN kezdj�nk hozz�?
4. HoGYAN k�sz�ts�nk licensz sz�m gener�l� programot?

1. Mi iS az a telep�t� program?
-------------------------------
R�gen ha valaki programot �rt, akkor kellett hozz� k�sz�teni egy
telep�t� programot is , ami a programot feltelep�ti a felhaszn�l�
g�p�re, a sz�ks�ges be�ll�t�sokat elv�gzi , esetleg a be�ll�t�sok
elv�gz�se ut�n �jraind�tja a g�pet. Manaps�g m�r k�szen lehet
"v�s�rolni" olyan programo(ka)t, ami(k) elv�gzik a programoz� helyett
ezeket a dolgokat. Egyik legelterjedtebb ilyen program az "Install
Shield" n�ven fut� program , amit egyes programoz�si nyelvekhez
alapb�l telep�t�dik ( pl. Borland Delphi III. Professional, Inprise
term�kek). Term�szetesen ezt a programot is le lehet t�lteni az
InterNET-r�l. Kezdettben m�g csak t�m�r��teni lehetett a programokat,
�s az IS feltelep�tette ezeket a t�m�r�tett file -okat. De az �jabb
verzi�kat m�r egy bonyolultabb script nyelvvel l�tt�k el, teh�t a
telep�t� programot is lehet programozni . Ezzel a programoz�si
fel�lettel m�r egyszer� volt olyan telep�t� programot k�sz�teni, ami
csak adott jelsz� eset�n telep�ti fel a file-okat.

2. Mi kell hozz�?
-----------------
A mai felt�r�s�nkh�z sz�ks�ges egy nagyon hasznos programocska,amivel
ezeket a script - eket lehet visszafejteni , a neve "Windows
Installshield Decompiler", �s a k�sz�t�je NatzGUL / Sirax. Tov�bb�
sz�ks�g�nk lesz egy programra, ami ezzel a m�dszerrel van v�dve. A
v�laszt�som a " Performance ' 95 " nev� programra esett.

3. HoGYAN kezdj�nk hozz�?


-------------------------
A "Performance '95" nev� program let�lthet� a k�vetkez� c�mr�l :

http://www.bonamisoftware.com

A file neve: p95vXXX.zip ahol az XXX az aktu�lis verzi�sz�mot mutatja


. Miut�n kit�m�r�tett�k a file-okat, a k�vetkez� dolgokat tal�lhatjuk
meg:

DISK1.ID Ez a lemezek sz�m�t jelenti, nem gyakran haszn�lj�k.


_SETUP.LIB Ebben tal�lhat� az install�l�hoz sz�ks�ges DLL-ek.
DATA.Z Ebben vannak bet�m�r�tve a file-ok.
UNINST.EXE Ezzel lehet UNInstall�lni a telep�tett file-okat.
SETUP.EXE Ez a telep�t� program.
SETUP.ISS Ez t�k felesleges!
SETUP.PKG Ebben vannak elt�rolva a t�m�r�tett file-ok helye.
LICENSE.TXT Licensz sz�veg, nem kell!
SETUP.INS Ez kell nek�nk! Ebben van a SCRIPT program!
SUPP95.DLL Ez nem tudom mi�rt kell???
README.TXT Miel�tt telep�tj�k, olvassuk el. Nem kell!
_SETUP.DLL A telep�t� programnak kell.

Miut�n elind�tottuk a telep�t� programot, bej�n p�r ablak,ami �rtes�t


minket arr�l, hogy ez a program SHAREWARE, �s err�l ne feledkezz�nk
meg. Ezut�n a "Next" gombra nyomva bej�n a licenszfelt�telek ablaka,
ez se �rdekel senkit! Nyomjunk r� az "Accept" gombra. Ekkor bej�n egy
ablak, ahova be kell �rnunk a nev�nket , �n azt �rtam be, hogy:

Lukundoo,[HPA]

Miut�n ezzel is megvoln�nk, akkor j�n a sz�munkra �rdekes ablak, mert


a k�vetkez� ablakban bizony a licensz sz�munk be�r�s�t k�ri. Pufff!!!
H�t azt �gy fejb�l senkise tudja ugyeb�r. Jegyezz�k meg azt a sz�t,
ami az ablak fejl�c�ben van:

Enter License Information

Ez majd k�s�bb kell nek�nk! Most ink�bb l�pj�nk ki a programb�l, �s


ind�tsuk el a WISDEC nev� programot. A WISDEC program elindul�sa ut�n
kattintsunk r� a "File" men� "Open Script File" men�pontj�ra, �s
keress�k meg azt a helyet, ahova kit�m�r�tett�k a .ZIP �llom�nyt. Ha
megvagyunk, akkor felaj�nlja nek�nk a "Setup.ins" nev� �llom�nyt. Ha
megnyitjuk, akkor a program beolvassa a file-t a mem�ri�ba. Ezut�n r�
kell kattintani a "Decompile" men�, "Start..." men�pontj�ra, �s a
program sz�pen visszafejti nek�nk a SCRIPT-et. Ha k�szvan vele, akkor
kapunk valami ilyesmit:

0000020A: 0013 StrVar[000F] = "Copyright (c) BonAmi Software.......


0000025D: 0021 NumVar[000C] = 00000000
00000267: 0002 Disable (0000000C)
0000026E: 00B5 Call Function_0000_[LABEL_0045] ()
00000276: 0146 InstallationInfo ("BonAmi Software","Performan......
000002AF: 0124 StrVar[001E] = SRCDIR + "supp95.dll"

<LABEL_0001> REF: 000004C5


|
000002D0: 0002 Disable (00000032)

Ez nek�nk �gy t�k�letes. Most m�r nincs m�s h�tra, r� kell keresn�nk
arra hogy "Enter License Information".Kattintsunk r� az StrRef gombra
, �s ekkor megkapjuk a sztring referenci�kat. Meg is tal�ljuk,
�s r�kattintva odavisz minket, ahol ezt haszn�lja a program:

000004E6: 003B SetDialogTitle (00000005,"Enter License Information")


00000509: 0013 StrVar[000F] = ""

Itt vagyunk, ann�l a r�szn�l, ahol a program ellen�rzi, hogy milyen


sz�mot �t�tt�nk be. Most m�r csak ki kell elemezni,hogy mit is csin�l
a progi itt: el�sz�r l�ssuk a teljes programot, aki m�r foglalkozott
egy kicsit is a programoz�ssal,annak gyerekj�t�k lesz ezt megfejteni.
A sor alatt fogom magyar�zni mindig, hogy mit csin�l az aktu�lis sor:

000004E6: 003B SetDialogTitle (00000005,"Enter License Information")


Megadjuk, hogy mi legyen a felirata a dialogus ablaknak.

00000509: 0013 StrVar[000F] = ""


Ez egy �res string.

00000511: 0124 StrVar[000F] = StrVar[000F] + "Please enter your license number


below."
Ezeket a sztringv�ltoz�kat felt�ltj�k sz�veggel.

0000054D: 0124 StrVar[000F] = StrVar[000F] + "If you have not yet purchased a
license and you would like"
0000059A: 0124 StrVar[0020] = StrVar[000F] + " to evaluate the software, please
use: "
000005CC: 0124 StrVar[000F] = StrVar[0020] + "P95-EVAL-LICENSE"

00000612: 0128 IF (AskText (StrVar[000F],"P95-EVAL-LICENSE",StrVar[001A]) =


0000000C) THEN
00000632: 002C Goto (LABEL_0005)
00000633: 0000 ENDIF
Itt egy ellen�rz�s van, hogyha a be�t�tt sz�m "P95-EVAL-LICENSE",
akkor ugorjon a LABEL_005 -re. Ez minket nem �rdekel!

0000063F: 003B SetDialogTitle (00000005,"Enter Information")


Megadjuk, hogy mi legyen a felirata a dialogus ablaknak.

0000065A: 0021 NumVar[0008] = 00000001


00000664: 0021 NumVar[0007] = 00000001
Ennek a k�t v�ltoz�nak egyes �rt�ket adunk.

0000066E: 00DB StrToUpper (StrVar[001B],StrVar[001A])


Az StrVar[001B] -t bet�it, nagybet�kk� alak�tja.

00000676: 0013 StrVar[001A] = StrVar[001B]


0000068B: 0128 IF (GetByte (StrVar[001A],00000000) != 00000050) THEN
000006AB: 0021 NumVar[0007] = 00000000
000006AC: 0000 ENDIF
Itt j�n egy �rdekes r�sz: hogyha az StrVar[001A] nulladik karaktere
nem egyenl� "P"-vel, akkor a NumVar[0007] �rt�ke 0 lesz.

000006CA: 0128 IF (GetByte (StrVar[001A],00000001) != 00000039) THEN


000006EA: 0021 NumVar[0007] = 00000000
000006EB: 0000 ENDIF
Ugyan az mint az el�z�, csak itt az els� bet�nek "9"-nek kell lennie.

00000709: 0128 IF (GetByte (StrVar[001A],00000002) != 00000035) THEN


00000729: 0021 NumVar[0007] = 00000000
0000072A: 0000 ENDIF
M�sodik bet�nek "5"-nek kell lennie.

00000748: 0128 IF (GetByte (StrVar[001A],00000003) != 0000002D) THEN


00000768: 0021 NumVar[0007] = 00000000
00000769: 0000 ENDIF
Harmadik bet�nek "-" -nek kell lennie.

00000787: 0128 IF (GetByte (StrVar[001A],00000004) != 00000056) THEN


000007A7: 0021 NumVar[0007] = 00000000
000007A8: 0000 ENDIF
Negyedik bet�nek "V" -nek kell lennie.

000007C6: 0128 IF (GetByte (StrVar[001A],00000006) != 0000002E) THEN


000007E6: 0021 NumVar[0007] = 00000000
000007E7: 0000 ENDIF
A hatodik bet�nek "." -nak kell lennie.

00000805: 0128 IF (GetByte (StrVar[001A],00000009) != 0000002D) THEN


00000825: 0021 NumVar[0007] = 00000000
00000826: 0000 ENDIF
A kilencedik bet�nek "-" -nek kell lennie.

00000837: 007A NumVar[000A] = GetByte (StrVar[001A],0000000A)


00000844: 0128 NumVar[000E] = NumVar[000A] < 00000030
00000856: 0128 NumVar[000F] = NumVar[000A] > 00000039
00000873: 0022 IF (NumVar[000E] || NumVar[000F] != 00000000) THEN
00000881: 0021 NumVar[0007] = 00000000
00000882: 0000 ENDIF
Itt megn�zi, hogy a tizedik bet� �rt�ke a 0 �s a 9 k�z�tt van e. Ha
sz�m, akkor elfogadja, ha nem, akkor hiba van!

00000893: 007A NumVar[000A] = GetByte (StrVar[001A],0000000B)


000008A0: 0128 NumVar[000E] = NumVar[000A] < 00000030
000008B2: 0128 NumVar[000F] = NumVar[000A] > 00000039
000008CF: 0022 IF (NumVar[000E] || NumVar[000F] != 00000000) THEN
000008DD: 0021 NumVar[0007] = 00000000
000008DE: 0000 ENDIF
Ugyan az mint az el�bb ,csak most a tizenegyedik bet�t ellen�rzi.

000008EF: 007A NumVar[000A] = GetByte (StrVar[001A],0000000C)


000008FC: 0128 NumVar[000E] = NumVar[000A] < 00000030
0000090E: 0128 NumVar[000F] = NumVar[000A] > 00000039
0000092B: 0022 IF (NumVar[000E] || NumVar[000F] != 00000000) THEN
00000939: 0021 NumVar[0007] = 00000000
0000093A: 0000 ENDIF
Ugyan az mint az el�bb ,csak most a tizenkettedik bet�t ellen�rzi.

0000094B: 007A NumVar[000A] = GetByte (StrVar[001A],0000000D)


00000958: 0128 NumVar[000E] = NumVar[000A] < 00000030
0000096A: 0128 NumVar[000F] = NumVar[000A] > 00000039
00000987: 0022 IF (NumVar[000E] || NumVar[000F] != 00000000) THEN
00000995: 0021 NumVar[0007] = 00000000
00000996: 0000 ENDIF
Ugyan az mint az el�bb ,csak most a tizenharmadik bet�t ellen�rzi.

000009A7: 007A NumVar[000A] = GetByte (StrVar[001A],0000000E)


000009B4: 0128 NumVar[000E] = NumVar[000A] < 00000030
000009C6: 0128 NumVar[000F] = NumVar[000A] > 00000039
000009E3: 0022 IF (NumVar[000E] || NumVar[000F] != 00000000) THEN
000009F1: 0021 NumVar[0007] = 00000000
000009F2: 0000 ENDIF
Ugyan az mint az el�bb ,csak most a tizennegyedik bet�t ellen�rzi.

00000A03: 007A NumVar[000A] = GetByte (StrVar[001A],0000000F)


00000A10: 0128 NumVar[000E] = NumVar[000A] < 00000030
00000A22: 0128 NumVar[000F] = NumVar[000A] > 00000039
00000A3F: 0022 IF (NumVar[000E] || NumVar[000F] != 00000000) THEN
00000A4D: 0021 NumVar[0007] = 00000000
00000A4E: 0000 ENDIF
Ugyan az mint az el�bb ,csak most a tizen�t�dik bet�t ellen�rzi.

00000A5F: 007A NumVar[000A] = GetByte (StrVar[001A],00000010)


00000A6C: 0128 NumVar[000E] = NumVar[000A] < 00000030
00000A7E: 0128 NumVar[000F] = NumVar[000A] > 00000039
00000A9B: 0022 IF (NumVar[000E] || NumVar[000F] != 00000000) THEN
00000AA9: 0021 NumVar[0007] = 00000000
00000AAA: 0000 ENDIF
Ugyan az mint az el�bb ,csak most a tizenhatodik bet�t ellen�rzi.

00000ABB: 002F NumVar[000B] = StrLength (StrVar[001A])


00000AE8: 0128 IF (StrCompare (StrVar[001A],"P95-EVAL-LICENSE") = 00000000) THEN
00000B08: 002C Goto (LABEL_002E)
00000B09: 0000 ENDIF
Itt m�gegyszer ellen�rzi, hogy "P95-EVAL-LICENSE" - t �t�tt�nk -e be.

00000B15: 0128 NumVar[000E] = NumVar[0007] = 00000000


Nem �rdekes.
00000B27: 0128 NumVar[000F] = NumVar[000B] != 00000011
Nem �rdekes.

00000B44: 0022 IF (NumVar[000E] || NumVar[000F] != 00000000) THEN


Hogyha a NumVar[000E] vagy a NumVar[000F] �rt�ke 0 akkor....

00000B52: 0124 Sprintf (StrVar[0020],"Invalid license number. Please verify the


number on ","your Registration Card and enter it exactly as shown.")
Ki�r egy hiba�zenetet.

00000BC7: 002A MessageBox (StrVar[0020],SEVERE)


Hiba�zenete ablaka.

00000BE6: 0128 IF (NumVar[000C] + >= 00000003) THEN


Hogyha a gomb �rt�ke >=3 akkor...

00000C06: 002B Exit ()


...kil�p,

00000C08: 0000 ELSE


Ha nem akkor

00000C11: 002C Goto (LABEL_0008)


Vissza ugrik az elej�re.

Most m�r tudjuk hogy milyen a fel�p�t�se a sz�riasz�mnak. Most m�r


csak az a dolgunk, hogy sz�riasz�mot gener�ljunk. Ime hogyan �p�l fel
a sz�riasz�m:

P95-V?.??-XXXXXXX

Ahol k�rd�jelek vannak, ott nem tudjuk m�g, hogy mi kell oda. De ha
egy kicsit jobban odafigyel�nk, akkor l�thatjuk, hogy oda az �ppen
aktu�lis verzi�sz�m j�n. Az "X" - ek hely�re pedig b�rmilyen sz�m
ker�lhet. Most m�r csin�lhatunk tetsz�s szerint licensz sz�mokat:

P95-V2.01-6661666
P95-V2.01-2222222
P95-V2.01-1999121
P95-V2.01-1111888
P95-V2.01-6969696

De sokkal egyszer�bb, hogyha k�sz�t�nk egy programot , ami gener�l


nek�nk sz�riasz�mot.

4. HoGYAN k�sz�ts�nk licensz sz�m gener�l� programot?


-----------------------------------------------------
Tudnunk kell miel�tt gener�lunk sz�mokat , hogy milyen verzi�j� a
program. Tov�bb� illik megk�rdezni a felhaszn�l�t, hogy h�ny sz�mot
szeretne... :) �n a programot Turbo Pascal nyelvben �rtam meg, hogyha
valakinek sok ideje van, akkor meg lehet �rni assembly nyelven is.
Ime a forr�sk�d:

Var S,T,Version,Numb:String;
I,Counter:Byte;
I2,Code:Word;

Function IntToStr(I:Longint):String; (*Integer -t sztring�! *)


Var S: string[11];
Begin
Str(I,S);
IntToStr:=S;
End;

Function ReadKey:Char;Assembler; (*Karaktert v�runk*)


Asm
Mov ah,00h
Int 16h
End;

Begin
WriteLn(' yyy. yyyy. yyyyyyg. ,yyyyyy ');
WriteLn(' jQQQQ QQQQQ QQQQQQQQQy QQQQQQQg ');
WriteLn(' jQQQQ QQQQQ QQQQW"WQQQQg pQQQWQQQQ ');
WriteLn(' jQQQQyy_yQQQQQ QQQQF jQQQQ jQQQW QQQg ');
WriteLn(' jQQQQQQQQQQQQQ QQQQ#_jQQQQF QQQQ____QQQf ');
WriteLn(' jQQQQQWQQQQQQQ QQQQQQQQQQP #QQQQQQQQQQQQ ');
WriteLn(' jQQQQf jQQQQ QQQQQWW@"` jQQQQQQQQQQQQQg ');
WriteLn(' jQQQQ# jQQQQ QQQQQ jQQQQf `"QQQQc');
WriteLn(' "@@@@@ +@@@@ PPPVV VVVVP VVVVP');
WriteLn(' HunGaRiaN PiraTeS AlliancE Present''s');
WriteLn('Performance ''95 regkey generator by Lukundoo [HPA]');
Randomize;
WriteLn;
Write('_ enter Performance 95 version number (2.01 or 3.01):');
ReadLn(Version);
If ((Length(Version)<1) Or (Length(Version)>4)) Then
Begin (*Ha kissebb mint egy bet�, vagy nagyobb mint 4 bet�..*)
WriteLn('_ min 1. and max 4. character!');
Halt;
End;
Write('How many number would You like:');
ReadLn(Numb); (*H�ny sz�riasz�mot akarunk?*)
Val(Numb,I2,Code);
if code <> 0 then
Begin (*Ha nem sz�mot ad meg...*)
Writeln('_ are You stupid, or what??');
Halt;
End;
WriteLn;
Counter:=0;
For Code:=1 To I2 Do (*Hozz�kezd�nk a gy�rt�shoz*)
Begin
If Counter>20 Then (*Ha 20-at ki�rtunk, akkor meg�llunk*)
Begin
Counter:=0;
WriteLn('_ press any key to countinued...');
ReadKey;
End;
Write(Code,'.) P95-V',Version,'-');
For i:=1 To 7 Do
Begin
Write(Chr(48+(Random(10)))); (*Csak sz�mot �runk ki*)
End;
Writeln;
Inc(Counter);
End;
WriteLn('_ done!');
End.

5. ENNYiT m�ra!
---------------
Rem�lem hogy �rthet� volt ez a kis bemutat�, �s mindenki gerjedezik
egy j� kis installscript t�r�sre. Ha �gy�rzed, hogy kedven van a
programok felt�r�s�hez, akkor �rj e-mail-t nekem, �s felvesz�nk az
HPA trial member -�nek ! K�sz�net az�rt, hogy elolvastad ezt a kis
doksit, �s visszajelzel , hogyha valamit nem �rtesz bel�le.

Lukundoo [HPA]
1999. jan. 21.

You might also like