Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



hex hodnota instrukcí

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: hex hodnota instrukcí

Autor: MazeGen

8:53:58 03.09.2008

Intelovský manuál "Instruction Set Reference, A-M" (253666.pdf) popisuje v druhé kapitole formát instrukce. Zatím se vykašli na všechno, kde uvidíš IA-32e nebo 64-bit mode. Formát instrukce se totiž v 64bitovým módu zase o něco víc zkomplikoval. Lepší je dostudovat to dodatečně.

Pro začátek je asi nejdůležitější je vědět, že většina instrukcí obsahuje ModR/M bajt (v té referenci, co jsem odkazoval, jeho přítomnost indikuje "r" ve sloupci "o"). V tom jsou uložený operandy instrukce. Ty můžou být uložený i jinak, ale toto je nejčastější způsob. V případě složitějších adresovacích módů jako base+index*scale ale jenom ModR/M nestačí, takže se přidává další bajt, SIB ([ital]Scale-Index-Base[/ital]).

Dál je důležitý si pamatovat, že pole "displacement" a "immediate" jsou uložený vždycky až na konci kódu instrukce.

A ještě jedna důležitá věc. U některých jednooperandových instrukcí, používajících ModR/M bajt ([url]http://ref.x86asm.net/coder32.html#x80_0[/url]), nese pole "register/opcode" v této slabice tříbitový rozšíření operačního znaku (opcode extension). To jde poznat zase podle toho sloupce "o", jenom je tam v takovým případě číslo 0 až 7. Díky tomuto může jeden operační znak, v tomhle případě 0x80, definovat 8 různých instrukcí jenom pomocí slabiky ModR/M.

A poslední věc je ta, že operační znak 0x0F je použitej pro dvoubajtový operační znaky. Prostě když vidíš 0x0F, musíš se podívat, co je za tím.

Když máš po ruce tu odkazovanou referenci (nahoře jsou odkazy, takže se rychle dostaneš na požadovanej operační znak) a pamatuješ si tyhle pravidla, tak už dokážeš disassemblovat "v ruce".

Citovat příspěvek

 

Re: hex hodnota instrukcí

Autor: Mih

22:50:42 02.09.2008

Časem bych se chtěl propracovat k jednoduchému disassembleru. Zatím se snažím prokousat jednotlivými instrukcemi.

Citovat příspěvek

 

Re: hex hodnota instrukcí

Autor: MazeGen

10:00:38 02.09.2008

Aha, špatně jsem to pochopil. Zkus hledat "lenght disassembler", ten ti určí, kde začíná další instrukce. Pokud nemáš s kódováním instrukcí zkušenosti, není zrovna jednoduchý něco takovýho napsat. Třeba jedna instrukce může mít jeden až patnáct bajtů v závislosti na různých věcech.

Snažíš se analyzovat obecně jakýkoliv binární kód? Proč vlastně tu instrukci vyhledáváš?

Citovat příspěvek

 

Re: hex hodnota instrukcí

Autor: MazeGen

9:52:49 02.09.2008

Nejde to prostě disassemblovat? Ručně procházet strojákem je dost... neefektivní :)

Citovat příspěvek

 

Re: hex hodnota instrukcí

Autor: Mih

1:02:52 02.09.2008

Moc děkuji. Potřebuji nějakým algoritmem psaným v "C" procházet binární kód a vyhledávat určitou instrukci, ale vidím, že už jen zjistit, kde začíná další instrukce, bude vcelku pakárna :-)

Citovat příspěvek

 

Re: hex hodnota instrukcí

Autor: MazeGen

9:12:42 01.09.2008

32bitové instrukce:

http://ref.x86asm.net/coder32.html

64bitové:

http://ref.x86asm.net/coder64.html

Oba seznamy jsou seřazeny podle hodnoty operačního znaku.

"Popis složení" se dá zjistit jak z Intel a AMD manuálů, tak určitě existují nějaké články (hledej něco jako "opcode", "modrm", "sib", "displacement", "immediate")

Citovat příspěvek

 

Re: hex hodnota instrukcí

Autor: j.h

18:03:25 30.08.2008

http://www.jegerlehner.com/intel/IntelCodeTable.pdf

http://sandpile.org/ia32/index.htm

http://www.intel.com/products/processor/manuals/index.htm

http://justfuckinggoogleit.com/

Ale jestli nahodou hledas neco cesky, tak na to radsi zapomen.

Citovat příspěvek

 

hex hodnota instrukcí

Autor: Mih

15:22:04 30.08.2008

Neví někdo o nějaké tabulce hexadecimálních hodnot instrukcí? Pak ještě sháním nějaký popis složení instrukcí.Děkuji

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: