Ordner wechseln

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Ordner wechseln

Beitragvon Darthshoot » Donnerstag 13. Juli 2006, 16:50

Hallo!

Also zu D:\Programme gelangt man mit einem Assemblyscript so:

Code: Alles auswählen
InitialDelta:
   
   mov ah, 0eh
   mov dl, 2
   int 21h

   lea dx, CDirRoot
   mov ah, 3bh
   int 21h

CDirRoot db 'D:\Progra~1',0


Aber wie gelange ich in System32? Weil dort sind ja die .tmp Dateien, indenen es die ganze Zeit im letzen Thread von mir ging (0b.tmp).

Könnte mir da einer helfen?

Danke im Voraus.
MfG Darthshoot
Hallo! Hallo!
Darthshoot
Member
 
Beiträge: 23
Registriert: Dienstag 11. Juli 2006, 20:25

Beitragvon crack » Donnerstag 13. Juli 2006, 16:53

Zwei Fragen: welches OS? und auf welcher Platte installiert?

Bei win2000 auf LW C:\ sähe die Pfadangabe so aus:

"c:\winnt\system32"
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Darthshoot » Donnerstag 13. Juli 2006, 19:21

WinNT HomeEdition. Der Pfad zu System32 ist so:

C:\WINDOWS\System32\
Hallo! Hallo!
Darthshoot
Member
 
Beiträge: 23
Registriert: Dienstag 11. Juli 2006, 20:25

Beitragvon crack » Freitag 14. Juli 2006, 12:06

Hallo Darthshoot,

Also dann müsstest Du dort auch die gesuchten Dateien finden. Entweder gibst Du den vollständigen Pfad direkt beim Funktionsaufruf an, oder wechselst mit int 21h funktion 3bh (CHDir) dorthin. Noch eine dritte Möglichkeit wäre den Pfad für Dateien mit der Endung .tmp bei der Pfadangabe der Umgebungsvariablen zu setzen, aber das könnten einzeln e Programme auch ignorieren.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Darthshoot » Freitag 14. Juli 2006, 17:33

Hmm also mit "CDirRoot db 'C:\WINDOWS\',0" komme ich auch nicht in WINDOWS. Ich komme auch nicht mit 'C:\' in C:\. Allerdings komme ich mit

Code: Alles auswählen
   mov ah, 0eh
   mov dl, 2
   int 21h


in C:\. So müsste man doch auch irgendwie in WINDOWS und dann in System32 kommen, oder?
Hallo! Hallo!
Darthshoot
Member
 
Beiträge: 23
Registriert: Dienstag 11. Juli 2006, 20:25

Beitragvon crack » Freitag 14. Juli 2006, 17:49

Nein, die int 21 Funktion 0e ist lediglich 'aktives Laufwerk wechseln'. Aber, was mir eingefallen ist: das Problem könnten die Zugriffsrechte sein. 'per default' sind die Windowssystem Ordner ja nicht zum schreiben, löschen, ändern oder evtl. lesen freigegeben, daher kann es natürlich gut möglich sein das dies auch deinem Programm verwehrt wird. Ob das so ist und ändern kannst Du das in der Systemsteuerung unter 'Ordneroptionen' oder durch das Kontextmenu wenn Du den Ordner linksklickst, und dort unter 'Freigaben', wobei ich sagen muss das diese Methoden des 'Zugriffsrechtemanagements' selbstverständlich von Windowsversion zu Windowsversion differieren :roll:
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Darthshoot » Freitag 14. Juli 2006, 17:54

Lässt sich sowas nicht gleich im selben Assemblerscript realisieren?
Irgendwie mit:

Code: Alles auswählen
mov ax, 4301h ; initialisiert eine Löschung der Attribute vom Ordner
   push ax ; sichert sie vorher ab
   xor cx, cx ; löscht sie
   lea dx, Ordner ; C:\WINDOWS\
   int 21h


So etwa. Allerdings müsste man evt. noch mit öffnen und sowas arbeiten mit der Angabe von 10h (Subdirectory).

Kannst du mir das mal genauer erklären. Falls das geht, was ich oben beschrieben habe, dann wie genau geht es? Danke.
Hallo! Hallo!
Darthshoot
Member
 
Beiträge: 23
Registriert: Dienstag 11. Juli 2006, 20:25

Beitragvon crack » Freitag 14. Juli 2006, 18:16

Ja, ok, dann müsste das ungefähr so ablaufen:
mit dem Vollständigen Pfad zum Ordner und der Int21h Funktion 43h änderst Du die Attribute. Dann kannst Du entweder
1. über die Absolute Pfadangabe "c:\windows\system32\dateiname.tmp" oder
2. durch wechsel in das Unterverzeichniss mit der Funktion 3bh, an die Betreffenden Dateien gelangen.
Allerdings, nochmal drüber nachgedacht: die Zugriffsrechte sind von den Dateiattributen unabhängig, die Zugriffsrechte beziehen sich auf angemeldeten User, und den Ordner, wärend die Dateiattribute sich lediglich auf die Datei beziehen, was da jedoch exakt blockieren könnte, könntest Du durch abfrage des 'Returncodes' ermitteln. Wenn bei diesen Int21h Funktionen ein Fehler auftritt, wird das carry flag gesetzt und im AX Register eine Fehlernummer übergeben, und hier könntest Du dann einen entsprechenden Fehlerabfang 'einflechten' (ist bei Dateioperationen sowieso recht hilfreich :wink: ). Wärend ich jetzt mal in aller Ruhe ein Tasse Kaffee trinke, und eine Zigarette rauche lasse ich mir das Problem mal kreuz und quer durch den Kopf gehen, vielleicht wäre es möglich das Du mal den kompletten Quellcode den Du da schon hast postest oder mir per Mail schickst, dann wäre das 'Troubleshooting' evtl. etwas einfacher ...
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Darthshoot » Freitag 14. Juli 2006, 18:31

Code: Alles auswählen
.model tiny
.code
org 100h

System32:
   mov ah, 0eh
   mov dl, 2
   int 21h

   mov ah, 3bh
   lea dx, CDirRoot
   int 21h

mov ah, 41h
lea dx, Files
xor cx, cx
int 21h

CDirRoot db 'C:\WINDOWS\System32\',0
Files db '*.tmp',0

end System32


Ich komme ja in D:\Programme rein. Aber in System32 nicht. Das bedeutet, dass es wirklich irgendwas mit Rechten zu tun haben muss. Hmm oder nicht? :/ Ich weiß einfach nicht weiter.[/code]
Hallo! Hallo!
Darthshoot
Member
 
Beiträge: 23
Registriert: Dienstag 11. Juli 2006, 20:25

Beitragvon crack » Freitag 14. Juli 2006, 18:45

Probier doch mal obs bei einen neuen Ordner auf C:\ sonst funktioniert, ja, ich denke es liegt an den Zugriffsrechten.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Darthshoot » Freitag 14. Juli 2006, 18:50

Es geht auch unter keinem neuen Ordner. :(
Hallo! Hallo!
Darthshoot
Member
 
Beiträge: 23
Registriert: Dienstag 11. Juli 2006, 20:25

Beitragvon crack » Freitag 14. Juli 2006, 19:10

Dann dürfte das ein Problem des gesammten Laufwerks C: sein, Wenn das Laufwerk C: generell nicht freigegeben ist, dann kann man auch den Ordnern in C: keine Freigaben erteilen, so habe ich zumindest das Prinzip der 'Rechtevererbung' bei Windows verstanden. Also müsstest Du auf dem Arbeitsplatz C: anklicken, und 'freigeben', und danach die Ordner auf die Du zugriff möchtest 'freigeben' bzw. denen wo kein Zugriff drauf erfolgen soll die Freigabe entziehen.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Darthshoot » Freitag 14. Juli 2006, 19:11

Hmm dort scheint auch alles freigegeben zu sein.
Hallo! Hallo!
Darthshoot
Member
 
Beiträge: 23
Registriert: Dienstag 11. Juli 2006, 20:25

Beitragvon crack » Freitag 14. Juli 2006, 19:17

Oh, sorry, heute pack ich das nicht mehr, ich denke das WE mal drüber nach ... auf www.hvviehof.de findest Du meine Handynummer.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Darthshoot » Freitag 14. Juli 2006, 19:35

Awas. Ich hab Zeit.. bin eh schon mehr als eine Woche an diesem Problem dran ^^
Hallo! Hallo!
Darthshoot
Member
 
Beiträge: 23
Registriert: Dienstag 11. Juli 2006, 20:25

Nächste

Zurück zu Assembler

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron