Dostávám relativně často žádost o pomoc - a hodně často i pomůžu, zvláště pokud se jedná o zajímavý problém (nebo i z jiných důvodů).
Nedávno se mi ozval člověk, který spravuje komunitní stránky kolem jednoho staršího programu napsaného v Delphi 5. Program je celkem speciální a také unikátní, takže časem se rozšířil po světě mezi uživateli v astro komunitě.
Bohužel původní autor není dostupný a nejsou od něho zdrojové kódy. Program podporuje více jazyků, ale tak, že natvrdo je tam pět pozic pro jazyky. No a ozvala se skupina uživatelů z Itálie, že by ten program i lokalizovala do svého jazyka - naštěstí jazykové soubory jsou mimo program, takže to nebyl problém - až na to, že přepínání jazyků je přes klikání na formulář na obrázek vlajky - ale vlajky jsou natvrdo v programu. Takže to dopadlo tak, že po kliknutí na vlajku Ruska se přepnul jazyk na italštinu. Což se nesetkalo s velkým pochopením a možná se i pár Pierů nebo Máriů urazilo, takže jsem byl požádán o pomoc (ztracený autor kdysi napsal, že je program v Delphi 5).
První pohled na binární výpis ukázal, že se jedná o pakovaný soubor.
Předpokládám, že aspoň většina z Vás pozná exe z Delphi (kompilované bez balíčků).
Teď šlo o to, o jaký kompresor se jedná. Takže bylo třeba použít trošku sofistikovanější nástroj - celkem dobrý je Stud_Pe.
Což jsem zkontroloval přes PEid, který ukázal korektnější informaci.
ASPack je celkem populární komerční exe packer, který slouží (nebo spíše měl sloužit) i jako chránič kódu. Bohužel pro autory platí následující pravidlo: neexistuje program, který by se nedal rozlousknout - je to jen různě složité. V tomto případě stačilo do google napsat něco jako unaspack a vybrat si program, který zafungoval. Takže po tomto kroku máme už čistou binárku (musí fungovat).
Exe otevřeme v programu Resource Hacker, třeba z softpedia. Hodně programů umí zobrazit Delphi formuláře, ale už méně je umí přímo upravit - což tento umí (tlačítko Compile script). V sekci RCData jsou jednotlivé formuláře - exportoval jsem formulář do DFM. Pro malé úpravy stačí editovat přímo - ale já jsem potřeboval změnit bitmapu.
V Delphi 5 jsem vytvořil nový projekt, přepnul jsem zobrazení formuláře do textu, vložil jsem obsah DFM, přepnul se zpátky a IDE mi zobrazilo původní formulář (bez několika komponent). Vyměnil jsem obrázek, uložil a v uloženém souboru jsem našel ikonu. Binární data ikony (jen ty) jsem přes schránku vložil do Resource Hackeru a přes tlačítko aktualizoval resource. Nakonec jsem provedl ověření funkce.
Zakódování jsem zavrhl - viz. minulý článek o velikostech EXE. Pokud člověk na tom trvá, asi bych použil UPX.
Takže od teď astronomové v Itálii mohou používat program ve svém jazyce. No snad někomu tento návod přijde užitečný.