ReFox je určen k obnově a ochraně programů, k nimž mají jeho uživatelé příslušná autorská práva ReFox není prostředek k porušování autorských práv Autor programu nenese odpovědnost za škody způsobené nesprávným použitím nebo zneužitím ReFoxu Copyright (c) 1992-2000 ComPro L. Matury 854 530 12 Pardubice tel.: 040 - 626 09 75 e-mail: refox@telecom.cz www: web.telecom.cz/refox -------------------------------------------------------- Názvy produktů uvedené v této příručce mohou být chráněné obchodní značky svých případných vlastníků. Proč ReFox ? ReFox je univerzální systém pro obnovu ztracených nebo poškozených zdrojových programů databázových systémů FoxBASE+, FoxPro 1.** a 2.**, Visual FoxPro 3.0 až 6.0 ReFox provádí rekonstrukci zdrojového textu programu zpětným překladem modulu .FXP (.FOX, .MPX, .SPX ...), resp. souboru .APP nebo .EXE a vytváří program funkčně plně shodný s původním, včetně zachování názvů proměnných, procedur, funkcí a ostatních prvků programu. ReFox Vám pomůže když: - dojde ke ztrátě Vašeho vlastního zdroje omylem, havarií disku nebo zavirováním počítače a naštěstí se zachová aspoň přeložený modul na jiném mediu. - máte pochybnosti o aktuálnosti zdrojového textu a chcete ho porovnat s přeloženým programem. - původní autor programu odmítne další spolupráci a v programu, k němuž vám nepředal zdroj, je potřeba provést nějakou drobnou změnu - pokud se tak nedostanete do sporu s jeho autorskými právy. - rozhodli jste se přejít na vyšší či jiný databázový systém např.: FoxBASE -> FoxPro, FoxPro -> VFP 3.0 - 6.0 nebo Fox -> dBase (opačný převod zajistí ReSource), nebo prostě chcete provést nějaké úpravy a nemáte již všechny zdrojové texty k dispozici. - potřebujete ochránit svůj program před dekompilací! ReFox má tyto základní funkce: - zpětný překladač, který vytváří zdrojový tvar modulů přeložených ve FoxBASE+, FoxPro 1.** až Visual FP 6.0 a provádí dešifrování programu přeloženého s volbou ENCRYPTION. - ochrana proti dekompilaci jiným zpětným překladačem (tj. jiným ReFoxem nebo dekompilátorem jiného výrobce) která je vázaná na seriové číslo programu a heslo. - rozklad souboru aplikace, to jest .APP nebo .EXE, na jednotlivé složky. - ověření správnosti zpětného překladu porovnáním původního modulu s modulem vzniklým překladem z rekonstruovaného zdroje. Instalace programu: 1.Instalovat je nutné na pevný disk, pro instalaci je nutný volný prostor o velikosti přibližně 500 kB. 2.Instalace se provádí pomocí programu INSTALL, který je umístěn v kořenovém adresáři distribuční diskety. 3.Během instalace je vybrán (nebo vytvořen) adresář, do něhož jsou zkopírovány tyto soubory: REFOX.EXE - program ReFox REFOX.INI - nastavení parametrů REFOX.HLP - soubor nápovědy REFOX.NEW - novinky v poslední verzi REFOX.ICO - ikona programu ReFox 4.Při instalaci je nutno zadat správné sériové číslo včetně kontrolního čísla. Chybné zadání způsobí, že program bude pracovat pouze v demonstračním režimu. 5.Při prvním spuštění REFOXu během instalace je třeba zadat jméno, firmu a adresu uživatele. Dále si program zjistí hodnoty některých parametrů počítače. Tyto údaje si zaznamená a při každém dalším spuštění testuje jejich hodnoty: - nainstalované programy nejsou přenositelné na jiné počítače!!! - po změně některých parametrů počítače je nutná nová instalace programu. Soubor REFOX.INI, v němž jsou uloženy parametry formátování výstupních souborů a další informace, lze zkopírovat do dalších adresářů, ze kterých budete volat ReFox. Podle potřeby je tak možno mít v každém adresáři různá počáteční nastavení ReFoxu. Při používání ReFoxu ve Windows se doporučuje volba . Je-li potřeba použít volbu je nutno vypnout pozvolné stmívání nastavením param. FD = 0 v REFOX.INI nebo volbou NOFADE. Spuštění programu ================= Příkazový řádek pro spuštění programu má tvar: [cesta]REFOX [soubor [-volba [-volba...]]] lze použít tyto volby: -T ... bez titulní obrazovky -R ... zpětný překlad -S[o] ... rozklad .APP / .EXE -C[t] ... porovnání -B[a|1|2|3] ... ochrana[úroveň] -P=HESLO ... heslo pro ochranu nebo čtení chráněných souborů -L=HESLO ... heslo pro uvolnění PLB z aplikace -O=d:\xxx ... výstupní adresář -D ... vstup a výstup podle REFOX.INI -X ... žurnál do souboru REFOX.LST -? ... nápověda pro příkazový řádek Příklady: ReFox DEMO.APP ReFox -R *.fxp ReFox -B -P:heslo *.app program lze spustit několika způsoby: REFOX při spuštění programu se promítne titulní logo a po stisknutí libovolné klávesy se zobrazí hlavní obrazovka. Na této úrovni pak probíhá základní komunikace s programem, výběr souborů a volba operací, které se s nimi provádějí. REFOX soubor je zobrazen přímo zdrojový text zvoleného programu nebo obsah databáze. Různé nadstavby DOSu včetně Windows umožňují definovat příkazy v závislosti na příponě zvoleného souboru. Takto lze ReFox asociovat se soubory typu FXP, DBF apod. a používat ho jako prohlížeč těchto souborů. REFOX soubor -volba... tento způsob je vhodný pro dávkové zpracování. ReFox vykoná příkaz zadaný volbou a skončí. Volání ReFoxu z FoxPro: příkaz RUN (resp. !) je nutno doplnit volbou /0 pro uvolnění co největšího množství pracovní paměti. Soubor REFOX.INI Parametry pro formátování výstupních souborů jsou uloženy trvale v souboru REFOX.INI. Tento soubor je po spuštění programu nejprve hledán v aktuálním adresáři a není-li nalezen, pak v adresáři, z něhož byl vyvolán REFOX.EXE. Struktura souboru: OP=00000000 operátory SY=00000000 synonyma CA=00000 písmena TR=0000000 úpravy ST=0000000 třídění PL=1 stupeň ochrany BK=~ označení záložních souborů TS=[mon dd yyyy] změna data v RT modulu FD=1 pozvolné stmívání obrazovky SB=1 šetřič obrazovky VU=0 zobrazení databází BM=0 zobrazení bitmap BMP,ICO ... CZ=K čeština: Kamenických|Latin|Není DI=cesta\adresář explicitně zadaný vstup DO=cesta\adresář explicitně zadaný výstup MF=... hodnota "My_Files" VFPx RT=cesta\VFPxR.DLL RT modul pro ochranu II PATH cesta často používané adresáře Parametry lze měnit za běhu programu volbou OPTION nebo přímo pomocí funkčních kláves CTRL+F* a při ukončení programu se jejich aktuální hodnoty uloží zpět do souboru REFOX.INI. Některé parametry je možno nastavit při editaci souboru: PL ... protect level - stupeň ochrany PL=1 ... I - základní ochrana PL=2 ... I+ - zvýšená ochrana PL=3 ... II - ochrana se změnou modulů RT TS ... změna data v upraveném modulu RT BK ... první znak záložního souboru není-li zadán, nezálohuje se FD ... fade - pozvolné stmívání obrazovek FD=0 ... rychlá změna FD=1 ... plynulé přechody SB ... screen blanker - šetřič obrazovky SB=0 ... šetřič nebude aktivován SB=m ... aktivace šetřiče po m minutách VU ... view - první pohled na tabulky VU=0 ... režim BROWSE VU=1 ... režim RECORD BM ... zobrazeni bitmapových obrázků BM=0 ... jako hexa kod BM=1 ... grafika 320x200 a 256 barev CZ ... czech - zobrazení diakritiky v Helpu CZ=K ... kód Kamenických CZ=L ... kód Latin 2 CZ=N ... bez háčků a čárek DI ... Directory for Input DO ... Directory for Output - explicitně zadané adresáře pro vstup a výstup - implicitní hodnoty (defaultní) při nezadání ukazují do aktuálního adresáře MF ... My Files pro hledání souborů např.: MF=*.app;*.fxp;*.dbf VFPx RT ... úplná cesta k RT modulu VFP verze X, který bude použit při ochraně II Šetřič obrazovky lze pomocí myši aktivovat okamžitě umístěním kursoru do pravého horního rohu obrazovky. Kursor v levém dolním rohu dočasně šetřič deaktivuje. Hlavní obrazovka programu •—[.]— C:\FOXPRO_2.0\INZER\*.* ————————————• | .. UP--DIR 96.01.28 10:54:28 | | akv dbf 1596 93.07.23 08:36:10 | | akv fpt 512 93.07.18 15:59:16 | | bigchars fxp 23652 96.01.28 10:59:38 | | cen dbf 175 93.07.15 10:55:10 | | demo txt 19123 93.04.22 11:32:50 | | dtest fxp 709 96.01.28 10:59:40 | | dtest prg 405 93.03.23 08:41:54 | •——————————————————————————————————————————• Hlavní obrazovka programu zobrazuje seznam souborů v aktuálním adresáři. Způsob zobrazení a setřídění seznamu lze určit pomocí Ctrl+F*: Ctrl+... F2 - Asc/Desc ... vzestupné nebo sestupné řazení F3 - Name ... řazení dle jména F4 - Ext přípony F5 - Time data a času F6 - Size velikosti F7 - Order pořadí v adresáři F8 - All/Filter ... všechny soubory nebo pouze (EXE, APP, FXP, DBF ...) F9 - Brief ... pouze jméno_8.3 Full ... všechny atributy souboru Long ... dlouhé jméno ve Win95 zvolený způsob zobrazení je uložen do souboru REFOX.INI a bude použit při příštím spuštění programu. Veškeré funkce ReFoxu lze aktivovat pomocí funkčních kláves nebo pomocí myši. Operace dekompilace do souboru, ochrana souborů, rozklad aplikací a porovnání modulů je možno aplikovat i na skupinu označených souborů a v případě, že je otevřeno několik oken adresářů na všechny označené soubory ve všech adresářích. F1 - Help ... zobrazení nápovědy F2 - Info ... informace o souboru F3 - Find ... vyhledání souborů Alt+F3 ... obnova vybrané skupiny F4 - Tree ... změna adresáře nebo zařízení Alt+F1 ... rychlá změna zařízení Alt+F2 ... rychlá změna adresáře F5 - Save ... dekompilace do souboru F6 - Brand ... ochrana proti dekompilaci Alt+F6 ... vloží _ReFox_=(9876543210) F7 - Split ... rozklad APP a dekompilace Alt+F7 ... pouze rozklad F8 - Compare ... porovnání kódu modulů Alt+F8 ... porovnání pouze textu F9 - Option ... nastavení parametrů F10 - Quit ... konec Alt+F4 ... vytvoření nového okna pro zobrazení adresáře Tab / Shift+Tab ... přepínání mezi vytvořenými okny adresářů Alt+F10 ... zrušení aktuálního okna Ins / Shift+DnArr Shift+UpArr ... označení souborů + - Select ... výběr podle masky - - Deselect ... zrušení výběru * - Invert ... inverze vybraných souborů ^\ - CD \ ... výběr kořenového adresáře ^Q - Quick View ... pohled na počátek souboru ^R - Rescan ... obnova seznamu souborů Alt+písmeno ... rychlé hledání jménem Ctrl+Enter ... další podobný soubor Enter / Space / kliknutí myší - prohlížení souboru Je-li prohlížen soubor složený z více modulů (tj. .APP nebo .EXE ve FoxPro 2.* a vyšších verzích) je napřed zobrazen seznam složek souboru. Způsob setřídění tohoto seznamu lze opět určit pomocí Ctrl+F*: Ctrl+... F2 - Asc/Desc ... vzestupné nebo sestupné řazení F3 - Name ... řazení dle jména F4 - Ext přípony, jména F5 - Type typu,přípony,jména F6 - Size velikosti F7 - Order pořadí v aplikaci F8 - Filter ... pouze moduly a tabulky ----------------- F2 - Info ... detail o komponentě F3 - Extr ... kopie komponenty nebo skupiny F7 - Find ... hledání zadaného řetězce znaků ^Q - Quick View Způsob zobrazení je závislý na typu prohlíženého souboru, přeložené moduly jsou zobrazeny ve zdrojovém tvaru, databázové tabulky jako data a ostatní typy souborů jako text nebo hexadecimálně. Pokud byl prohlížený soubor vytvořen v jiné znakové sadě, než která je právě používána, je možné v submenu TRIM zvolit vhodnou konverzi znaků. ReFox umožňuje vzájemnou konverzi sad Windows EE, Kamenických a Latin II nebo je převede do zobrazení bez diakritiky. Prohlížení přeložených modulů •————————————————————————————————————————————————• | FoxPro 2.0 AKVIZ.FXP Line 1/163 Col 0 0%| |* | |procedure AKVIZ | | parameter M_AKV | | define window A_PRE from 2,3 to 20,76 close shů| | define window A_DET from 4,1 to 19,78 shadow tů| | push key clear | | on key label F2 do DETAIL | | on key label F3 do PORADI | | set order to AKV | | activate screen | •————————————————————————————————————————————————• přeložený modul F2 - Info ... informace o souboru lze použít pro výběr zobrazené procedury F3 - Wrap/Unwr ... dělení dlouhých řádků F4 - Hexa/Norm ... hexadecimální zobrazení kódu F5 - Save ... uložení do souboru F6 - Goto ... výběr řádku programu F7 - Search ... hledání textu Shift+F7 - Next: pokračování v hledání Ctrl+F7 - Prev: předchozí výskyt F8 - F9 - Option ... volby pro zobrazení F10 - Quit ... konec prohlížení Alt+F10 ... obsah aktuálního adresáře, je-li ReFox spuštěn jako prohlížeč Prohlížení databázových souborů (tabulek) hodnotou parametru VU v souboru REFOX.INI lze určit počáteční způsob zobrazení tabulky VU=0 režim BROWSE VU=1 režim RECORD •———————————————————————————————————————————• | help.dbf Rec. 1/13 Col 0 7% | |TOPIC DETAILS CLASS| |Úvod | |Ovládání | |Databázové soubory | |Inzeráty | |Ceník slev za opakování | |Kalendář | |Uzávěrka | |Rezervace plochy | •———————————————————————————————————————————• režim BROWSE F2 - Info ... informace o souboru F3 - Record ... změna režimu F4 - Hexa/Normal ... přepínání zobrazení Alt+F4 - Edit ... editace v hexa modu F5 - Copy ... zápis do souboru F6 - Goto ... výběr záznamu Alt+F6 - Append ... přidá prázdný záznam F7 - Search ... hledání textu Shift+F7 - Next: pokračování v hledání Ctrl+F7 - Prev: předchozí výskyt F8 - Index ... záznamy jsou zobrazeny podle zvoleného indexu F9 ... volby F10 - Quit ... konec ^T - deleted ON/OFF ... příznak zrušené věty Tab / Shift+Tab ... pole vpravo/vlevo Prohlížení tabulek - režim RECORD •——————————————————————————————————————————————• | help.dbf Fld. 2/3 Col 0 66% | | 4 / 13 | | TOPIC Inzeráty •—————————————————————• | | DETAILS ->11 .......|Soubor inzerátů | | | CLASS |--------------- | | | |Struktura souboru | | | | ROK ... rok | | | | SLE ... slevy | | | | PLO ... plocha vyslo| | | | TXT ... text inzer | | | | REM ... poznámka | | | •—————————————————————• | •——————————————————————————————————————————————• režim RECORD F2 - Info ... informace o souboru F3 - Browse ... změna režimu F4 - Edit ... editace polí F5 - Decomp ... v souborech SCX a VCX dekompiluje vš. pole OBJCODE do METHODS Alt+F5 - jen v akt. záznamu nebo v souboru .DBC CODE(4) -> CODE(3) F6 - Goto ... výběr záznamu Alt+F6 - Append ... přidá prázdný záznam F7 - Search ... hledání podle obsahu Shift+F7 - Next: pokračování v hledání Ctrl+F7 - Prev: předchozí výskyt F8 - Index ... záznamy jsou zobrazeny podle zvoleného indexu F9 ... volby F10 - Quit ... konec Enter / Space ... prohlížení memo pole Poznámky: Funkce hledání textu pracuje rozdílně v závislosti na režimu prohlížení tabulky - v režimu BROWSE jsou prohledávána všechna pole tabulky, v režimu RECORD je zkoumáno pouze zvolené pole. V režimu BROWSE není možné prohlížet MEMO položky, tato funkce je přístupná pouze v režimu RECORD - je-li v tomto režimu vybráno pole typu MEMO, je v pravé části obrazovky otevřeno okno zobrazující obsah tohoto pole. Pokud to je přeložený kód (tj. pole OBJCODE v souborech .VCX a .SCX nebo pole CODE v databázi .DBC) je zobrazen přímo zdrojový text. Kliknutí myší do tohoto okna (ale postačí i nebo ) umožní prohlížení celého obsahu pole. Editovat lze i tabulky, které jsou součástí aplikace, tato funkce je určena pro 'pokročilé' uživatele, ReFox neprovádí žádné kontroly při změně obsahu pole. Hodnotu .NULL. lze vložit pomocí Ctrl+0. Dekompilovat pole OBJCODE do METHODS nebo pole CODE(4) do CODE(3) v databázi .DBC lze pouze u souborů stojících samostatně (tj. nevložených do aplikace), neboť dochází ke změně délky souboru. Po dekompilaci je třeba použít příkaz COMPILE z FoxPro a přeložit METHODS do zpět do OBJCODE a tím opravit odkazy z přeloženého kódu do zdrojového textu -debug informace. Zobrazení ostatních typů souborů Jiné typy souborů než přeložený modul nebo tabulka jsou zobrazeny ve formě textu nebo hexadecimálně F4 - Hexa/Normal ... přepínání zobrazení Alt+F4 - Edit ... editace v hexa modu Informace o souboru [F2-Info] •—[.]——————————— < File Info > ———————————————————• | C:\FOXPRO_2.0\INZER\inz.app | | type: FoxPro 2.0 app | | size: 98137 B | | date: 96.01.28 11:08:56 | | 19 included files, main is INZ.FXP | | 1. AKVIZ.FXP 42 - 3425 B c[00] | | 2. BIGINZ.FXP 3467 - 3114 B c[00] | | 3. CENIK.FXP 6581 - 347 B c[00] | | 4. FAKTU.FXP 6928 - 1686 B c[00] | | 5. FAKUVO.FXP 8614 - 1916 B c[00] | | 6. FAKZDR.FXP 10530 - 1824 B c[00] | | 7. INZ.FXP 12354 - 9387 B c[00] <-Start | •—————————————————————————————————————————————————• Funkce informace o souboru poskytuje základní informace o vybraném souboru. U aplikací složených z více souborů jsou nejprve zobrazeny informace o celém souboru a seznam komponent. Po výběru komponenty jsou zobrazeny podrobnější informace: seznam procedur přeloženého modulu, popis polí tabulky nebo indexové výrazy. Funkce QuickView (^Q, Ctrl+Q) zobrazí část zvoleného souboru nebo jeho komponenty. Některé aplikace Visual FoxPro obsahují mnoho komponent typu ICO a BMP, ReFox zobrazuje bitmapové soubory pomocí šestnáctibarevné textové pseudografiky. Funkce Visual F2 na obrazovce Info nebo F5 na obrazovce View zobrazí obrázek v grafice 320 x 200 a 256 barev. Informace o souboru je možno zobrazit během prohlížení souborů - výběrem procedury lze určit zobrazenou část programu. Pozn.: Tato funkce zobrazuje úplná dlouhá jména souborů nebo komponent aplikací vytvořených ve Windows 95. Vyhledání souboru [F3-Find] •—[.]— C:\FOXPRO_2.0\INZER\*.app ———————————————• | File Name: *.app ( ) Entire disk | | Type: ..... (x) Current dir. and below | | Containing ( ) Current dir. only | |-----------------------------------------------| | C:\FOXPRO_2.0\INZER\*.app | | inz.app 98137 96.01.28 11:08:56 | |...............................................| | | | | •———————————————————————————————————————————————• Funkce hledání souboru umožňuje vyhledání souboru podle neúplného jména v aktuálním adresáři, jeho podadresářích nebo na celém aktuálním zařízení. Pro hledání na jiném než právě aktuálním zařízení je nutno toto napřed změnit pomocí funkce [F4-Tree]. Hledání lze kdykoliv přerušit stiskem . Je možno hledat soubor podle obsahu, nebo lze zadat typ souboru. Typ "My_Files" lze editovat po stisku F4. Typy lze označit pomocí , hledat se bude podle všech současně označených typů. Při procházení vybranou skupinou souborů lze použít funkci [F2-Info] a zobrazení QuickView (^Q, Ctrl+Q). Alt+F3 umožmí návrat z hlavní obrazovky a pokračovat v procházení dříve vybranou skupinou souborů. Změna adresáře [F4-Tree] •—[.]— C:\FOXPRO_2.0 —————————————————• | Drive | | •—ÂC: | | •—ÂFOXPRO_2.0 | | ů—[ ] INZER | | •—[ ] TEST | | | | | •—————————————————————————————————————• Funkce změna adresáře umožňuje změnit aktuální adresář a případně diskové zařízení. Takto vybraný adresář je přidán k seznamu často používaných adresářů a může být později snadno vybrán pomocí Alt+F2 Alt+F1 - umožní rychlou změnu zařízení Alt+F2 - výběr z nejčastěji používaných adresářů Alt+F4 - další okno pro výběr souborů Vytvoření nového adresáře Během procházení stromu adresářů je možné vytvořit nový podadresář v právě aktuálním adresáři. Po stisknutí je nutno zadat platné (i dlouhé) jméno adresáře. Poznámka: Funkce [F5-Save] dekompilace do souboru [F6-Brand] ochrana proti dekompilaci [F7-Split] rozklad aplikací [F8-Compare] porovnání modulů vyžadují zadání druhého adresáře, funkci pro změnu adresáře pak lze vyvolat klávesou [F4-Tree]. Pomocí [Ctrl+Enter] lze dále přepínat na defaultní nebo aktuální adresář. Zpětný překlad do souboru [F5-Save] •—[.]— C:\FOXPRO_2.0\INZER\*.* ————————————————• | help dbf 923 93.05.03 15:02:44 | | help fpt 17656 93.05.03 15:02:32 | | help txt 19272 93.04.08 08:53:40 | •————————————————————————————————————————————————————• | DECOMPILE & SAVE selected file to ... [F10-Tree] | | C:\FOXPRO_2.0\INZER\ | •————————————————————————————————————————————————————• | inz dbf 2040 93.07.23 08:28:40 | | inzer prg 28083 95.01.01 13:21:04 | | kalen prg 4999 94.12.27 16:59:10 | •——————————————————————————————————————————————• Funkce zpětný překlad provádí rekonstrukci zdrojových programů jejich zpětným překladem i s případným rozšifrováním (decryption) z modulů .FOX pro FoxBASE+ nebo .FXP pro FoxPro a VFP resp .MPX, .PRX, .QPX, .SPX a .APP, .EXE pro FoxPro 2.* a VFP. Jméno vytvořeného souboru shodné se jménem dekompilovaného modulu a přípona je doplněna takto: .FOX a .FXP -> .PRG .SPX -> .SPR .QPX -> .QPR .MPX -> .MPR .PRX -> .FMT V příkazovém řádku volba -R Před prvním použitím je vhodné nastavit parametry formátování výstupu - F9 ... volby dekompilátoru Několik poznámek k činnosti zpětného překladače: Je třeba si uvědomit, že zpětným překladem vznikne program, který je s původním shodný po stránce funkční, včetně zachování jmen proměnných, procedur a funkcí, přesto však nelze očekávat doslovnou rekonstrukci původního textu programu. Zde je (neúplný) seznam odchylek od originálního textu: - jsou vypuštěny všechny komentáře; ty se nepřekládají. - procedury a funkce nelze rozlišit při překladu hlavičky; slovo PROCEDURE bude vždy nahrazeno slovem FUNCTION v případě, že v těle procedury (funkce) bude nalezen příkaz RETURN . - indexy polí budou po zpětném překladu v některých případech v kulatých závorkách namísto původně použitých hranatých - u numerických konstant jsou vypuštěny vedoucí nuly. - výraz složený z konstant je vyhodnocen již během překladu, takže příkaz A = 1 + 2 + 3 je zpětně přeložen jako A = 6 - znakový řetězec bude při zpětném překladu uzavřen mezi: 1. apostrofy 'a ... z' není-li v něm apostrof 2. uvozovky "a ... z" není-li v něm uvozovka 3. hranaté závorky [a ... z] v ostatních případech Toto pořadí lze změnit nastavením v menu . - při překladu dochází ke změně pořadí parametrů (klausulí) příkazu takovým způsobem, že při zpětném překladu by mohl vzniknout syntakticky nesprávný tvar. K zamezení tohoto případu bude např. klausule COLOR vždy umístěna na konci příkazu. Ochrana proti dekompilaci [F6-Brand] Funkce ochrana provádí ochranu vašeho programu proti zpětnému překladu jiným dekompilátorem tj. ReFoxem jiného seriového čísla, případně dekompilátorem jiného výrobce. ReFox8 poskytuje tři stupně ochrany programů: I 1.stupeň ... zarážky I+ 2.stupeň ... změna vnitřní struktury II 3.stupeň ... změna šifrovacího algoritmu Stupeň ochrany lze nastavit v submenu GENERAL. Ochrana I Na libovolná místa programů, které mají být ochráněny je třeba vložit příkaz _ReFox_ = (9876543210) ... závorky jsou povinné, sestavit z nich .APP nebo .EXE a pak na ně aplikovat ochrannou funkci programu. Chránit však lze i samostatně stojící FXP. Při sestavování nemusí být v projektu označena volba UTAJIT-ENCRYPTED, ochráněný program bude vždy zašifrován. Při 'ztrátě' hesla je možno vygenerovat náhradní heslo z parametrů souboru (délka, datum a čas vytvoření) a seriového čísla ReFoxu, který provedl ochranu. O tuto službu mohou žádat pouze registrovaní majitelé programu. Princip této ochrany je jednoduchý - příkaz _ReFox_=(9876543210) bude nahrazen kódem pozměněným tak, že interpret programu ho bude ignorovat, ale dekompilátory na tomto místě zhavarují. Ochranu je vhodné do programu vložit na několika místech. Jako další ochranu před dekompilátorem AntiPro 3.* je možno využít toho, že odmítne dekomplilovat program, v němž jako poslední příkaz úvodní části je =_ANTIFROG_ Dále lze využít toho, že překladač FoxPro při překladu příkazu @ řádek, sloupec GET ... SAY ... , kde SAY a GET jsou úmyslně prohozeny, nenahlásí chybu a vytvoří zkomolený kód, který vede k havárii některých dekompilátorů (včetně starších verzí ReFoxu) v závislosti na délce příkazu a počtu klauzulí za SAY a GET - zde je nutno experimentovat. Takto 'upravený' kód musí být pochopitelně umístěn v takové části programu, která se nikdy nebude provádět: tj. za příkazy RETURN, QUIT, EXIT, LOOP apod. Při ochraně aplikací složených z více modulů musí být aspoň jeden ochranný příkaz vložen do modulu, který bude spouštěn v aplikaci jako první. Tím bude znemožněn nejen zpětný překlad celé aplikace ale i další funkce ReFoxu: rozklad aplikace a zobrazení informací o vložených modulech. Pro další zvýšení ochrany lze navíc použít příkaz _ReFox_=(-9876543210) tím je znemožněna dekompilace staršími verzemi ReFoxu. V příkazovém řádku volba -B1 [Alt+F6] Pomocná funkce Alt+F6 vloží příkaz _ReFox_=(9876543210) do označených zdrojových programů. Automaticky se k nim vytvoří záložní kopie změnou prvního znaku jména na ~ . V příkazovém řádku volba -BA Ochrana I+ Při tomto stupni ochrany dochází ke změně vnitřní struktury programu takovým způsobem, že ho starší verze ReFoxu nemohou dekompilovat. Do programu není potřeba vkládat žádné pomocné příkazy. Verze ReFox8 dekompiluje takto chráněný program pouze při shodě seriového čísla a po zadání správného hesla. Je-li použito heslo REFOXSTOP, není dekompilace možná. Ochranu I a I+ lze kombinovat. V příkazovém řádku volba -B2 Ochrana II Tento způsob ochrany lze použít jen pro aplikace distribuované s moduly runtime nebo pro samostatné EXE. Při použití této ochrany není potřeba provádět zásahy do zdrojového textu programů, neboť je založena na změně šifrovacího algoritmu. Z tohoto důvodu je nutno provést úpravu modulů runtime, tak aby mohly interpretovat programy šifrované novým způsobem. Takto upravené moduly RT pak mohou pracovat jen se svými specificky kódovanými programy nebo s programy nezašifrovanými, avšak už ne s programy chráněnými standardní volbou ENCRYPTION. Funkci ochrana II je nutno aplikovat současně na všechny komponenty aplikace včetně příslušných modulů RT. K modulům RT je automaticky vytvořena záložní kopie změnou prvního znaku přípony: např. .ESL -> .~SL Změna šifrovacího algoritmu je odvozena z seriového čísla ReFoxu a zadaného hesla a ochráněné programy se stanou nečitelné pro ReFox, ReView a také pro ostatní dekompilátory. Na ochranu nemá vliv zda byla aplikace sestavena s volbou ENCRYPT nebo bez ní. Programy a aplikace chráněné stupněm I je možno ochránit i stupněm II. V příkazovém řádku volba -B3 POZOR -tato ochrana je nevratná !!! Pozn.: Samostatná EXE ve Visual FoxPro využívají soubory VFP300.ESL, VFP500.DLL a VFP6R.DLL, které bývají uloženy v adresáři WINDOWS\SYSTEM. Tento soubor je třeba zkopírovat do adresáře chráněného EXE a oba soubory změnit současně. Při použití parametru VFPx RT= v REFOX.INI je RT soubor kopírován automaticky Při testování musí být původní soubor přejmenován, aby se zabránilo jeho aktivaci. Příklad - ochrana programu * main - úvodní část programu * if .F. @ r,s GET ... SAY ... endif ... _ReFox_=(9876543210) ... ... quit * @ r,s GET ... SAY ... ... =_ANTIFROG_ * procedure Proc1 ... _ReFox_=(9876543210) ... return * procedure Proc2 ... _ReFox_=(9876543210) ... return * ......... Rozklad aplikace [F7-Split] Funkce rozklad - pouze pro FoxPro 2.* a vyšší verze Tato funkce provádí rozklad souboru aplikace (.APP nebo .EXE) na jednotlivé komponenty, tj. na soubory typu FXP, DBF, IDX a další. Programové moduly jsou doplněny správnou hlavičkou a jsou spustitelné i samostatně. V dalším kroku jsou všechny přeložené moduly dekompilovány do zdrojových tvarů. Přípony výstupních souborů jsou generovány automaticky podle přípon dekompilovaných modulů. U aplikací Visual FoxPro jsou nakonec prohlédnuty soubory VCX a SCX a obsahy memo polí OBJCODE jsou dekompilovány do pole METHODS pokud je toto prázdné. Po dekompilaci je třeba použít příkaz COMPILE z FoxPro a přeložit METHODS do zpět do OBJCODE a tím opravit odkazy z přeloženého do zdrojového kódu (debug informace). Pozn.: 1: Dlouhá jména komponent aplikací jsou ve Win95/98 a NT zachována. Pokud nelze vytvořit soubory s dlouhými jmény, jsou vytvořena zkrácená jména a pomocný dávkový soubor *.BAT pro přejmenování. 2: Programové knihovny PLB jsou chráněny. ReFox je uvolní z aplikace pouze po zadání správného "hesla". Toto heslo je možno vygenerovat z parametrů souboru (délka, datum a čas vytvoření) a seriového čísla ReFoxu, který provádí rozklad. O tuto službu mohou žádat pouze registrovaní majitelé programu. 3: Během rozkladu aplikace je vytvořen soubor projektu .PJX a jsou rekonstruovány soubory nabídek .MNX z .MPX V příkazovém řádku volba -S [Alt+F7] Automatickou dekompilaci přeložených modulů a modifikaci souborů VCX a SCX lze potlačit pomocí [Alt+F7] - pak bude proveden pouze rozklad aplikace. V příkazovém řádku volba -SO Porovnání souborů [F8-Compare] •— C:\VFP\vfps.fxp —————••— C:\VFP\TST\vfps.fxp —• | 95.10.04 00:00:00 || 96.01.01 01:02:03 | | 7 || 7 | |DEFINE CLASS START AS ||DEFINE CLASS START AS | | 4 || 4 | |PROCEDURE INIT ||PROCEDURE INIT | | 5 || 5 | |PROCEDURE DESTROY ||PROCEDURE DESTROY | | 7 || 7 | | || | •———————————————————————••———————————————————————• Funkce porovnání porovnává kód původního modulu s kódem modulu vzniklého překladem dekompilovaného zdrojového programu. Průběh porovnávání je zobrazen ve dvou oknech, kde jsou vidět jména procedur a čísla porovnávaných řádků. Při nalezení diference se program zastaví a je třeba prohlédnout označený řádek ve zdrojovém programu. Rozdíl v kódech může být způsoben použitím různých verzí FoxPro. V příkazovém řádku volba -C [Alt+F8] Tato funkce porovnává dekompilované zdrojové tvary. V příkazovém řádku volba -CT Volby dekompilátoru [F9-Option] Nastavení parametrů pro formátování výstupu Pomocí těchto parametrů lze určit jakými písmeny budou psána klíčová slova a jména proměnných, zda budou klíčová slova zkracována, kolik mezer vložit před vnořené příkazy, použití synonym příkazů a operátorů. Parametry pro formátování výstupních souborů jsou uloženy trvale v souboru REFOX.INI. Tento soubor je po spuštění programu nejprve hledán v aktuálním adresáři a není-li nalezen, pak v adresáři, z něhož byl vyvolán REFOX.EXE. alternativní hodnoty •—operátory—————————————————————• .................... | umocnění ** | ^ | nerovno <> | #, != | modulo % | funkce MOD() | logické op. .not. | not, ! | .and./.or. | and / or | reference alias ALIAS.name | ALIAS->name | m.name | m->name | znakové řetězce '.' "." [.] | •———————————————————————————————• •—synonyma——————————————————————• | pole proměnných DIMENSION | DECLARE | seznam souborů DIRECTORY | DIR | FOR cykl end ENDFOR | NEXT | jdi na záznam GOTO | GO | DOS příkaz RUN | ! | číslo řádky LINENO() | číslo | jméno .CDX CDX() | MDX() | set compatible ON/OFF | DB4/FOXPLUS •———————————————————————————————• •—písmena———• u jednotlivých kategorií klíčových | Command | slov nebo proměnných lze zadat | Clause | zda budou napsány celá | Setarg. | velkými písmeny nebo | Function | malými písmeny nebo | Variable | jen první písmeno velké | | | AMERICAN | formát data: ANSI, BRITISH atd. •———————————• •—úprava————• | Command | u jednotlivých kategorií klíčových | Clause | slov lze zadat zda budou psána | Setarg. | v plné délce nebo | Function | zkrácená na čtyři znaky. | Indent 3 | odsazení ve vnořených příkazech | Cont.line | dělení dlouhých příkazů na | | pokračovací řádky | čeština | kódování znakové sady | konverze | převod znakové sady použité •———————————• v prohlíženém souboru do sady právě používané. •—ostatní———————————• | stupeň ochrany | I | I+ | II | šetřič obrazovky | OFF | 1 ... 15 [min] | pozvolné stmívání | FADE | NOFADE | zobrazení tabulek | BROWSE | RECORD | zobrazení bitmap | GRAFIKA | DATA | vstup | cesta | výstup | cesta •———————————————————• ovládací tlačítka: < OK > - uloží volby a skončí = < save > - uloží volby a pokračuje < undo > - obnoví volby a pokračuje < cancel > - obnoví volby a skončí = ovládání z klávesnice: šipky nebo Tab / Shift+Tab - pohyb po volbách Space - změna nastavení Enter - < OK > Esc - < cancel > Poznámka: Volby pro velikost písmen nebo zkracování klíčových slov se neuplatní v případě, že příkaz není přeložen, ale je v programu uložen ve tvaru znakového řetězce - např. obsahuje znak pro makrosubstituci (&) nebo to je některá varianta příkazu ON. Příklad - ověření funkčnosti systému ReFox rozklad souboru DEMO.APP na komponenty a zpětný překlad programových modulů 1. soubor DEMO.APP je v adresáři C:\FOX2 2. vytvoříme další adresáře C:\FOX2\DEM C:\FOX2\REF 3. rozložíme soubor DEMO.APP do adresáře C:\FOX2\DEM 4. v adresáři C:\FOX2\DEM jsou nyní všechny komponenty aplikace DEMO správnost rozkladu lze ověřit příkazy ve FoxPro SET DEFAULT TO C:\FOX2\DEM DO DEMO.SPX 5. zdrojové tvary modulů zkopírujeme do C:\FOX2\REF 6. ve FoxPro přeložíme moduly příkazem COMPILE *.PRG atd. pro SPR, ... 7. provedeme kontrolu správnosti zpětného překladu porovnáním přeložených modulů v adresářích C:\FOX2\DEM a C:\FOX2\REF ať si běhá jak chce - ReFox ji doběhne! ReFox - přehled funkčních kláves Základní obrazovka - výběr souboru F1 - Help F2 - Info F3 - Find Alt+F3 - opakuj Find F4 - Tree Alt+F1 - změna zařízení Alt+F2 - změna adresáře F5 - Save F6 - Brand Alt+F6 - Add _ReFox_=(...) F7 - Split & Decompile Alt+F7 - Split F8 - Compare code Alt+F8 - Compare text F9 - Option F10 - Quit Alt+F4 ... vytvoření nového okna pro adresář Tab / Shift+Tab ... přepínání mezi okny adresářů Alt+F10 ... zrušení aktuálního okna Ctrl+... F2 - Asc/Desc F3 - Name F4 - Ext F5 - Time F6 - Size F7 - Order F8 - All/Filter F9 - Brief/Full/Long Ins / Shft+DnArr / Shft+UpArr - Select + - Select - - Deselect * - Invert ^\ - CD \ ^Q - Quick View ^R - Rescan Alt+písmeno rychlé hledání podle jména Ctrl+Enter další podobný soubor Enter / Space / dvojklik myši - prohlížení souboru Obrazovka prohlížení souboru způsob zobrazení je zvolen v závislosti na typu souboru: přeložený modul - zdrojový text programu databazový soubor - zobrazení dat ostatní typy - text, hexadecimálně, grafika přeložený modul F2 - Info F3 - Wrap/Unwrap F4 - Hexa/Normal F5 - Save F6 - Goto F7 - Search Shift+F7 ... Next Ctrl+F7 ... Previous F8 - F9 - Option F10 - Quit Alt+F10 ... na obsah aktuálního adresáře je-li prohlížen soubor složený z více modulů (APP nebo EXE ve FoxPro 2.* a VFP) je napřed zobrazen seznam složek souboru databázový soubor, tabulka hodnotou parametru VU v souboru REFOX.INI je určen počáteční způsob zobrazení: VU=0/1 .. BROWSE/RECORD zobrazení BROWSE F2 - Info F3 - Record F4 - Hexa/Normal Alt+F4 - Edit v hexa F5 - Copy F6 - Goto Alt+F6 - Append F7 - Search F8 - Index F9 - Option F10 - Quit ^T - deleted ON/OFF Tab / Shift+Tab - posun o pole vpravo/vlevo zobrazení RECORD F2 - Info F3 - Browse F4 - Edit F5 - Decomp ... dekompilace OBJCODE do METHODS Alt+F5 ... jen v aktuálním záznamu F6 - Goto Alt+F6 - Append F7 - Search F8 - Index F9 - Option F10 - Quit ostatní typy souborů jsou zobrazeny ve formě textu nebo hexadecimálně F4 - Hexa/Normal ... přepínání zobrazení Alt+F4 - Edit ... editace v hexa modu ....................................................... 22.6.2000 ReFox - nic neni ztraceno