Lowlevel

Lowlevel => OS-Design => Thema gestartet von: Manello am 16. September 2013, 19:45

Titel: Pulsar Fehler
Beitrag von: Manello am 16. September 2013, 19:45
So da bin ich wieder und habe mich wieder an mein OS gesetzt.
Es kann nun Starten, eine Eingabe öffnen und einen Text ausgeben, und auf Befehle reagieren.
Jedoch ist hier mein Problem:
http://www.mediafire.com/?h5cv19kaexxoobk
Woher kommt denn bitte Schön die Help Nachricht im Copyright ??????
Ich bin jetzt echt verplüfft wie das der PC hinbekommt O.o
Hier die Einleitung von Hintergrund und Überschrift
setup_bg:
mov dx,0
call move_cursor

mov ah,09h
mov al, ''
mov bh,0
mov bl,00000111b
mov cx,2400
int 10h

mov si,version ;Versionsanzeige
mov dx,1
call print

.message:
mov dx,0
call newline
mov si,copyright ;Copyright Anzeige
call print

Hier ein Teil der CMD
cmd:
call newline

mov si,promt
mov dx,2
call print

.keybuffer:
mov dx,0
mov di,input_buffer
mov al,0
mov cx,256
rep stosb

mov ax,input_buffer
mov di,input_buffer

.loop:
call keyboard

cmp al,13
je .Done

cmp al,8
je .backspace

jmp .character

.backspace:
mov ah,0Eh
mov al,8
int 10h
mov al,32
int 10h
mov al,8
int 10h
dec di
jmp .loop
.character:
mov ah,0Eh
int 10h
stosb
jmp .loop
.Done:
mov ax,0
stosb

call newline

mov si,input_buffer
cmp BYTE [si],0
je cmd

mov di,help_string
call compare
jc help

mov si,no_command
call print

jmp cmd

Und noch die Funktionen dazu:

move_cursor:
pusha
mov ah,02h
mov bh,0
int 10h
popa
ret

print:
lodsb
cmp al,0
je print_done
mov ah,0eh
int 10h
jmp print

print_done:
cmp dx,1
je setup_bg.message
cmp dx,2
je cmd.keybuffer

jmp cmd

newline:
pusha
mov ah,0Eh
mov al,13
int 10h
mov al,10
int 10h
popa
ret

compare:
pusha
.loop:
mov al,[si]
mov ah,[di]

cmp al,ah
jne .not_equal

cmp al,0
je .equal

inc si
inc di
jmp .loop

.not_equal:
popa
clc
ret

.equal:
popa
stc
ret

keyboard:
pusha
mov ax,0
mov ah,10h
int 16h
mov [.buffer],ax
popa
mov ax,[.buffer]
ret

.buffer dw 0

help:
mov si,help_message
call print
jmp cmd


Ich kann keinen Fehler finden, bin echt Ratlos ,
glaube schon fast der PC will mir eins Auswischen  :x
Titel: Re: Pulsar Fehler
Beitrag von: Jidder am 16. September 2013, 19:53
Wie ist denn help_message definiert? Ich vermute das fehlt ein 0-Byte am Ende.
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 16. September 2013, 19:58
Oh, an einer Deffinierung an der Nachricht davor hat die 0 gefehl, daher
hat der die help Nachricht mitgezählt.

Aber ich habe noch eine Frage: Wie kann ich verhindern das man Promt löschen kann? Also
dass > Zeichen ? Weil wenn man es löscht und einmal etwas eingibt nimmt er keine Befehle
mehr an, und ich möchte es allgemein nicht das man es kann.
Muss ich da einen extra abgleich machen, ob die Delete Taste gedrückt ist und das Zeichen ein > ist,
und damit nicht gelöscht werden kann, oder gibt es da einen Trick?
Titel: Re: Pulsar Fehler
Beitrag von: Jidder am 16. September 2013, 20:09
Ich würde da mitzählen wieviele Zeichen eingegeben wurden, also pro Zeichen einen Zähler um 1 erhöhen. Immer wenn Backspace gedrückt wird, wird dieser Zähler wieder um 1 verringert. Außer wenn der Zähler bereits 0 ist, dann wird die Backspace-Taste ignoriert.
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 16. September 2013, 20:39
Hmm keine schlechte Idee, werde ich gleich morgen ausprobieren.
Titel: Re: Pulsar Fehler
Beitrag von: streetrunner am 17. September 2013, 10:07
Falls du einen verschiebbaren Cursor hast würde ich das an der Position des selbigen festmachen, denn wenn dieser an den Anfang verschoben wird nützt einem die Anzahl der eingegebenen Zeichen herzlich wenig.
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 17. September 2013, 15:12
Danke es hat funktioniert!
Und nochwas: Wenn ich den PC herunterfahre, weis ich nicht ob er wirklich aus ist,
da mein VM Player direkt wieder startet

shutdown:
   mov   ax,5307h
   mov   cx,0003h
   mov   cx,0001h
   int   15

Schaltet es den PC wirklich aus oder ist es nur ein Restart?
Titel: Re: Pulsar Fehler
Beitrag von: Jidder am 17. September 2013, 16:49
shutdown:
   mov   ax,5307h
   mov   cx,0003h
   mov   cx,0001h
   int   15

Du überschreibst da cx. Da sollte wohl bx stehen.

Schaltet es den PC wirklich aus oder ist es nur ein Restart?

Laut Dokumentation schaltet es den PC aus. Es ist allerdings möglich, dass das BIOS buggy ist.
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 17. September 2013, 19:11
Alles klar, und noch eine Frage für die Zukunft:

"Falls" ich das OS mal veröffentlichen sollte, wie kann ich es vor Datenklau schützen?
(Meine Dateien liegen ja offen rum, und kann sie öffnen, wie kann ich sowas ändern?)
Wie weit geht das Urheberrecht?
Titel: Re: Pulsar Fehler
Beitrag von: Svenska am 17. September 2013, 23:04
Hallo,

"Falls" ich das OS mal veröffentlichen sollte, wie kann ich es vor Datenklau schützen?
Wenn dein Source nicht veröffentlicht wird (also nicht im Internet steht), dann kennt ihn keiner. Aus der fertigen Binärdatei wieder Quelltext zu machen ist recht aufwändig (sofern du gewisse Dummheiten nicht machst). Gegen den "bösen Gegner"(TM) hast du trotzdem keine Chance.

(Meine Dateien liegen ja offen rum, und kann sie öffnen, wie kann ich sowas ändern?)
??? Wenn du deinen Quelltext ins Netz stellst, bist du selbst schuld, wenn ihn jemand kopiert...

Wie weit geht das Urheberrecht?
Wenn du wirklich eine kommerzielle Verwendung anstrebst, dann beschäftige dich mit Software-Lizenzen (insbesondere GPL und deren Folgen!) und strebe ein gemütliches Gespräch mit dem Anwalt deines Vertrauens an. Was in Foren steht, ist sowieso nie die ganze Wahrheit.

Mal abgesehen davon, dass du dein OS vermutlich sowieso nicht gewinnbringend verkaufen kannst.

Gruß,
Svenska
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 18. September 2013, 16:48
Zitat
Wenn du deinen Quelltext ins Netz stellst, bist du selbst schuld, wenn ihn jemand kopiert...

Nein, ich meinte es das jemand eben die Bin Dateien wieder Quelltext macht, sieht man ja schon
gut wie das ganze funktioniert. Daher könnte man es doch mehr oder weniger kopieren oder
nachsehen wie es genau funktioniert, ich meine kann ich da nicht irgendwie ein Schutz über die Datei legen?
Titel: Re: Pulsar Fehler
Beitrag von: kevin am 18. September 2013, 16:50
Was man ausführen kann, kann man auch lesen.
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 18. September 2013, 16:51
Eben^^ Ich meine WIndows schützt sich sicherlich auch gegen soetwas...
Titel: Re: Pulsar Fehler
Beitrag von: Jidder am 18. September 2013, 17:01
Wogegen willst du dich denn schützen? Nur gegen das Lesen? Oder dagegen, dass jemand dein Produkt ohne deine Zustimmung verkauft? Microsoft hat für diesen Fall Anwälte. Oder willst du dich gegen was anderes schützen?
Titel: Re: Pulsar Fehler
Beitrag von: Svenska am 18. September 2013, 17:13
Wenn dein Source nicht veröffentlicht wird (also nicht im Internet steht), dann kennt ihn keiner. Aus der fertigen Binärdatei wieder Quelltext zu machen ist recht aufwändig (sofern du gewisse Dummheiten nicht machst). Gegen den "bösen Gegner"(TM) hast du trotzdem keine Chance.
Reicht dir diese Aussage nicht?

Was du suchst, sind Techniken wie "Obfuscation" oder Methoden, die ein Debuggen/Reverse Engineering erschweren. Auch Hardware-Dongles kommen gerne zum Einsatz, ähnlich wie Aktivierungszwänge und unfreiwilliges Nach-Hause-Telefonieren. Gegen professionelle Angreifer (u.a. Chinesen, Amerikaner) sind sie machtlos. Im Normalfall geht es neben dem technischen Verhindern von bösen Dingen vor allem um das Offensichtlichmachen des "besonderen Schutzes" (z.B. durch Verschlüsselung), damit die gesamte Maschinerie der Gesetzgebung auf den Bösewicht losgelassen werden kann.

Wie gesagt, deine Ansatzpunkte dafür sind Lizenzen, Gesetze und Anwälte. Aber wenn du das willst, stehst du auf der anderen Seite.

Gruss,
Svenska
Titel: Re: Pulsar Fehler
Beitrag von: kevin am 19. September 2013, 09:41
Was man ausführen kann, kann man auch lesen.
Eben^^ Ich meine WIndows schützt sich sicherlich auch gegen soetwas...
Was genau an meiner Aussage hast du nicht verstanden? Windows-Binaries kann man ausführen, also kann man sie auch lesen. Punkt.
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 19. September 2013, 14:44
Ah, jetzt habs ich.  :-o
Hätte aber nicht gedacht das es so ist, eher
codiert oder so, aber jetzt weis ich es ja.

Edit:
Noch ein Problem:
Ich habe nun mit einer TUI angefangen, und entwickle gerade eine "Grafik Engine" dafür,
und habe jetzt dass Probelm, dass ich Variablen nicht verändern kann,
ich habe mal irgendwo in einem Buch gelernt wie das geht, weis es jetzt jedoch nicht mehr :(
Hier der Code:
mov tui_h,50
mov tui_b,80
mov tui_al,0
mov tui_ao,0
Die Variablen werden ganz normal vorher mit db definiert.
Der Assemlber sagt mir dass es eine falsche combination
aus opcode und operanden ist. Wie kann ich das denn
nochmal anders machen?
Titel: Re: Pulsar Fehler
Beitrag von: kevin am 20. September 2013, 09:17
Ah, jetzt habs ich.  :-o
Hätte aber nicht gedacht das es so ist, eher
codiert oder so, aber jetzt weis ich es ja.
Codiert in x86-Instruktionen ist es. Aber das schöne an Codierungen ist, dass man sie umdrehen kann - nennt sich in diesem Fall Disassembler. ;)

Du könntest den Code natürlich auch so verschlüsseln, dass ihn keiner mehr entschlüsseln kann. Das Problem damit ist dann nur, dass das auch der Prozessor nicht mehr kann und der Code damit nicht mehr ausführbar wäre.

Zitat
mov   tui_h,50
   mov   tui_b,80
   mov   tui_al,0
   mov   tui_ao,0
Deine Labels werden beim Assemblieren einfach durch Zahlen ersetzt, genauergesagt durch die Adresse des Symbols. Eine konstante Zahl in eine andere konstante Zahl kopieren zu wollen ist Blödsinn. Vermutlich meinst du mov [tui_h], 50.

Wenn dir solche Grundlagen fehlen und du sie nicht selber gelöst bekommst, ist es aber vermutlich eine schlechte Idee, eine komplette Benutzeroberfläche in Assembler zu schreiben.
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 20. September 2013, 15:07
Ich meine das es keine Grundlage ist, ich meine in meinem Buch (Assembler Maschienennahes Programmierne von anfang an)
habe ich gelernt das man diese Variablen einfach so überschreiben kann, und es hat mit dem
Assemblerprogramm von der CD auch geklappt. Momentan weies ich echt nicht mehr was der eche x86 assembler ist O.o
Der eine sagt dass, die andere Website sagt dies, und das Buch sagt wiederum nein so geht es gar nicht,
ist es denn wirklich so schwer den reinen Assembler zu finden/nutzen??
Titel: Re: Pulsar Fehler
Beitrag von: kevin am 20. September 2013, 17:39
Ungefähr so schwer wie den reinen Compiler zu finden (ohne zu sagen, für welche Sprache).
Titel: Re: Pulsar Fehler
Beitrag von: Svenska am 20. September 2013, 23:36
Hallo,

ist es denn wirklich so schwer den reinen Assembler zu finden/nutzen??
Anderer Assembler, (teilweise) andere Syntax. Mein ASM-Buch schießt sich auf MASM ein (mit gelegentlichen "und so geht's bei TASM"-Einschüben), was beides vom NASM nicht so richtig gemocht wird. Zumal es für x86 noch zwei grundverschiedene Syntaxen gibt (Intel-/AT&T-Syntax).

Wenn dein "tui_ao" an Adresse 50 liegt, dann ist ein "mov 50,0", schon inhaltlich nicht sehr sinnvoll. Da hat der Assembler allen Grund zum Meckern. Der nette Unterschied zwischen Hochsprachen und Assembler ist, dass Hochsprachen verschiedene Datentypen unterscheiden können. Beispielsweise kennt C den Unterschied zwischen Adressen (Pointer) und Daten (normale Variablen) und hätte dich in dem Fall besser darauf hinweisen können, was du falsch gemacht hast. Sieh das als Tipp. :-)

Übrigens fände ich es schön, wenn du für verschiedene Probleme auch verschiedene Threads aufmachen würdest. Das hilft dann vielleicht denen, die ähnliche Probleme haben und über die Suchfunktion auf die Lösung stoßen. (Du kannst natürlich mehrere Probleme zusammenfassen, aber es ist halt unschön, Threads immer wieder mit neuen Problemen zu verlängern.)

Gruß,
Svenska
Titel: Re: Pulsar Fehler
Beitrag von: Manello am 21. September 2013, 21:00
Alles klar werde ich nächstes mal machen, wollte jetzt nur nicht 3 Threads im forum neu aufmachen^^