Menu
Strona główna
Hacking
Programowanie
Telefonia Komórkowa
Kody do Gier
Linux
Dlaczego?
Programowanie w Delphi
Mapa strony
 Programy
Systemy
Artykuły PDF

Security

Skanery
Sniffery
Security

Windows

Użytkowe
Przegl±darki graficzne
Kodeki
Narzędzia plikowe
Narzędzia dyskowe
Narzędzia systemowe
Sterowniki
Szyfrowanie danych
Zarz±dzanie hasłami
Zarz±dzanie rejestrem
£aty i Patche
Zarz±dzanie pamięci±
Synchronizacja czasu
Nagrywanie płyt
Free Antivirus (Darmowe Antyvirusy)
Sterowniki
Obróbka d¼więku
Edycja wideo

Internetowe

Bezpieczeñstwo
Programy P2P
Komunikatory
Dodatki do przegl±darek
Klienty poczty elektronicznej
Narzędzia Antyspamowe
Przegl±darki grup dyskusyjnych
Przegl±darki Offline
Serwery poczty elektronicznej
Telefonia komórkowa
Wyszukiwarki internetowe
Zdalny dostęp
Cybernianie
Klienty FTP
Narzędzia internetowe
Prywatnośc
Przegl±darki internetowe
Serwery FTP
Serwery WWW
Wspomagacze ści±gania
Zarz±dzanie sieci± lokaln±

Tuning Systemu

Diagnostyka i testowanie
Inne
Rozszerzenia pulpitu
Tapety na pulpit
Tuning Systemu
Ikony
Powłoki
Tuning sprzętu
Wygaszacze ekranu

Programowanie

Kompilatory
Biblioteki i komponenty
Bazy danych
Edytory programistyczne
¦rodowiska programistyczne
Debugery
Tworzenie wersji instalacyjnych

Webmastering

Użytkowe
Kursy

Linux

Użytkowe
Internetowe
Multimedialne

Programy biurowe

Programy dla firm
Pakiety biurowe
Administracja
Edytory tekstu
Grafika prezentacyjna
Kadry i płace
Wspomaganie projektowania
Zarz±dzanie projektami
Bazy danych
Finanse i księgowośc
Handel
Programy ewidencyjne
Zarz±dzanie informacj± osobist± (PIM)
 Download GRY
Pelne Wersje GIER
 Artykuy > Hacking > £adowanie początkowe CDROM Twoje Jądro

Przychodzi czas w życiu każdego niski - równego hakera kiedy oni decydują, że oni także, chcą utworzyć ich własny system obsługiwania. Co lepsza droga, by naprawdę odkryć zdolności twojej maszyny niż zaprogramować jego operację z początku? To są komputery drogi został znaczony, by zostać zaprogramowany: w ich poziomie. Typowe systemy obsługiwania tylko używają małego procentu naszych zdolności komputerów. Najwięcej jest przeznaczony dla dużych, głupich programów. Prawdziwa rozmaitość wykonalnych stanów naprawdę zadziwia. Przez zagłębianie do tego cudownego świata rzeczywistości CPU, otwierasz drzwi do twojej własnej zapierający tchu obliczeniowej kreatywności. To jest, gdzie paradygmaty są przesunięte, metodologie wymyśliły i architektury wykroczyły.

Lata temu hakerzy napisali wszystko konieczne systemowe oprogramowanie dla ich " podań". Oni napisali jakiekolwiek jądro albo OS był konieczny. Faktycznie , oddzielenie między jądrem i podanie były często bez znaczenia albo nawet nieistniejące. To był prawdziwy hackery -- czyste doświadczenie systemu. Obecnie, dużo CPUs ma stał się tak złożony, że OS często jest zobaczony jako warunek wstępny do najwięcej programowania. Często będziesz widział jądra zwyczaju tylko na mały 8 - kawałka i 16 - gryzą procesory. Kiedy PICs, H8s i podobne jest zachwycającymi celami programowania, projektowanie CPU rozwinęło się dramatycznie. Do programowania do nowoczesnego procesora takie jak Pentium 4 albo G5, twój umysł doświadczy ectasy złożoności i możliwości.

Jest więcej niż estetycznymi powodami dla programowania blisko metalu. Rozebrany śmieci, który był ciężarem " nowoczesnych" działających systemów, wolnych, by wyrazić dzikie programowanie, CPU staje się UberMaschine, którym to zostało znaczone, by być. Po prostu położyć, możesz ucieszyć się setkami występu czasów lepiej niż czego do jesteś przyzwyczajony i robisz rzeczy, które były po prostu niemożliwe pod sludgery Linuks, Windows, al et. Wita w prawdziwej informatyce!

We¼miemy spojrzenie w jak wnieść ciebie i biegnąc dalej nowoczesny x86 system od inicjalizowalnego CDROM. Wybieram to, ponieważ jest kilka podręczników na obuwaniu od dyskietek i dysków stałych, ale CDROMs wydaje się dziwnie zaniedbany. Zdaniem , obuwanie od CDROM jest jednym z najbardziej logicznych strategii dla tego typu rozwoju. Możesz łatwo przeprowadzić twój system na rozmaitości komputerów bez zmieniania instalacji na ich dysku stałym. Masz dostęp do więcej niż 600 MB danych zamiast marnego 1.44 MB / 2.88 MB na dyskietce. Mógłbyś mieć tony danych na temat CDROM i programu, który mógłby policzyć przez to rozjaśniające szybko.

Są trzy drogi, by obuć od CDROM: żadna symulacja obuwająca, symulacja dyskietki i symulacja dysku stałego. Jesteśmy patrzeć na dwóch z ich, żadna symulacja i symulacja dyskietki. Nasze techniki będą wymagały, że BIOS popiera Torito Kolejki nadziemnej Inicjalizowalną specyfikację CDROM. Przykład użyje pożytku mkisofs, który jest częścią paczki cdrecord dla Windows, Linuks i innych systemów obsługiwania. Kod w x86 zgromadzeniu będzie przygotować się na NASM ( Asembler Netwide), który jest też uchwytny dla wielu platform. Raz system jest obuty i jesteś w 32 - gryzą tryb chroniony, możesz skoczyć bezpośrednio do zestawionego kodu C. Stąd masz dostęp bezpośredni do wszystkiej linearnej pamięci i możesz utworzyć twoje jądro albo podanie.

Spójrzmy na obuwanie poza CDROM z symulacja dyskietki. Potrzebujemy obraz dyskietki, którego pierwszy 512 sektor bajtu zawiera bootloader. Bootloader zwykle załadowuje resztę kodu buta i skacze do tego. Nasz przykład jest mały wystarczająco, by pasować cały 512 bajtów. Zestawiamy naszego bootloader jak to:

    nasm boot.s -o start.img

To turn it into a 1.44MB floppy, we can use a little spot of Python code:

    startimg = open('start.img').read()
open('floppy.img', 'w').write(startimg + (1474560 - len(startimg)))

Now we can place the floppy.img in the directory that will serve as the root of the ISO 9660 filesystem to be placed on the CDROM. Now, assuming that directory was named 'cdimage', we can simply do this:

    mkisofs -b floppy.img -o cd.iso cdimage

So, 'cdimage/floppy.img' is specified as the floppy image to boot with, 'cdimage' is the directory filled with whatever data we want in the output and 'cd.iso' is the final product, ready to be burned on to a CDROM. As for the assembly code in boot.s, this should start us off:

    [ORG 0x7c00]        ; this code assumes that it starts at linear 0x7c00
[BITS 16] ; we start in real mode which is 16-bit

jmp start ; ensure cs (code segment) is set
start:
xor bx, bx ; clear bx
mov ds, bx ; zero out DS (data segment)
mov es, bx ; zero out ES (extra segment)
mov ss, bx ; zero out SS (stack segment)
mov sp, 0x7bfe ; set stack pointer to right below boot code

mov ah, 0x2 ; read sector(s) into memory
mov al, 0x1 ; number of sectors to read
mov ch, 0x0 ; 0..7b of cylinder number
mov cl, 0x1 ; 0..5b sector number, 6..7b high bits of cyl. num
mov dh, 0x0 ; head number
mov dl, 0x0 ; driver number
mov bx, 0x7000 ; offset to ES -- linear 0x7000
int 0x13 ; call BIOS disk interrupt

.infinity:
jmp .infinity ; wait for Godot

This will load first sector, sector 1, into 0x7000 linear memory and then wait for you. If you want to know it got that far, you can tie this in right before the infinite loop:

        mov al, '*'
mov ah, 0x0e
mov bh, 0x0
mov bl, 0x7
int 0x10

To narysuje trochę '*' na ekranie. Jakkolwiek, możesz więcej twój dysk rozruchowy z tym i wtedy skaczesz do tego. Ale, symulacja dyskietki jest zamierzona głównie, by poprzeć obsługiwanie systemów, które mają ich własnych kierowców CDROM. Jeżeli chcesz skoczyć, że i użyj BIOS, by dostać jakiegoś i wszystko zawartości twojego CDROM, będziesz chciał nie użyć żadnej symulacji obuwającej. Musisz zmodyfikować twoją rozmowę mkisofs jak to (to jest już nie konieczne, by wyścielić obraz do 1.44 MB):

mkisofs - nie nie - emul - but - but but - ładunek ładunek - sekunda 0x7c0 - but but - ładunek ładunek - oceniają 4 \

- początek b.img - cd zera.iso cdimage

- but - ładunek- wielkość' opcja daje liczbę 512 - bajtu sektorów, by załadować od obrazu buta. To powinno być wielokrotnością 4. Nasze przykłady tutaj są małe, więc 2048 bajtów jest piękne.

Musisz teraz dostać liczbę jazdy CDROM, by uzyskać dostęp do to i używasz' terminate symulacja Dysku' zadziałać, by zrobić, że -- chyba, że każesz temu nie skończyć symulację. Ta funkcja wypełni pakiet specyfikacji. To jest smaczny 18 pakietu bajtu, ale rzecz naprawdę potrzebujesz wiedzieć od tego jest numerem jazdy, który jest trzecim bajtem. W ten sposób:

 mov ah, 0x4b    ; terminate disk emulation
mov al, 0x1 ; return status only -- don't terminate emulation
mov dl, 0x80 ; drive number to terminate
mov si, specification_packet ; empty specification packet
int 0x13

; ....

specification_packet: times 0x12 db 0x0

Teraz przeczytać dane od CDROM tobie używają powiększonej funkcji czytania z niedawno nabytym numerem dysku. Też mógłbyś chcieć widzieć co LBA (Logiczny Adres Bloku) dla obrazu obuwał był. To jest w bajtach 4..7 z pakietu specyfikacji. Oczywiście, nie potrzebujesz przeładować twojego ładowacza buta, ale w moim przypadku to było w LBA 0x196 więc tylko załadowałem, że do linearnego 0x7000. Zastąp niesztywne czytanie kodować twojego napisał wcześniej z tym:

mov ah, 0x42    ; extended read
mov dl, [specification_packet + 2] ; drive number
mov si, disk_address_packet
int 0x13

; ....

disk_address_packet:
db 0x10 ; packet size
db 0x0 ; reserved, must be 0
dw 0x1 ; number of blocks to read
dw 0x0 ; offset of buffer address
dw 0x700 ; segment of buffer address
dd 0x196 ; absolute block number

Teraz możesz uzyskać dostęp do cały dysk. Aby skoczyć od tryb rzeczywisty trybowi chronionemu ciebie tworzą Globalny Stół Deskryptora (GDT) i ustawiony GDTR ( Rejestr GDT) do opisu tego, ustawić kawałek PE regulującego rejestru, skoku zresetować CS i jesteś dobry, by pójść. Deskryptory segmentu w GDT całkiem interesują. Możesz mieć, aż 8192 segmentów w GDT opisującym segmenty dla danych, kodu, Miejscowe Stoły Deskryptora (LDT), bramy rozmowy, bramy pułapki, przerywają bramy, etc. Tutaj, tylko zrobimy to więc masz płaski 4GB modelu pamięci dla kodu i dostępu danych (i.e., który możesz uzyskać dostęp do cokolwiek jako linearna pamięć).

GDT jest złożony z segmentu deskryptorów, każdych 8 bajtów długo. Pierwszy jest pusty. Format deskryptora segmentu jest złożony i poleciłbym kontrolowanie przewodnika producenta systemu obsługiwania przez Intel, ale tutaj tylko ustawiamy segment kodu i jeden segment danych. Oni są obie w pierścionek 0 poziomie ochrony, znacząc nieograniczony dostęp. Ich baza ( punkt początkowy) ma 0 lat i ich ograniczenie ma 0xfffff lat * 4KB (e.g. 4GB). Segment danych jest czytelny i writable i segment kodu dostosowuje się, który zasadniczo środki nie potrzebujesz wejść tego od przerwać. Wszystko to i więcej są kodowane do ich małych struktur. Tutaj jest jak to okazuje się:

    GDTR:           ; here is what we put in the GDT Register
dw GDT_end - GDT - 1 ; 0x17 as the size
dd GDT ; the location

GDT:
dd 0x0, 0x0 ; null descriptor
dd 00000000000000001111111111111111b ; data segment descriptor
dd 00000000110011111001001000000000b
dd 00000000000000001111111111111111b ; code segment descriptor
dd 00000000110011111001110000000000b
GDT_end:

So, we just load that into the GDTR after blocking interrupts and then switch to protected mode:

cli ; turn off interrupts
lgdt [GDTR] ; load our GDT into GDTR
mov eax, cr0 ; get control register 0
or al, 1 ; set PE bit
mov cr0, eax ; set control register 0

Protected mode will not be turned on into till we clear the fetch-ahead buffer by jumping or a similar operation. In protected mode, segment registers actually point to a location in the GDT and then have the offset relative to that. So, the code segment is the third segment descriptor and is 16 bytes in, thus:

        jmp 0x10:start_pm

[BITS 32] ; we are in 32-bit mode
start_pm:
xor edi, edi
xor esi, esi
mov ax, 0x8 ; load data segment descriptor offset
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax

I, w ten sposób jesteś w kodzie. Teraz, skoczyłbyś do absolutnego miejsca zawierającego twoje jądro. Kopiowanie zawartości CDROM do wyższej pamięci może być złożone. Możesz też skoczyć z powrotem i naprzód od trybu chronionego do tryb rzeczywisty, albo użyć nierealnego trybu dla transferów. To jest konieczne, ponieważ rozmowy BIOS nie będą pracowały w trybie chronionym. To jest nie trudny, by zrobić w tym momencie, jednak. Oprócz robienia tego, też prawdopodobnie chciałbyś ustawić jakiegoś przerywają segmenty i być może witka do trybu VGA przez BIOS przed zatrzymywaniem w domu tryb chroniony. Zostawię te rzeczy, aż do ciebie.

Mógłbyś chcieć zrobić wszystko to w miłym imitatorze jak Bochs albo VMware. Zauważ, że Bochs będzie radził twoją niesztywną grzywnę kodu buta, ale to brakuje koniecznego dla żadnej symulacji obuwającej. Też, VMware widocznie ma pluskwę taką, że to nie pozwoliłoby mi przeczytać CD w żadnej symulacji obuwającej witkę _and_ do tryb chroniony. Inne przerwania wydawały się uneffected. Kiedy wypaliłem kod do CDROM i przetestowałem to, chociaż, to doprowadziło grzywnę. YMMV.

Baw się programowanie do maszyny! :)

1

komentarz[0] |

Copyright 2006 - 2007 E-comet.info. Wszelkie prawa zastrzeone.

programy,artykuy,gry online,teledyski,filmiki,smieszne reklamy,sterowniki,kodeki,programy,program,download, downloads,security,bramka sms, teledyski,antywirusy,darmowe free program,programy p2p,tapety,programy biurowe,programy dla firm,narzdzia dyskowe,edytory,gry strategiczne,gry przygodowe,gry sportowe, symulatory, gry rpg,gry karciane, gry zrecznosciowe. Zapraszamy.
0.028 |