AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte JEDI Windows Security Code Library

JEDI Windows Security Code Library

Ein Thema von Dezipaitor · begonnen am 6. Nov 2007 · letzter Beitrag vom 15. Apr 2008
Antwort Antwort
Seite 3 von 4     123 4   
Dezipaitor
Registriert seit: 14. Apr 2003
Hallo Delphianer,

dies ist die erste öffentliche Bekanntmachung für etwas das ich mittlerweile fast ein Jahr entwickle. Zuvor hatte ich bereits schoneinmal eine Teil-Veröffentlichung gemacht. Im Laufe der Zeit hat sich einiges getan, und wenn ich auch noch nicht Releasestatus erreicht habe, ist die Bibliothek mittlerweile sehr nützlich. Zudem habe ich mich nach einigem Gerangel entschieden sie als OpenSource freizugeben. Dies geschieht aus der Hoffnung, dass Andere dazukommen und Verbesserungen beitragen oder sogar weitere Klassen hinzufügen. Die Veröffentlichung geschieht jedoch mit der ausdrücklichen Bitte die Bibliothek als ganzes zu verwenden und sie nicht als Selbstbedienungsladen zu sehen.

Was ist JEDI Windows API (JWA)?
Die JWA ist eine Bibliothek, die versucht soviele original Windows Header Dateien (C-Header) wie möglich nach Delphi zu konvertieren.

Was ist JEDI Windows Security Code Library (JWSCL) ?
Die JWSCL ist eine reine Klassenbibliothek, die die Programmierung mit der Windows API (in C geschrieben) vereinfachen soll.
Darunter fallen derzeit folgende Konstrukte:
*Erkennung der Windows Version
*Token
**Impersonation (Personifizierung)
**Benutzerlogin
*SID
*Access Control List
*Security Descriptor (Sicherheitsdeskriptor)
**Owner, Group, DACL, SACL
*WindowStation
*Desktop
*LSA (Teile)
*Rights mapping
*Gesicherte Objekte z.B. Dateien, Registry (+Vererbung), aber auch alle anderen Handles
*Credentials (Login Dialog)
*Verschlüsselung (MS Crypt API)
*Known SIDs
*Privilegien
*Security Dialogs (Sicherheitsdialog, wie man ihn bei der Dateisicherheit des Explorers sieht)
*Terminal Sessions
*Unicode + Ansicode
*Vista Elevation
*Vista Integrity Level

In Entwicklung:
*Terminal Server (u.a. Session shadowing) (40%)
*Secure Private Objects (Sicherung von benutzerdefinierten Strukturen mit Sicherheitsdeskriptor + opt. Vererbung) (20%)
*Group Policy (0%)
*Active Directory (0%)
*und weitere

Die JWSCL gibt es derzeit im BETA Status über Subversion (Versionsverwaltung) von SourceForge. Sie ist unter der GPL (wenn auch noch nicht in der Dokumentation erwähnt) oder MPL als OpenSource freigegeben.
Zusätzlich gibt es noch eine erweiterte Version der JEDI API Lib, die in demselben Subversion Repository liegt. Sie findet Verwendung in der JWSCL.

(Anonymer Zugriff)
Die URL ist über ein SVN Client, wie Tortoise SVN zu verwenden.

edit:Auf allgemeine Anfrage ist nun der Download des aktuellen Subversion Repository rev#30 von SF.net möglich. Das Archiv hat denselben Inhalt, wie ein Checkout über SVN.


Die JWSCL verwendet die neue JEDI API Lib (JWA). Dazu muss die JWA als Paket kompiliert werden.
1. Öffne die Projektgruppe im Ordner jwaapi\trunk\Packages, was zu deiner Delphiversion passt. Oder wenn nicht vorhanden, verwende eine ältere Version.
2. Kompiliere alle Pakete. Die DCU Dateien werden in einem Ordner "Bin" gespeichert. Dieser ist nochmals in vier weitere Unterordner aufgeteilt, die die verschiedenen Versionsarten (Debug/Release, Dynamic/Static) repräsentieren.
Die Dateien "JwaWindows.dcu" und "JwaVista.dcu" sind dann die entscheidenden Teile.
3. Kopiere dir den Pfad-Text von einem dieser vier Ordner. Ich empfehle für die Entwicklung Dynamic\Debug. Dieser Pfad wird der Suchpfad für JediAPI DCU Dateien in deinen neuen Projekten.

Diese Vorgehensweite ist empfehlenswert im Gegensatz zu der direkten Einbindung der Quelldateien. In diesem Fall müsste bei jeder Projekterzeugung alle Jedi API Lib Dateien erneut kompiliert werden - das dauert.

Die Verwendung der JWSCL ist dann einfach. Man muss nur den Suchpfad des eigenen Projekts noch durch den Pfad zur Quelle "jwscl\trunk\source" erweitern.


So, das wars für die Vorbereitung.
Einige Beispiele sind bereits in den Ordnern. Der Rest ist durch Ausprobieren erfahrbar

Zum BETA Status:
BETA Status bedeutet für die JWSCL, dass es noch viele unentdeckte Fehler gibt. Daher ist es nicht ratsam blindlings die Bibliothek in wichtigen Projekten einzusetzen. Ich verbiete es jedoch nicht! Ich werde mich jedoch bemühen, Fehler so gut wie möglich zu korrigieren. Ich rufe aber inständig andere Entwickler auf mich bei der Arbeit zu unterstützen. Tester suche ich daher weniger als Helfer.

Zur Kritik:
Ich nehme nur konstruktive Kritik an.

Zur Kommunikation:
Eine neue JEDI API Webseite ist im Aufbau. Ein Blog wird auf Assarbads Server entstehen, der auch Benutzerkommentare zulässt.
Wer Fragen hat, kann mich daher ersteinmal hier im Forum erreichen.

Zur Hilfe:
Wie schon geschrieben, suche ich eher Mitentwickler als reine Tester.
Ich suche aber auch Leute, die Beispiele für die JWSCL schreiben. Zudem können Artikel/Beispiele im neuen Blog abgelegt werden.

Zu meiner Hilfe:
Ich kann leider nur in Sachen JWSCL oder JWA helfen. Direkte Hilfe zur Unterstützung in Programmierung für Windows Sicherheit kann ich nicht geben. Bitte dazu das Forum benutzen.


So ich hoffe nun, dass Programmierung in Windows Sicherheit etwas einfacher wird....
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
 
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#21
  Alt 29. Nov 2007, 18:44
Zitat von Remko:
I noticed this issue too on BDS2006. Closing and restarting often helps (you can also try to close the handle eg with Process Explorer).
I already searched for the handle, but without any result.
And when I restart and want to compile it now, it's blocking again. But not until when I start the compile. Before the first compile I can open and save the file.

MfG
xZise

Zitat von Dezipaitor:
Das Problem habe ich auch. Es ist ein ganz merkwürdiger Fehler von TD - z.b. in D7 tritt er nicht auf.
Hier auf meinen PC hätte ich nicht D7 ...
Zitat von Dezipaitor:
Bis jetzt habe ich es lösen können, indem ich TD geschlossen habe und die Dateien woandershin kopiert habe (nicht verschieben) - am besten auf eine andere Partition.
Aha... Ich probiers mal aus! Auch wenn es leider nicht vielversprechend klingt.
Fabian
  Mit Zitat antworten Zitat
Dezipaitor

 
Delphi 7 Professional
 
#22
  Alt 29. Nov 2007, 18:52
Du kannst auf deutsch schreiben. Remko versteht dich.

Das Handle kannst du mit Unlocker freigeben.

Hast du im BDS die Datei geöffnet? Schließen, BDS schließen, so dass die Datei nie geöffnet wird.
Lösche auch alle erstellten Binärdateien (dsk, dcu usw) auch im BDS Bin-Verzeichnis.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#23
  Alt 29. Nov 2007, 19:11
Zitat von Dezipaitor:
Hast du im BDS die Datei geöffnet? Schließen, BDS schließen, so dass die Datei nie geöffnet wird.
Nein habe ich nicht.
Zitat von Dezipaitor:
Lösche auch alle erstellten Binärdateien (dsk, dcu usw) auch im BDS Bin-Verzeichnis.
Es existierten keine.

Ich habe es jetzt auf meinen Stick (= neue Partition) geschoben ==> Es funktioniert. Zwar ziemlich lahm ^^ aber es könnte gehen xD

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Dezipaitor

 
Delphi 7 Professional
 
#24
  Alt 29. Nov 2007, 19:58
Du kannst es auch in einem anderen Dir ausprobieren. Hauptsache ist, dass die Daten kopiert werden. Beim Verschieben wird nur die FAT geändert.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#25
  Alt 29. Nov 2007, 20:14
Sorry, aber es ist zum Mäuse melken. Wenn überhaupt:
Alles brav kopiert, einmal kompliert => Syntaxfehler => korrigiert => FEHLER
Also nochmal:
Alles brav kopiert, Bibilothekpfad erneuert => kompliert => Syntaxfehler => korrigier => FEHLER

Ich liebe es...

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Dezipaitor

 
Delphi 7 Professional
 
#26
  Alt 29. Nov 2007, 22:25
Hmm, okay wenn bei dir kopieren nicht hilft, dann eben auf eine andere Partition.
Es ist eben ein Bug in TD, der wirklich nervt. Ich kann nichts dafür.
Der Fehler tritt bei mir auch dann auf, wenn diese eine Unit garnicht verwendet wird...dann eben für eine andere unit.

Aber ich könnte für einige Versionen DCUs zum Download stellen. Ich selbst habe aber nur D7 und TD.
Christian
  Mit Zitat antworten Zitat
Dezipaitor

 
Delphi 7 Professional
 
#27
  Alt 1. Dez 2007, 19:08
Ich habe nochmal mit dem Fehler, dass JwaWinType.pas nicht gefunden werden kann, herumprobiert. Dabei habe ich folgende weitere Lösung gefunden:

1. Delphi beenden
2. Ordner Win32API umbennenen (z.b. in Win32API_)
3. Delphi starten
3. umbenennen Ordner Win32API zurück umbennenen in Win32API

Ich beziehe mich jedoch auf die Kompilation der Pakete in "\jedi-api-lib\jwapi\trunk\Packages".
Dazu die Projektgruppendatei (z.b. *.bdsproj) öffnen, nachdem Delphi gestartet wurde.
Es gibt dort 4 Pakete, welche nur dazu da sind DCU Dateien zu erstellen. Diese sind für DEBUG, RELEASE sowie STATIC und DYNAMIC binding.

Jedes Paket schreibt die Ausgabe in ein Bin-Ordner.
z.b. jedi-api-lib\jwapi\trunk\Packages\bds10\bin\debug\dynamic


Jetzt muss man nur noch den Pfad zu den DCU-Dateien statt zu den PAS-Dateien Delphi mitteilen. Das macht man am besten in den globalen Pfad-Einstellungen von Delphi und nicht in den Projekteinstellungen des jeweiligen Projekts.
Dies macht man im Menü: Tools-Optionen und dann im Baum: Umgebungsoptionen->DelphiOptionen->BibliothekWin32
In das Bibliothekspfad-Eingabefeld wird dann der absolute Pfad (z.b. C:\Projekte\Jedi-api-lib\jwapi\trunk\Packages\bds10\bin\debug\dynamic) eingegeben.

Der Suchpfad selbst kann der absolute Pfad zu den JWSCL Pas-Dateien sein (z.b. C:\Projekte\jedi-api-lib\jwscl\trunk\source). Für die JWA ist hier kein Eintrag nötig.

Ich empfehle nicht, für die JWSCL ein Paket zu erstellen, da sie sich oft ändern wird. Jede Änderung führt dazu, dass man das Paket neu kompilieren müsste. Ändert sich also in JWA eine Datei muss man den Kompilationsvorgang für JWA wiederholen, sonst lässt sich womöglich JWSCL nicht mehr kompilieren.


Der Vorteil der ganzen Sache ist, dass man die JWA nicht jedesmal komplett neu kompilieren muss.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#28
  Alt 13. Dez 2007, 08:51
Kann ich mit der JWSCL herausfinden, ob der Benutzer Adminrechte hat?
Fabian
  Mit Zitat antworten Zitat
Dezipaitor

 
Delphi 7 Professional
 
#29
  Alt 13. Dez 2007, 09:30
JwsclToken exportiert eine Reihe von Funktionen.

Delphi-Quellcode:
{@Name checks if the user has administrative access to secured object.
This function checks if an access to a secured object, which only
users of the administration group have access, succeeds or fails.
The advantage of this function is that it also can be used with restricted
tokens, which are quite common since Windows XP and especially Vista.

@return Returns true if the user has administrative access; otherwise false.
}

function JwCheckAdministratorAccess : Boolean;
Wenn du weißt, welches Privileg du benötigst, kannst du das auch überprüfen:
Delphi-Quellcode:
{@Name checks whether a given privilege is available or enabled in the actual process or thread.
@param Index gets the privilege name
@param query defines whether the given privilege should be checked for availability or is enable
@return Returns true if the privilege is available and enabled. If the privilege is not available or disabled the result is false.
}

function JwIsPrivilegeSet(const Index: string;
  const Query: TJwPrivilegeQueryType = pqt_Available): boolean;
Eine Liste von verfügbaren Privilegien findest du damit
Delphi-Quellcode:
{@Name returns a string filled with privilege names (of current token) and their states seperated by #13#10.
SE_XXXXX [enabled]
SE_XXXXX [disabled]
}

function JwGetPrivilegesText: TJwString;
Christian
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#30
  Alt 13. Dez 2007, 17:26
Würde das auch bei einem Installierten Dienst funktionieren?
Und wie kriege ich das unter Windows 2000 heraus?

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf