Případ výměny vlajky aneb změna resource

vložil Radek Červinka 2. února 2011 22:40

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.

AsPack

Předpokládám, že aspoň většina z Vás pozná exe z Delphi (kompilované bez balíčků).

Delphi exe

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.

Stud_Pe

Což jsem zkontroloval přes PEid, který ukázal korektnější informaci.

PEid

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).

Resource Hacker

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ý.


Nabízíme Delphi školení na různá témata, primárně ve Vaší firmě.

Tagy:

Praxe

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS