Mistrovství v jazyce Assembler
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Mistrovství v jazyce AssemblerMistrovství v jazyce Assembler

 

Mistrovství v jazyce Assembler

Google       Google       17. 4. 2008       22 886×

Programování, disassembling, analýza kódu. Knihu napsal Vlad Pirogov a přeložil Jakub Zemánek.

Reklama
Reklama

Mistrovství v jazyce Assembler je kniha, kterou bych určitě nedoporučil začátečníkům v jazyce assembler a už vůbec ne začátečníkům v programování. Kniha totiž počítá s jistými znalostmi čtenáře. Mezi takovéto prerekvizity se řadí například znalost instrukčního souboru a samozřejmě znalost funkce instrukcí a jejich použití, počítá se i se znalostí programových konstrukcí a algoritmizace. Pokud vás tedy assembler zajímá a chcete se jej naučit profesionálně používat, ale neznáte základy tohoto jazyka, doporučil bych vám k prostudování nejprve knížku Učíme se programovat v jazyce Assembler pro PC, kterou napsal Rudolf Marek. Problémy se znalostí algoritmizace pravděpodobně většina čtenářů tohoto článku mít nebude, předpokládám totiž, že assembler se budou učit především lidé, kteří se o programování opravdu zajímají a již nějakou dobu programují v jiném jazyce.

Kódy v knize jsou psané pro kompilátory MASM32 a TASM32 a zabývá se převážně programováním pro Windows. V žádném případě nebudete tvořit aplikace jen pro DOS nebo příkazovou řádku, ba právě naopak - už při přečtení necelého prvního sta stránek budete schopni vytvořit okenní aplikaci (nebo spíše okno s funkčními ovládacími prvky). Jak sám autor píše v úvodu, některé materiály v knize mohou být považovány za „crackerské“. Tyto metody jsou v knize obsaženy především proto, abychom poznali činnost crackerů a mohli se jim bránit.

Kniha Mistrovství v jazyce Assembler se skládá ze čtyř částí.

Část první

Kapitola první

V kapitole první se autor zabývá nástroji pro programování ve Windows, a to výše zmíněnými MASM32 a TASM32. Zabývá se zde kompilací a linkováním. Vysvětluje některé základní pojmy a popisuje činnost objektových souboru .INC. Je zde popsána také základní stavba kódu a některé z méně používaných direktiv jako například INCLUDE. Již na druhé stránce v této knize se vyskytuje první blok kódu, takže bez základních znalostí Assembleru opravdu nemá cenu pokračovat; kniha je navíc více než z poloviny tvořena výhradně kódy.

Kapitola druhá

V druhé kapitole se dostáváme k samotnému programování. Autor kapitolu začíná voláním API funkcí a popisem parametrů těchto funkcí a pokračuje strukturou programu. Popisuje v ní čtyři základní části, ze kterých se program musí skládat (řeč je nyní o okenní aplikaci). A již na straně 41 začíná kód pro vytvoření obyčejného prázdného okna ve Windows. Kód je napsán pro MASM32 a hned za ním následuje kód pro TASM32 a programátor zde uvádí hlavní dva rozdíly mezi kódem pro tyto kompilátory. Na závěr kapitoly autor postupně popisuje předávání parametrů API funkcím pomocí zásobníku a instrukce PUSH. V tomto oddíle kapitoly také ukazuje, jak v přepisu do assembleru vypadá volání funkcí ve vyšších jazycích. Zde bych se ještě zmínil o další výhodě knížky, kterou je fakt, že kromě programováni v Assembleru vás naučí i podstatu programování jako takového a vysvětlí některé děje při programování ve vyšších jazycích.

Kapitola třetí

Kapitola třetí dále rozšiřuje znalosti z kapitoly druhé. A první její část se zabývá přidáním ovládacího prvku na okno, konkrétně tedy tlačítka (autor zde nepopisuje pouze vložení tlačítka na okno, ale také to, jak je program informován o jeho stisknutí), dále textového pole a seznamu. Kapitola také vysvětluje problematiku oken vlastněných a oken dceřiných a s tím souvisejícího okna hlavního nebo chcete-li mateřského či rodičovského.

Kapitola čtvrtá

V kapitole čtvrté se poprvé a naposledy v této knize dostaneme k 16bitovému programování, tedy k ukázce historie. Kromě porovnání programování 16bitových a 32bitových aplikací nepřináší tato kapitola mnoho zajímavých informací, slovy autora však historie stojí za to, aby byla studována.

Kapitola pátá

Pátá kapitola zakončuje první část knihy; porovnává kompilátory MASM32 a TASM32 a obsahuje seznamy použitelných parametrů.

Část druhá

Kapitola šestá

Druhou část knihy začíná kapitola o kódování textu ve Windows. Autor se v kapitole věnuje především normám ASNII, Unicode a OEM pro příkazový řádek. Přestože tato kapitola není nijak rozsáhlá (zabírá pouhých pět stránek), lze se z ní dozvědět zajímavé věci.

Kapitola sedmá

Tato kapitola pojednává o výpisu textu do okna, výběru fontu a je ukončena oddílem Grafika a obrázky. Tuto kapitolu bych přejmenoval spíš na „Ochutnávka grafiky v assembleru“, protože až na spoustu stránek kódu se zde autor příliš nerozepsal a trošku více podrobností bych zde alespoň já přivítal.

Kapitola osmá

Možná pro někoho bude divné, že se tato kapitola objevuje až zde. Osmá kapitola se totiž týká využívání konzolových programů a začíná oddílem o vytváření konzoly, o jejím dědění atd. Pokračuje sekcí, která bude určitě mnohé velice zajímat, a to je zpracování událostí klávesnice a myši. To je docela dobrým důvodem, proč tuto kapitolu, ač pro někoho se může jednat o zbytečné záležitosti, nevynechat. Dále v kapitole se dozvíme informace o časovačích, které mají v programování nezastupitelnou roli.

Kapitola devátá

Zdroje: editory zdrojů a kompilátory. Ano, to je nadpis této kapitoly, i když o editorech se autor moc nezmiňuje a o kompilátorech se zmiňuje také jen na pár řádcích. Kapitola jako taková se zabývá především ruční tvorbou zdrojů a ukazuje použití zdrojů na příkladech. Mě osobně přijde využití zdrojů v assembleru mnohem nutnější než v jiných jazycích, jako je například pravý opak assembleru, Visual Basic, ve kterém již několik let také programuji. Mimochodem, pokud jste někdy psali v jazyce C, bude pro vás tato kapitola jako procházka.

Kapitola desátá

Obsahuje popis dynamických nabídek, rozšiřuje tedy znalosti získané v kapitole předchozí, tedy tvorbu menu, tentokrát ovšem takového, které se může měnit podle událostí, které nastávají za běhu programu. Dále se kapitola zabývá tzv. Hotkeys a Správou seznamů.

Kapitola jedenáctá

Je kapitolou velice rozsáhlou a dovolím si říci, že spolu s kapitolou poslední je to nejrozsáhlejší část, která se zabývá prací se souborovým systémem. Autor se zde krátce věnuje systému FAT32 a jeho předchůdcům a naopak velice podrobně se zabývá možnostmi souborového systému NTFS. V kapitole se dále zmiňuje o vyhledávání souborů a posledním oddílem je práce s binárními soubory, která je ukázána na příkladech Výpis obsahu souboru do konzoly, Zpracování textového souboru a Získání časových údajů o souboru.

Část třetí

Kapitola dvanáctá

Třetí část knížky s názvem „Sofistikovanější příklady programování ve Windows“ začíná kapitolou „Direktivy a makro nástroje Assembleru“. V kapitole postupně projdete návěstími, strukturami, uniony, podmíněnou kompilací kódu a přes další spoustu zajímavých věcí se dostanete až k tvorbě maker a kapitola je zakončena tvorbou programu, který lze zkompilovat jak v MASM32, tak v TASM32, a využito je k tomu jak jinak než podmíněného překladu.

Kapitola třináctá

Tato kapitola se vrací ke správě souborů a konkrétně se zabývá funkcí CreateFile a myslím, že je to kapitola vhodná i pro programátory v jiných jazycích, protože možnosti funkce jsou zde velice pěkně rozepsány. Jsou zde ovšem popsány i další funkce pro správu souborů, například CreateDirectory a nebo DeleteFile. Poslední část kapitoly je také velice zajímavá a zabývá se Asynchronními vstupy a výstupy.

Kapitola čtrnáctá

Zde budu opravdu stručný a řeknu jen to, že se zabývá časovači.

Kapitola patnáctá

Kapitola patnáctá pro mě osobně byla poněkud zajímavější a zabývala se multitaskingem, popisuje činnost vláken a komunikaci mezi jednotlivými vlákny, popisuje také funkci semaforů a kritické sekce. Na závěr se kapitola zmiňuje o Mutexu.

Kapitola šestnáctá

Tato kapitola má nadpis dynamické knihovny a já osobně jsem se na tuto kapitolu velice těšil a nezklamala. Myslím, že dost podrobně popisuje jak funkci, tak i tvorbu knihoven DLL.

Kapitola sedmnáctá

Tato kapitola bude pro někoho velice zajímavá, pro někoho naopak naprosto nepotřebná. Pojednává o síťovém programování a popisuje práci se síťovými zařízeními, protokoly TCP/IP a ještě například správu socketů.

Kapitola osmnáctá

Řešení některých problémů programování ve Windows je název této kapitoly. Já mám z této kapitoly poněkud smíšený pocit - její první část je nepochybně zajímavá, ovšem zbytek již byl v knize aspoň částečně probrán a o užitečnosti kapitoly a vyřešení nějakých závažných problémů trochu pochybuji. Mám-li být upřímný, je to kapitola, která pro mě měla asi nejmenší informativní hodnotu v porovnání s jejím rozsahem.

Část čtvrtá

Kapitola devatenáctá

Kapitolou devatenáct nám tedy začíná čtvrtá část knihy. Tuto část prolétnu jen tak v heslech, možná se trošičku zdržím až u kapitoly poslední. Devatenáctá kapitola se nazývá systémové programování ve Windows. Její první dvě části - Stránková segmentace a Adresový prostor procesu - mě příliš nezaujaly, zatímco část třetí s názvem Háky mě zaujala velmi. Určitě mnozí z vás slyšeli o metodě nazývané Hooking či Global Hooking a o jejích obrovských možnostech. A tato část kapitoly devatenácté vám ukáže jak ji efektivně využívat.

Kapitola dvacátá

Zabývá se používáním Assembleru ve spojení s jinými programovacími jazyky, např. C++ nebo Delphi.

Kapitola dvacátá první

V kapitole dvacáté prvé se naučíte vytvářet služby. Je zde kladen důraz převážně na příklady.

Kapitola dvacátá druhá

Touto kapitolou se dostáváme k části, o které jsem se zmiňoval za „crackerskou“. Začíná částí s názvem Přehled debuggerů a disassemblerů

Kapitola dvacátá třetí a dvacátá čtvrtá

Tyto kapitoly se jmenují Základy Turbo Debuggeru a Práce s disassemblerem W32Dasm a debuggerem SoftIce.

Kapitola dvacátá pátá

Plynule navazuje na předchozí kapitoly; nazývá se „základy analýzy kódu“, pro „crackery“ jako dělané...

Kapitola dvacátá šestá

Kapitola s názvem Oprava spustitelných souborů se „crackingu“ věnuje prakticky. Zabývá se odstraněním časové prodlevy při spouštění sharewaru a zrušením omezeného množství spuštění nebo 30denního užívání.

Kapitola dvacátá sedmá

Na tuto kapitolu sem se těšil ze všeho nejvíc. Její název je Struktura a vývoj ovladačů. A pro mě jako pro člověka, který se zabývá hardwarem, to byla kapitola nejpřínosnější.

Na závěr

Knihu jako takovou bych doporučil každému, kdo by chtěl o programování vědět víc a všem, kdo by chtěli zjistit více o tom, co se běžně při práci v PC děje a jak spousta věcí vůbec funguje. Knížka je velice kvalitně zpracovaná, i když jsou místa, kde bych trochu přidal.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jiří ChytilAutor programuje ve VB, zajímá se o elektrotechniku, studuje na SOŠ Elektrotechnické - obor číslicová technika.
Web    

Nové články

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý