Portál AbcLinuxu, 30. dubna 2025 15:27

Hackování XChatu pod Wokny

1.12.2005 01:02 | Přečteno: 1550× | Plané filozofování | poslední úprava: 1.12.2005 02:07

Jako IRC klienta používám výborný program xchat. Rád bych tento program občas používal i pod Windows. Bohužel ačkoliv je software GPL, windozí binárka je třicetidenní shareware. Jelikož jsem nedávno po windows zkoušel překládat jednoduchou GTK aplikaci pomocí mingw, řekl jsem si, že bych si mohl vyrobit vlastní freewarovou binárku. Jak u mě bývá ve windows v poslední době zvykem, zvrhlo se do v drsné hackování :-)

Autoři xchatu používají ke kompilaci MS Visual Studio, ale v dokumentaci píšou, že by to mělo jít i s mingw. Asi by to šlo přeložit i pod cygwinem, jenže mingw port gcc dělá krásnou čistou binárku závislou jen na msvcrt.dll a bez potřeby nějakého X-serveru.

Vzhůru dolů!

Všechny potřebné knihovny (gtk, gdk, pango, intl, png, iconv, atk, zlib) už jsem měl na disku, tak jsem začal uvažovat nad vlastní kompilací. Potřeboval jsem stvořit nějaký ten Makefile. Ten za normálních okolností vznikne po běhu ./configure. To jsem sice v cygwine pustit mohl, ale bylo mi to dobré tak pro získání nápovědy, v cygwinu jsem to kompilovat nechtěl a neměl jsem tam ani potřebné knihovny. Vrhl jsem se na drsný trik, xchat jsem skompiloval normálně v Linuxu a potom jsem přes find -name "*.o" získal seznam *.c souborů, které je třeba kompilovat. Místo Makefile jsem vytvořil následující elegantní baťák o jednom megapříkazu.

c:\dev-cpp\bin\gcc -o ./xch.exe ./src/common/proto-irc.c ./src/common/outbound.c ./src/common/notify.c ./src/common/dcc.c ./src/common/cfgfiles.c ./src/common/url.c ./src/common/history.c ./src/common/inbound.c ./src/common/ctcp.c ./src/common/modes.c ./src/common/network.c ./src/common/plugin-timer.c ./src/common/servlist.c ./src/common/text.c ./src/common/tree.c ./src/common/util.c ./src/common/server.c ./src/common/userlist.c ./src/common/ignore.c ./src/common/xchat.c ./src/common/plugin.c ./src/fe-gtk/chanview.c ./src/fe-gtk/palette.c ./src/fe-gtk/plugingui.c ./src/fe-gtk/xtext.c ./src/fe-gtk/urlgrab.c ./src/fe-gtk/dccgui.c ./src/fe-gtk/setup.c ./src/fe-gtk/gtkutil.c ./src/fe-gtk/banlist.c ./src/fe-gtk/fkeys.c ./src/fe-gtk/search.c ./src/fe-gtk/menu.c ./src/fe-gtk/about.c ./src/fe-gtk/rawlog.c ./src/fe-gtk/textgui.c ./src/fe-gtk/pixmaps.c ./src/fe-gtk/servlistgui.c ./src/fe-gtk/ignoregui.c ./src/fe-gtk/editlist.c ./src/fe-gtk/ascii.c ./src/fe-gtk/userlistgui.c ./src/fe-gtk/notifygui.c ./src/fe-gtk/chanlist.c ./src/fe-gtk/maingui.c ./src/fe-gtk/fe-gtk.c -Ic:/dev-cpp/gtk/include -Ic:/dev-cpp/gtk/include/gtk-2.0 -Ic:/dev-cpp/gtk/lib/gtk-2.0/include -Ic:/dev-cpp/gtk/include/atk-1.0 -Ic:/dev-cpp/gtk/include/pango-1.0 -Ic:/dev-cpp/gtk/include/glib-2.0 -Ic:/dev-cpp/gtk/lib/glib-2.0/include -Lc:/dev-cpp/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -liconv -mms-bitfields -mwindows -lintl -lwsock32 -lwinmm

Krása, ne? Jo, ještě bylo potřeba pepsat na bat jeden Makefile v adresáři s bitmapama, aby z toho vypadl jeden hlavičkový soubor.

..\..\..\..\gtk\bin\gdk-pixbuf-csource.exe --build-list bookpng book.png hoppng hop.png oppng op.png purplepng purple.png redpng red.png voicepng voice.png xchatpng ..\..\xchat.png > inline_pngs.h

No, bohužel to nešlo slinkovat, nějaké reference šly naprázdno. Nakonec jsem musel napsat patch na soubor fe-gtk.c.

42a43,44
> /* paskma hack */
> #include "../common/server.h"
60a63,64
> /* also paskma hack */
> #include <gdk/gdkwin32.h>

A povedlo se, vyblilo to binárku. Bohužel nefunguje :-). Normálně se to spustí, nastavím server ale skončí při "Looking up irc.bk.zcu.cz...". Jinak GUI pořád reaguje, možná jsem zapomněl nějakou podporu pro DNS :-)

       

Hodnocení: 93 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

1.12.2005 01:04 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
Odpovědět | Sbalit | Link | Blokovat | Admin
Proč to dělat jednoduše, když to jde složitě

P.S.: Je to první odkaz, co vyleze z Googlu při hledání Free Xchat.
1.12.2005 01:15 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
Nejjednodušší je ten XChat cracknout. Navíc na tvém odkazu to dělají přes MSVS a k tomu je tam návod a mejkfajly. Tohle byla výzva, navíc možná budu dělat jednu GTK aplikaci pro W+L, tak jsem si to chtěl zkusit.
1.12.2005 01:20 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
Nejjednodušší to samozřejmě, ale proč to dělat, když můžu legálně používat free verzi.

Jako výzvu jsem to pochopil, nicméně mi připadá lepší začínat od začátku (čili u malinkatejch aplikací s minimem závislostí, ideálně navíc vlastních), než metodou pokus - omyl - oprava zbastlit něco gigantickýho a s největší pravděpodobností si do další práce přinést několik špatně pochopenejch souvislostí.
1.12.2005 01:30 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
Hele, do toho, jak se co naučím mi nekecej, ju? Ten příspěvek je jen pro pobavení. Wokna používám jednou za měsíc, když musím, a tu binárku nepotřebuju. Jen mě kdysi naštvalo, že GPL aplikace je shareware s tím, že překlad vyžaduje speciální znalosti.
1.12.2005 08:23 ND
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
Mě zase štve, když si někdo myslí, že GPL aplikace musí být automaticky zadarmo. Pokud máš svobodu šířit to dál bez poplatku (nabo třeba za vyšší poplatek:) a navíc svobodu upravit zdroják (vyřadit ochranu), tak to k nulové ceně jasně vede, ale není to nikdy automaticky. Pokud mám problém zaplatit pár korun za svůj oblíbený program, tak bych cítil minimálně morální povinnost vůči autorovi, podívat se raději po nějaké alternativě. Ale to je spíš otázka kolegiality.
1.12.2005 09:08 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
V Linuxu to používám každý den, ve Woknech jednou za měsíc, tak za to přece nebudu platit? Jinak tu jejich politiku respektuji. Ale přece jenom, je to zbytečnost. Kdybych měl něco platit, tak nějakou killer aplikaci pro vývoj, na které dělám prachy.
1.12.2005 13:13 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
V Linuxu to používám každý den, ve Woknech jednou za měsíc, tak za to přece nebudu platit?
To je zajímavá logika ;-)
1.12.2005 13:15 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
Ty si kupuješ software, který nepoužíváš?
1.12.2005 15:07 fghfn | blog: vanoce
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
ty ten software pouzivas, zlodeji... :-)
2.12.2005 09:06 prageroj
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
co ukradl? takovyhle zvasty miluju
1.12.2005 18:37 Frank J. Tomes | skóre: 29 | Plzeň
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
To moralizování mi vhání slzy smíchu do očí :-)
[frank]$ uname -prs FreeBSD 4.11-RELEASE-p25 i386
2.12.2005 09:05 ND
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
Svět bude krásnější, až všichni jako ty, myslím tím lidi bez smyslu pro morálku, fair-play a svědomí, chcípnou roztrháni cynickým smíchem. Ale jinak nic ve zlém. ;-)
Luboš Doležel (Doli) avatar 1.12.2005 16:10 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
Odpovědět | Sbalit | Link | Blokovat | Admin
Krásná čistá binárka? Tak to asi ne :-)

Když jsem kompiloval jeden soft pro Windows, tak binárka z Mingw měla 7 MB a binárka z VS.NET měla 1,5 MB. Závislostně byly prakicky stejně. Ta VS.NET binárka byla navíc znatelně svižnější.
1.12.2005 16:50 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Hackování XChatu pod Wokny
To muselo být nastavením. Prostě mingw něco přilinkoval staticky, no. A i když C/++ kompilátor z MSVS je fakt dobrý, těžko to bude oproti GCC "znatelný" rozdíl.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.