Autor: Michal Poho°elsk²
Uve°ejn∞no: BAJT 07/94, str. 120-122
Zp∞tn² p°ekladaΦ v novΘm hßvu


Psal se rok 1989. U naÜφ zemi se prosadila FoxBASE 2.10, kterß vedle v∞tÜφ rychlosti, lepÜφch v²vojov²ch nßstroj∙, p°inesla hlavn∞ mo₧nost kompilace vytvo°en²ch program∙. Koncem roku 1991 se objevilo FoxPro 2.0, kterΘ bylo ocen∞no jako nejrychlejÜφ databßzov² program p°inßÜejφcφ vyraznΘ zlepÜenφ prßce v²vojß°∙m, vΦetn∞ mo₧nosti kompilovat programy v rßmci v²vojovΘho prost°edφ. FoxBASE 2.10 a vÜechny verze FoxPro majφ jedno spoleΦnΘ. Nemajφ skuteΦnΘ kompilßtory, jen₧ by p°eklßdaly do strojovΘho k≤du, ale semikompilßtory. Semikompilßtor p°evßdφ kompilovan² program do k≤du virtußlnφho poΦφtaΦe. Virtußlnφ poΦφtaΦ vytvo°en² mezik≤d, Φßsto naz²van² "p-k≤d", velmi rychle interpretuje. Tato koncepce mß n∞kterΘ v²hody. Pro r∙znΘ strojov∞ nekompatibilnφ poΦφtaΦe staΦφ p°epsat pouze interpreter, zatφmco vlastnφ mezik≤d z∙stane stejn² (FoxPro 2.5 for Macintosh). Vzhledem k tomu, ₧e mezik≤d byl vytvo°en z ohledem na p°eklßdan² jazyk, je mo₧nΘ provΘst d∙kladnou optimalizaci celΘho systΘmu. Krom∞ toho p°φkazy mezik≤du lze pova₧ovat stßle za p°φkazy jazyka vyÜÜφ ·rovn∞, volajφcφho podprogramy napsanΘ v asembleru nebo v CΘΦku kv∙li v∞tÜφ rychlosti.
DalÜφ diskutovanou v²hodou je mo₧nost zp∞tnΘho p°ekladu vytvo°enΘho mezik≤du. FoxPro sice mß mo₧nost vytvß°et Üifrovan² mezik≤d, ale pro specialistu to nep°edstavuje vß₧nou p°ekß₧ku. Proto vzniklo v zahraniΦφ i u nßs n∞kolik zp∞tn²ch p°ekladaΦ∙ umo₧≥ujφcφch vytvo°it dodateΦn∞ zdrojov² k≤d aplikace. Hlavnφm ·Φelem dekompilßtoru je snφ₧enφ rizika nßhodnΘ ztrßty zdrojov²ch text∙ p°i neoΦekßvanΘ chyb∞ na disku.
Jednφm z nejznßm∞jÜφch zp∞tn²ch p°ekladaΦ∙ u nßs je AntiPro od firmy FROG SYSTEMS s.r.o., a proto se mu dnes budeme v∞novat. AntiPro dokß₧e dekompilovat *.FOX soubory pochßzejφcφ z FoxBASE 2.10, *.FXP soubory vytvo°enΘ ve FoxPro 1.0x a *.FXP, *.APP i *.EXE soubory vytvo°enΘ ve FoxPro 2.x. Nejnov∞jÜφ verze AntiPro Plus 3.1 umφ pracovat takΘ ve FoxPro 2.5 for Windows.

Instalace

AntiPro se instaluje pomocφ dßvky INSTALL.BAT, co₧ v dob∞ komfortnφch instalaΦnφch program∙ s vlastnφ nßpov∞dou ned∞lß firm∞ FROG dobrou reklamu. INSTALL.BAT musφ b²t spuÜt∞n z distribuΦnφ diskety s dv∞ma parametry - disk a cesta pro umφst∞nφ instalovan²ch soubor∙. P°i instalaci je kontrolovßna p°φtomnost vÜech soubor∙ na disket∞. Teprve po p°enosu soubor∙ na disk je spuÜt∞n sluÜn∞ vypadajφcφ instalaΦnφ program, kter² vedle dalÜφch funkcφ nabφzφ v²b∞r k≤du pro zobrazovßnφ ΦeskΘ diakritiky. AntiPro se dodßvß na jednΘ disket∞ 5.25" HD (1.2 MB) nebo na jednΘ disket∞ 3.5" HD (1.44 MB) a vy₧aduje p°ibli₧n∞ 2.2 MB na pevnΘm disku.
K programu se dodßvß dob°e napsanß 100 strßnkovß p°φruΦka formßtu A5, kterß obsahuje takΘ n∞kolik dodatk∙ a tabulek. Autorem programu jsem byl ujiÜt∞n, ₧e p°φruΦka byla napsßna s urΦit²m p°edstihem, a proto vÜechny odkazy na dosud neexistujφcφ verzi 4.0 je mo₧nΘ v plnΘ mφ°e uplatnit ji₧ v aktußlnφ verzi programu.

Prvnφ kroky

S programem jsem se seznßmil minul² rok v tehdy aktußlnφ verzi 2.53, kterß mohla dekompilovat pouze FoxPro 2.0 a ni₧Üφ verze. Jedinß v∞c, kterß m∞ tehdy zarazila byla dvojjazyΦnost programu. Po spuÜt∞nφ programu AntiPro se k systΘmovΘmu menu p°idß dalÜφ popup s nßzvem "AntiPro". VÜechny funkce a dialogy aplikace komunikujφ s u₧ivatelem anglicky, pouze nßpov∞da a informaΦnφ °ßdek k menu jsou v ΦeÜtin∞. Bohu₧el i nejnov∞jÜφ verze se dr₧φ tradice, tak₧e lze oΦekßvat u v∞tÜiny u₧ivatel∙ smφÜenΘ pocity. Je vÜak dobrΘ, ₧e ka₧dß polo₧ka nßpov∞dy je doprovßzena sejmut²m obrßzkem popisovanΘho dialogu. Dekompilßtor je dodßvßn ve dvou modifikacφch - Standard a Professional. Professinal verze se od zßkladnφ liÜφ pouze tφm, ₧e umo₧≥uje dekompilaci zaÜifrovan²ch soubor∙. Antipro menu obsahuje nßsledujφcφ volby:

Program se dodßvß ve dvou rozdφln²ch verzφch, podle toho jak mohou b²t pou₧φvany. Soubor ANTIPRO.APP pou₧ijeme, jestli₧e chceme zaΦlenit AntiPro do v²vojovΘho prost°edφ FoxPro a nepot°ebujeme Runtime modul. Soubor ANTIPRO.EXE pou₧ijeme, jestli₧e chceme AntiPro pou₧φvat jako samostatnou aplikaci.
Program lze bez jak²koliv potφ₧φ spustit takΘ ve FoxPro 2.5 for Windows, tak₧e jde skuteΦn∞ o multiplatformnφ aplikaci, kterß se automaticky p°izp∙sobuje prost°edφ ve kterΘm je spuÜt∞na.

Testovßnφ

P°i testovßnφ programu jsem pou₧il rozÜφ°enou verzi FoxPro 2.5 pro DOS a FoxPro 2.5b pro Windows. Po spuÜt∞nφ ANTIPRO.APP ve FoxPro pro DOS se objevila hlßÜka "Warning: FoxPro 2.5a is better for running AntiPro...", jen₧ p°es svou jednoznaΦnost nenφ popsßna v u₧ivatelskΘ p°φruΦce. Pokud je AntiPro spuÜt∞no ve Windows, samo si vygeneruje soubor _ANTIIO.FLL o velikosti 27 KB. Antipro jsem zkouÜel na p°ibli₧n∞ 250 souborech *.FXP, *.APP a *.EXE vytvo°en²ch ve FoxPro 2.5 pro ob∞ platformy. Rychlost zp∞tnΘho p°ekladu na sluÜnΘm poΦφtaΦi nenφ p°φliÜ pomalß, i kdy₧ AntiPro bylo vytvo°eno jako FoxPro aplikace. Na poΦφtaΦi PC/386DX - 40 MHz se 4 MB RAM trval zp∞tn² p°eklad mnou vytvo°enΘ aplikace EKOMAN.EXE o velikosti 329 KB celkem 351 sekund v prost°edφ rozÜφ°enΘ FoxPro 2.5 pro DOS. V prost°edφ FoxPro pro Windows doÜlo p°i pokusu dekompilovat stejnou aplikaci k chyb∞ "Kurzor je mimo obrazovku", co₧ nevypadß na nedostatek pam∞ti.

Zp∞tn² p°eklad

P°i zp∞tnΘm p°ekladu vy₧aduje program nejd°φve zadßnφ jmΘna dekompilovanΘho souboru. Jestli₧e je jmΘno vstupnφho souboru vlo₧eno pomocφ voleb "Input File" nebo "Output file(s)" uschovß ho AntiPro ve vlastnφ databßzi a p°i dalÜφ prßci ho ji₧ nevy₧aduje. Pokud je jmΘno vstupnφho souboru uschovßno v databßzi, zobrazuje je takΘ v prvnφm °ßdku popup menu "AntiPro" v systΘmovΘm menu.
V∞tÜina aplikacφ ve FoxPro 2.x je slo₧ena z vφce vΦlen∞n²ch soubor∙. Pon∞vad₧ nenφ nutnΘ v₧dy vÜechny dekompilovat, je dobrΘ vybrat jen urΦitΘ soubory pomocφ volby "Output file(s)". Je mo₧nΘ rovn∞₧ nastavit odliÜn² v²stupnφ disk a adresß° (Jestli₧e adresß° neexistuje, m∙₧eme ho zde vytvo°it !).
Volba "File Info" umφ zobrazit vÜechny dostupnΘ informace o vstupnφm souboru. Nejd°φve se zobrazφ typ a velikost vstupnφho souboru vΦetn∞ seznamu vΦlen∞n²ch soubor∙. Je-li vstupem soubor *.FXP nebo *.FOX, je v seznamu zobrazen pouze 1 °ßdek.
AntiPro poznß vÜechny typy soubor∙ (b∞₧n∞ kompilovanΘ i ÜifrovanΘ) databßzov²ch program∙ FoxBASE 2.10, FoxPro 1.0x, FoxPro 2.0 a FoxPro 2.5, dßle soubor vytvo°en² v DBASE 1.x (*.DBO - ovÜem jinak tento typ nenφ podporovßn) a soubor chrßn∞n² proti dekompilaci (viz dßle). Ve druhΘm dialogu u₧ivatel uvidφ informace o vΦlen∞n²ch souborech, dßle seznam vÜech procedur a funkcφ, poΦet pou₧it²ch prom∞nn²ch a n∞kolik dalÜφch symbol∙.
Volba "Decompile" zahßjφ ihned zp∞tn² p°eklad vstupnφho souboru. Pr∙b∞h dekompilace se zobrazuje formou horizontßlnφho sloupcovΘho grafu nebo, je-li nastaven v²stup na obrazovku, generovan² k≤d se p°φmo zobrazuje ve v²stupnφm okn∞. Dekompilaci m∙₧eme zastavit stiskem klßvesy ESC. ZajφmavΘ je, ₧e dekompilace s v²stupem na obrazovku nenφ o nic pomalejÜφ ne₧ dekompilace zobrazovanß horizontßlnφm grafem. V n∞kolika mßlo p°φpadech nastßvajφ urΦitΘ nejednoznaΦnosti p°i generovßnφ v²stupnφho k≤du, kterΘ obvykle nemajφ vliv na funkΦnost v²slednΘho k≤du. Trivißlnφ p°φpady nejednoznaΦnosti v²stupnφho k≤du jsou u operßtor∙, funkcφ a klφΦov²ch slov, kterΘ jsou v jazyce FoxPro synonymy. TakovΘ p°φpady jsou vy°eÜeny p°epφnaΦi ve volb∞ "Settings...".
AntiPro rozpoznß i n∞kterΘ nepublikovanΘ p°φkazy a funkce, kterΘ jsou zcela funkΦnφ a jsou za°azeny z d∙vodu kompatibility se starÜφmi systΘmy (nap°. ASSIST).
Dekompilßtor generuje v²stupnφ k≤d vΦetn∞ p∙vodnφch jmen prom∞nn²ch, procedur, funkcφ, oken, menu i dalÜφch objekt∙, co₧ je jeho znaΦnou p°ednostφ. Dekompilßtor vÜak nem∙₧e do generovanΘho k≤du zahrnout komentß°e a dalÜφ prvky, jen₧ byly p°i p°ekladu vypuÜt∞ny.

Ochrana proti dekompilaci

Volba "Protect" je nejv∞tÜφ novinkou aktußlnφ verze AntiPro 3.1 ! Protect zaΦne ihned zpracovßvat vstupnφ soubor do takovΘho formßtu, aby se nedal dekompilovat ₧ßdn²m ze souΦasn∞ dostupn²ch dekompilßtor∙ vΦetn∞ AntiPro. Ochrana je ·Φinnß pouze na soubory *.FXP, *.APP a *.EXE vytvo°enΘ ve FoxPro 2.0 i 2.5. Nezßle₧φ na tom, jak²m zp∙sobem byl program p°elo₧en. Zajφmav∞ p∙sobφ fakt, ₧e chrßn∞n² soubor se m∙₧e nejen prodlou₧it, ale i zkrßtit.
Jestli₧e se pokusφ jak²koliv u₧ivatel dekompilovat chrßn∞n² program starÜφ verzφ AntiPro, objevφ se zprßva typu "Soubor neznßmΘho formßtu". SouΦasnß verze AntiPro odmφtne zp∞tn² p°eklad se zprßvou "Branded FoxPro application - access denied". Z toho je z°ejmΘ, ₧e AntiPro neposkytuje ₧ßdnou mo₧nost chrßn∞nΘ programy dekompilovat. JmΘna p∙vodnφch program∙ jsou odvozena od jmΘn chrßn∞n²ch soubor∙ nßhradou prvnφho znaku p°φpony znakem vlnovka (~).

V²hodnß investice ?

Myslφm, ₧e ka₧dΘmu programßtorovi se bude AntiPro hodit, pokud ho vyu₧ije v rßmci autorskΘho zßkona. NeΦekanß chyba disku nebo omyl p°i mazßnφ soubor∙ m∙₧e ochromit na dlouhou dobu cel² v²vojov² t²m a p°inΘst velkΘ finanΦnφ ztrßty. P°itom nßkupem dekompilßtoru tomu lze elegantn∞ zabrßnit. S jeho pomocφ m∙₧eme rovn∞₧ studovat ukßzkovΘ DEMO aplikace jin²ch firem.




Skok na dalÜφ strßnku Skok na hlavnφ menu Skok na dalÜφ strßnku


Copyright (c) 1993-2000 Michal Poho°elsk²