Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Windows Dieses Forum dient den Diskussionen rund um alle Microsoft-Betriebssysteme.

Progrämmchen in Bootsektor bringen

Diskussion: Progrämmchen in Bootsektor bringen im Forum Windows, in der Kategorie Operating Systems; Anzeige Hallöle, hab mir ein kleines Programm in Asm geschrieben (nichts besonderes darf ja eh iwi nur 512mb groß sein) ...

Antwort
Alt 10.06.09, 13:41   #1 (permalink)
 
Registriert seit: 08.08.08
Gapa Leistung: Facit NTK
Gapa eine Nachricht über ICQ schicken
Likes: 0
Standard Progrämmchen in Bootsektor bringen

Anzeige

Hallöle,

hab mir ein kleines Programm in Asm geschrieben (nichts besonderes darf ja eh iwi nur 512mb groß sein) welches nen Begrüßungstext ausgibt. Nun meine Frage:

1. Wie befördere ich das Programm in den Bootsektor meiner Festplatte noch vor dem Betriebssystem? PS: Hab nur eine Partition C:!

2. Das Programm ist mit dem "alten" Assembler geschrieben, d.h. es funktioniert mit Interrupts. Ich verstehe noch nicht allzuviel von Interrupts und frage mich deshalb, ob das die einzige Methode ist, Funktionen direkt über die CPU ausführen zu lassen ohne Bibliotheken von Windows benutzen zu müssen? Wenn dem so wäre, dann hätte ich doch mit meinem "neueren" masm32 ein Problem, da man ja keine Interrupts mehr benutzt sondern auch auf die Windows-Bibliotheken zugreift, oder hab ich das falsch verstanden?


Hoffe auf Hilfe!

PS: ich würde hier gern auch noch auf meinen anderen Thread verweisen, der bisher noch unbeantwortet ist und mir eine Antwort wirklich wichtig ist : Eigenen Shell-Ordner erstellen

PS2: Ich weiß dass dieses Thema vielleicht nicht genau in dieses Unterforum passt, jedoch haben meine Fragen doch auch etwas mit Windows zu tun deshalb...bitte ich um Verständnis!

Viele Grüße
Gapa

Gapa ist offline   Mit Zitat antworten
Alt 10.06.09, 15:30   #2 (permalink)
 
Registriert seit: 06.05.04
RedEagle Leistung: Facit NTK
RedEagle eine Nachricht über ICQ schicken
Likes: 0
Standard

1. der Bootsektor ist nur 512Byte groß.

2. Die win-bibliotheken, bzw generell Bibliotheken haben dort nichst zu suchen.

3. int wird eher bei APIs eingesetzt. Normale Funktionsaufrufe werden per call gemacht. entweder call offset um eine funktion des eigenen segmentes aufzurufen, oder call segment:offset für ein segmentübergreifenden Call.

4. Wenn du nur eine Festplatte hast, rate ich davon ab, dessen bootsektor zu überschreiben. Dadurch zerstörst du u.a. dein Dateisystem (bzw einen wichtigen Teil davon). Du kannst ihn mit tools wie rawrite auf eine Diskette kopieren. (unter Linux per dd - vieleicht gibts da ja auch ein win-klon...).
RedEagle ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 10.06.09, 17:46   #3 (permalink)
 
Benutzerbild von Tenchuu
 
Registriert seit: 21.01.07
Tenchuu Leistung: Facit NTK
Tenchuu eine Nachricht über ICQ schicken
Likes: 0
Standard RE: Progrämmchen in Bootsektor bringen

Zitat:
Original von Gapa
hab mir ein kleines Programm in Asm geschrieben (nichts besonderes darf ja eh iwi nur 512mb groß sein)
Made my day
Tenchuu ist offline   Mit Zitat antworten
Alt 10.06.09, 19:04   #4 (permalink)
sw33tlull4by
Guest
 
Likes:
Standard

@Tenchuu
Ging mir genauso
@Redeagle
Ja gibt es.
ist ua auch bei der IDE Dev-C++ von Bloodsheed enthalten.
  Mit Zitat antworten
Alt 12.06.09, 20:06   #5 (permalink)
Themenstarter
 
Registriert seit: 08.08.08
Gapa Leistung: Facit NTK
Gapa eine Nachricht über ICQ schicken
Likes: 0
Standard ...

Hallo,

achso dann ist halt der ganze Bootsektor 512b groß^^
wow dann ist Windows aber klein, oder??

Also wenn ich weder int-befehle noch sonstige wie invoke oder so verwenden darf, wie ist es mir dann überhaupt möglich, eine Messagebox zu erstellen??
Welche Funktionen stehen mir denn überhaupt zur Verfügung solange Windows noch nicht geladen ist? Klar kann ich irgend ne Adresse mit call aufrufen, jedoch welche Funktionen gibts überhaupt, die ich dann aufrufen könnte?

Und wieso zerstöre ich damit mein Dateisystem? Prinzipiell ist es anscheinend doch möglich sowas zu machen wenn mich nicht alles täuscht, oder?

Viele Grüße
Gapa
Gapa ist offline   Mit Zitat antworten
Alt 12.06.09, 20:23   #6 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Ich gehe bei 512Mb eigentlich von einem Tippfehler aus
http://de.wikipedia.org/wiki/Master_Boot_Record
hat erstmal nichts mit dem eingesetzten OS gemeinsam.

Also, Du kannst natürlich mit dem älteren MASM programmieren (hier im Board gab es schon oft Links zum Thema 16-bit mit MASM), oder mit NASM (damit lässt sich direkt "RAW" Code generieren).

Zu den Interrupts: achte darauf, dass Du nur BIOS Interrupts verwendest, an Funktionen hast Du nur das, was Du selbst definierst .

Zum Testen: das Ergebnis mit einem Brennprogramm als IMG "brennen" (also Image erstellen) und in einem Emulator (BOCHS/QEMU/VirtualPC/VMWare) testen (ist ungefährlicher ). Ansonsten hast Du 2 Probleme:
1)winbootloader wird überschrieben (wie startest Du nun Windows? )
2)beim "Überschreiben" könnte was schiefgehen und es werden mehr als 512Bytes überschrieben - ab da besteht eben die Gefahr, dass auch das Dateisystem schaden nimmt (die genaue Struktur von NTFS und FAT habe ich allerdings nicht im Kopf ).
Wenn Du es aber unbedingt machen möchtest: es gibt Hexeditoren (wie http://mh-nexus.de/en/hxd/) mit denen man auch die Festplatte "direkt" editieren kann. Damit sollte es auch möglich sein, die ersten 512Bytes mit dem gewünschten Inhalt zu überschreiben.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 13.06.09, 09:57   #7 (permalink)
 
Benutzerbild von bad_alloc
 
Registriert seit: 27.12.07
bad_alloc Leistung: 8086
Likes: 39
Standard

Zitat:
Also wenn ich weder int-befehle noch sonstige wie invoke oder so verwenden darf, wie ist es mir dann überhaupt möglich, eine Messagebox zu erstellen??
wie willst du das ohne betriebsystem und in 512 byte realisieren?

Zitat:
Welche Funktionen stehen mir denn überhaupt zur Verfügung solange Windows noch nicht geladen ist? Klar kann ich irgend ne Adresse mit call aufrufen, jedoch welche Funktionen gibts überhaupt, die ich dann aufrufen könnte?
bestenfalls die vom bios, sonst ist ja nichts vorhanden

Zu den 512 bytes: die reichen für deine zwecke nur, um zu einer anderen stelle zu springen. auch bootloader wie grub stehen dort nicht vollständig drin, sondern werden nur von dort gestartet.
__________________
You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte.
|[A]| = p(·,|[A]|)+1
bad_alloc ist offline   Mit Zitat antworten
Alt 19.06.09, 22:11   #8 (permalink)
 
Benutzerbild von Tenchuu
 
Registriert seit: 21.01.07
Tenchuu Leistung: Facit NTK
Tenchuu eine Nachricht über ICQ schicken
Likes: 0
Standard Re: ...

Zitat:
Original von Gapa
Hallo,

achso dann ist halt der ganze Bootsektor 512b groß^^
wow dann ist Windows aber klein, oder??
Made another day!
I wants moar!
Tenchuu ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Operating Systems » Windows » Progrämmchen in Bootsektor bringen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Was ist "/var/log/y2log" und LILO-Bootsektor hofpower Linux/UNIX 1 21.04.05 14:17
Bootsektor kaputt -Dead,' Die Problemzone 3 31.12.04 17:30
assembler mit c kombinieren für bootsektor HellKnight Linux/UNIX 0 22.01.04 20:01
Bootsektor zerschossen sTEk Die Problemzone 2 28.12.03 23:20


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61