C/C++ week November Black Friday
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++

Disassemblování spustitelných souborů - díl 1

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Potřebujete upravit již existující EXE nebo DLL soubor a ztratili jste zdrojáky? Ještě nemusí být všechno ztraceno, tento tutoriál vám ukáže, jak lze upravovat již existující EXE/DLL soubory.

Protože v psaném článku by bylo hodně (opravdu hodně) obrázků, rozhodl jsem se, že zkusím návod udělat jako video.

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Nejsem velký řečník, takže se předem omlouvám za kostrbaté vyjadřování, nepřesnosti a občas nějaké přeřeky :) .

V téhle části je krátký popis programů, které se vám k tomu budou hodit, samotné disassemblování bude v další části.

Doporučuji roztáhnout obraz přes celou obrazovku a nastavit co nejvyšší kvalitu, video je v fullHD.

Odkaz na soubory zmiňované ve videu jsou přiložené k článku.


 

Stáhnout

Staženo 1487x (21.18 MB)

 

 

Článek pro vás napsal Luboš Běhounek Satik
Avatar
Jak se ti líbí článek?
11 hlasů
Autor se nyní živí programováním v C++, ale jeho nejoblíbenějším jazykem je C#. První hru napsal okolo roku 2000.
Všechny články v sekci
Pokročilé postupy pro Windows
Miniatura
Následující článek
Disassemblování spustitelných souborů - díl 2
Aktivity (3)

 

 

Komentáře

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:20.12.2012 18:01

Total Commander nepřekvapil, ani ta verze :) Čím mě překvapil ten samý prog. jazyk je Skype. Díky za plejádu hackerských programů a lidský popis, je to velmi zajímavé. Jen na začátku jsem se nechytl u toho ASM, ještě jak v tom PDFku bylo to razítko KISS :D

Odpovědět
20.12.2012 18:01
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Luboš Běhounek Satik:20.12.2012 18:42

Ono se to pak lip asi pochopi v tom ollydbg, kdyz to clovek vidi pouzity, pokud by to porad bylo nejasny tak napis a udelam nakej clanek zamerenej na asm :)

Odpovědět
20.12.2012 18:42
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Lukáš Hruda (Luckin):20.12.2012 19:09

Já bych nějakej tutorial na assembler docela uvítal. Ale ani ne tak na programováni v asm jako takový (významy instrukcí se dají najít), ale spíš třeba jak se přes něj dostat k hardwaru, jak fungujou přerušení a jak implementovat asm ve vyšších jazycích, za mě hlavně v C++. :) Já jsem se kdysi assembler snažil naučit, přečet sem nějakou učebnici, ale i tak umim jenom základy.

 
Odpovědět
20.12.2012 19:09
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Luboš Běhounek Satik:20.12.2012 19:19

ja pouzivam asm jen pro debugovani a semtam inline v c++, tam (napr. ve Visual studiu) muzes psat asm kod treba takhle:

int Funkce(int promenna)
{
        __asm
        {
                mov EAX, [promenna]
                add EAX, 10
        }
}

coz je ekvivalent pro

int Funkce(int promenna)
{
        return promenna+10;
}

Primo k hw uz se dneska pres asm taky skoro nedostanes, to slo v dobach DOSu a mozna jeste win95/w98.

Editováno 20.12.2012 19:20
Odpovědět
20.12.2012 19:19
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Lukáš Hruda (Luckin):20.12.2012 19:34

Inline asm znam :) ...dřív jsem si s nim hral a napsal sem v něm bubble sort, jelikož v asm moc neumim, tak jsem záhy zjistil že je asi o 20 procent pomalejší než bubble sort psanej přímo v C++ :D Myslel jsem spíš jak v asm napsat nějakou knihovnu (statickou/dy­namickou) a tu pak použít ve vyšším jazyce.

 
Odpovědět
20.12.2012 19:34
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Luboš Běhounek Satik:20.12.2012 19:44

On hlavne kompilator obcas dela s kodem psi kusy, ale zalezi samozrejme i na tom, jak to napises :)

Ja bych si klidne kostru udelal v c++ a jen inlinoval ty funkce v asm... :D

Odpovědět
20.12.2012 19:44
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:20.12.2012 20:16

Dělat přímo v assembleru je už téměř bez významu. Kompilátory opravdu optimalizují lépe než člověk. To si raději v tom C++ napiš interpretr svého jazyka a nechej ho zpracovávat přímo zdrojáky.

Odpovědět
20.12.2012 20:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lyrik
Člen
Avatar
Lyrik:22.12.2012 19:11

Jsou stále věci, které ve vyšším jazyce moc jednoduše nenapíšete... viz polymorfní kód a podobné.

 
Odpovědět
22.12.2012 19:11
Avatar
Kit
Redaktor
Avatar
Odpovídá na Lyrik
Kit:22.12.2012 19:58

Platí to i obráceně. Zkus si třeba v C napsat program na násobení matic a vynásob dvě matice 5000×5000 prvků. Pokud nejsi opravdu dobrý, bude tvůj program výrazně pomalejší, než Octave, což je interpretr.

Polymorfní kód je dnes už ve vyšších jazycích možný. Nebo se snad mýlím?

Odpovědět
22.12.2012 19:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:5.8.2013 8:39

Zajímavý :D

Editováno 5.8.2013 8:40
Odpovědět
5.8.2013 8:39
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
René Češka:5.9.2016 16:25

Je nějakej program jako OllyDbg ,ale na 64 bitovy jar soubory?
Nebo jak to de otevřít s OllyDbg

 
Odpovědět
5.9.2016 16:25
Avatar
Odpovídá na René Češka
Josef Kuchař - Pepa489:5.9.2016 16:28

jar soubory se dají dekompilovat zpátky na zdrojový kód https://www.google.com/webhp?… ;)

Odpovědět
5.9.2016 16:28
2x piš, jednou debuguj
Avatar
Odpovídá na Josef Kuchař - Pepa489
René Češka:5.9.2016 16:57

Děkuju a dá se nějak v Javě napsat program aby nešel dekompilovat zpátky a já mohl zkusit jestli se dostanu k heslu přes disassemblová­ní.(omlouvám se jestli se ptám moc blbě ,ale teprve jsem nějak tak zvládl oop v Javě a lechce chápu JavaFx).

 
Odpovědět
5.9.2016 16:57
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na René Češka
Luboš Běhounek Satik:11.9.2016 21:17

kdyby to slo nejak lehce, delal by to kazdej ;)

jinak disasemblovani (do assembleru) programu napsanych v jazyku s virtualnim strojem neni pro zacatek tak vhodny, protoze je tam krome toho tebou napsanyho kodu i ten bordel okolo :)

Editováno 11.9.2016 21:17
Odpovědět
11.9.2016 21:17
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
René Češka:11.9.2016 21:25

Děkuju myslel jsem si že to nebude snadný. A stejně sem už přešel z javy na C# kde mi to už funguje dobře.

 
Odpovědět
11.9.2016 21:25
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na René Češka
Luboš Běhounek Satik:12.9.2016 0:24

.NET (C#) taky není problém dekompilovat, i když existujou různý obfuskátory/pac­kery/protecto­ry/confusery apod., ale všechno se to dá nějak obejít/rozbít a lepší programátor/cracker se přes to dostane, jen ho to obvykle nějakou dobu zdrží :) .

Odpovědět
12.9.2016 0:24
https://www.facebook.com/peasantsandcastles/
Avatar
Matěj Uliczka:13.10.2017 14:15

Obohacujici video, diky!

 
Odpovědět
13.10.2017 14:15
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.