Online: 0x01F0F (7951)

🐧 O tym, jak napisa膰 kompilator Asemblera pod Linuksem
Asembler x86-64 (x64)


codex
08:16 01-11-2012
Zobacz profil
 Napisane 7 lat temu (30 pa藕dziernika 2012 o godz. 18:43:58) przez codex
Mo偶e kto艣 poda膰 namiar na jakie艣 obja艣nienie sk艂adni opkodu IA32?
Gdzie艣 mia艂em i mi wsi膮kn臋艂o gdy potrzebne.
Z g贸ry dzi臋ki.

haker.com.pl

shoorick
07:45 01-11-2012
Zobacz profil
 Napisane 7 lat temu (31 pa藕dziernika 2012 o godz. 05:54:52) przez shoorick
Sk艂adnia zale偶y od Asemblera.
Standardowa jest sk艂adnia MASM.
Manuale firmy Intel (Intel 64 and IA-32 Architectures Software Developer's Manual) jej u偶ywaj膮.
Ale w systemach Linux rozpowszechniona jest sk艂adnia AT&T, poczytasz o niej tu:
http://asm.sourceforge.net/articles/linasm.html

haker.com.pl

codex
08:16 01-11-2012
Zobacz profil
 Napisane 7 lat temu (31 pa藕dziernika 2012 o godz. 16:36:23) przez codex
Nie no, sk艂adnia opkodu zale偶y od architektury cpu i nie ma nic wsp贸lnego ze sk艂adnia masm, innego asemblera, ani te偶 z systemem operacyjnym. Instrukcje Asemblera s膮 przez kompilator zapisywane w postaci opkod贸w, kt贸re maj膮 swoj膮 sk艂adni臋. Te z kolei s膮 w odpowiedni spos贸b dekodowane przez procesor. S膮 to podstawowe informacje niezb臋dne do napisania kompilatora, wi臋c my艣la艂em, 偶e uzyskam informacje w tym temacie ...

Ale mo偶e inaczej zapytam:
Jaki艣 deasembler, kt贸ry pozwoli mi zdekodowa膰 bootsector systemu operacyjnego bym potrzebowa艂. IDA wy艣wietla tylko warto艣ci poszczeg贸lnych bajt贸w pliku.

haker.com.pl

shoorick
07:45 01-11-2012
Zobacz profil
 Napisane 7 lat temu (31 pa藕dziernika 2012 o godz. 18:55:12) przez shoorick
No wtedy Intel Manual Volume II zawiera temat Instruction format ;)

haker.com.pl

codex
08:16 01-11-2012
Zobacz profil
 Napisane 7 lat temu (31 pa藕dziernika 2012 o godz. 21:34:26) przez codex
No nie wiem co mam powiedzie膰 - tak przecie偶 o to pyta艂em :) du偶o tego chyba za du偶o. P贸jd臋 na skr贸ty mo偶e t膮 drog膮:
http://thestarman.pcministry.com/asm/index.html

Ale dzi臋ki za pomoc.

haker.com.pl

shoorick
07:45 01-11-2012
Zobacz profil
 Napisane 7 lat temu (01 listopada 2012 o godz. 05:42:20) przez shoorick
Za du偶o niestety, ale przez z艂o偶ono艣膰 procesora. Lecz mog臋 poradzi膰 wzi膮膰 jedn膮 instrukcj臋. Na przyk艂ad: MOV i je studijowa膰. Kiedy wyja艣nisz wszy艣ci je warianty, inne instrukcje b臋d膮 ju偶 艂atwiej zrozumie膰 przez podobno艣膰.
Mo偶na napisa膰 prosty program, lepiej w fasm.
Napisa艂e艣:
mov al, bl
Skompilowa艂e艣 sam i przez fasm, a mo偶esz por贸wna膰 czy podobne wyniki s膮 (nawet kiedy niepodobne s膮 istnieje mo偶liwo艣膰, 偶e oba s膮 poprawne, dlatego 偶e pewne instrukcje maj膮 kilka wariant贸w kodowania).
Albo u偶ywaj ten resource: http://ref.x86asm.net/coder32.html
Przez niego mo偶esz deasemblowa膰 przez r臋ce.
Na przyk艂ad: kiedy spotkasz bajt 37h,
przyciskasz tam link http://ref.x86asm.net/coder32.html#x37 i trafisz do tablicy, odnajdziesz 偶e to jest AAA opkod i tak dalej.

haker.com.pl

codex
08:16 01-11-2012
Zobacz profil
 Napisane 7 lat temu (01 listopada 2012 o godz. 07:25:22) przez codex
Tak dok艂adnie pr贸bowa艂em to robi膰 tak jak m贸wisz zanim napisa艂em na forum oczywi艣cie, ale to 偶mudna robota by si臋 z tego zrobi艂a, poni偶ej przyk艂ad:

format pe gui 4.0
   entry  start
   include win32ax.inc
   include n\codehelp.inc

section .import import data readable
library kernel32,kernel32,user32,user32.dll
        include   api\kernel32.inc
        include   api\user32.inc

section .noname code readable executable
start_bis:
        ret

section .flat code data readable writeable executable

        table:
                int     12h
safespace        rb     100
        sizeof.table    = ($-table)

start:

        xor     eax, eax
        mov     al, [table +0]
        show    eax, eax
        ret

;       WYNIKI:
;       ------------------------------------------------------------------
;       CD 10                   = INT         10h
;       CD 13                   = INT         13h
;       ------------------------------------------------------------------
;       B8                      = mov         eax, 0
;       BB                      = mov         ebx, 0
;       B9                      = mov         ecx, 0
;       BA                      = mov         edx, 0
;       ------------------------------------------------------------------
;       EB  FE                  = jmp short   label
;       FF  E0                  = jmp         eax
;       E9  FB EF FF FF         = jmp         00 40 30 00  (start_bis)
;       ------------------------------------------------------------------
;       FA                      = cli
;       FB                      = sti
;       31 C0                   = xor         eax, eax
;       31 DB                   = xor         ebx, ebx
;       ------------------------------------------------------------------
                                                                                
Teraz cel jest taki:
Przeanalizowa膰 co jest w bootsektorze, a co powinno by膰, czyli kr贸tko m贸wi膮c - czy nie ma bonus贸w jakich艣 :) .Przyznasz, ze tak膮 metod膮 to ja bym szybko tego nie ustali艂.

Co do tej tablicy - ju偶 lepiej spr贸buj臋 t膮 metod膮, konkretny link wrzuc臋 w zak艂adki, bo na pewno nie raz si臋 przyda - dzi臋ki.

PS. Je偶eli piszesz w fasm na co dzie艅, to mo偶e wymienimy si臋 jakimi艣 projektami ... wy艣l臋 Ci maila na PW.

haker.com.pl

shoorick
07:45 01-11-2012
Zobacz profil
 Napisane 7 lat temu (01 listopada 2012 o godz. 07:45:59) przez shoorick
Z fasm mo偶esz zrobi膰 program z jedyn膮 linie:
mov al,bl

Wynik:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F


00000000   88 D8                                              

haker.com.pl

codex
08:16 01-11-2012
Zobacz profil
 Napisane 7 lat temu (01 listopada 2012 o godz. 08:16:07) przez codex
Tak wiem. Nawet kiedy艣 tam mia艂em nabazgrane co艣 podobnego.

haker.com.pl

© 2020 by haker.com.pl. Wszelkie prawa zastrze偶one.

Wszystkie tre艣ci umieszczone na tej witrynie s膮 chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawarto艣ci tej witryny bez zgody autora. Wszelkie opublikowane tutaj tre艣ci (w tym kody 藕r贸d艂owe i inne) s艂u偶膮 wy艂膮cznie celom informacyjnym oraz edukacyjnym. W艂a艣ciciele tej witryny nie ponosz膮 odpowiedzialno艣ci za ewentualne niezgodne z prawem wykorzystanie zasob贸w dost臋pnych w witrynie. U偶ytkownik tej witryny o艣wiadcza, 偶e z zamieszczonych tutaj danych korzysta na w艂asn膮 odpowiedzialno艣膰. Wszelkie znaki towarowe i nazwy zastrze偶one zosta艂y u偶yte jedynie w celach informacyjnych i nale偶膮 wy艂膮cznie do ich prawnych w艂a艣cicieli. Korzystaj膮c z zasob贸w witryny haker.com.pl o艣wiadczasz, 偶e akceptujesz powy偶sze warunki oraz polityk臋 prywatno艣ci.