AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [Vista] FindFirstURLCacheEntry funktioniert wohl nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

[Vista] FindFirstURLCacheEntry funktioniert wohl nicht?

Offene Frage von "sECuRE"
Ein Thema von sECuRE · begonnen am 30. Nov 2007 · letzter Beitrag vom 1. Dez 2007
Antwort Antwort
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#1

[Vista] FindFirstURLCacheEntry funktioniert wohl nicht?

  Alt 30. Nov 2007, 12:52
Hi,

Mithilfe von Process Explorer (http://www.sysinternals.com) habe ich bemerkt, dass der IE7 in der Standardinstallation von Vista Cookies in den Pfad %APPDATA%\Roaming\Microsoft\Windows\Cookies\Low schreibt.

Nun gibt es ja die WinAPI-Funktion FindFirstURLCacheEntry, welches einem - mithilfe von index.dat - diese Einträge (und auch die History/Cache/RSS/usw) zurückliefert.

Unter Windows XP funktioniert das prima, aber unter Windows Vista versucht diese Funktion, im Pfad %APPDATA%\Local\Temp\Temporary Internet Files\Content.IE5 nach index.dat zu suchen.

Auch nach dem Herabsetzen der Prozessrechte auf "low integrity" (siehe http://www.delphipraxis.net/internal...t.php?p=813574) klappt das nicht (ändert sich nichts an den Pfaden, aber via Process Explorer (ebenfalls http://www.sysinternals.com) und anderen lustigen Nebeneffekten sehe ich, dass das Herabsetzen geklappt hat).

Hat jemand eine Idee, wie man das Problem beheben/umgehen könnte, ohne einen eigenen index.dat-Parser zu schreiben und die Dateien direkt zu öffnen?

Danke schonmal
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: [Vista] FindFirstURLCacheEntry funktioniert wohl nicht?

  Alt 1. Dez 2007, 01:07
FeedBack für FindFirstURLCacheEntry
https://beta.microsoft.com/WNDP/feed...dbackID=191952

A bit about WinInet's Index.dat
http://blogs.msdn.com/wndp/archive/2...Index_dat.aspx

Wenn ich dem FeedBack (erster Link) glaube, dann ist die einzige Möglichkeit, den korrekten Cache der LowIntegrity zu bekommen,
einen Prozess mit dem Aufruf zu beauftragen. Dieser Prozess muss sofort mit LowIL gestartet werden.
Sag mir bescheid, wenn du was dazu hast.

P.S.
Ich habe das Integrity Level für das Token eingeführt.

Delphi-Quellcode:
var tok : TJwSecurityToken;
begin
  tok := TJwSecurityToken.CreateTokenEffective(TOKEN_ALL_ACCESS);
  try
    tok.TokenIntegrityLevelType := iltLow;
  finally
    tok.Free;
  end;
end;
----------

Zitat:
if (SetTokenInformation(processToken, Windows.TTokenInformationClass(TokenIntegrityLevel ),
@MandatoryLabel, SizeOf(PTokenMandatoryLabel)+GetLengthSid(pIntegri tySid))) then begin
ShowMessage('Privileges lowered');
end;
Meiner Meinung ist es reiner Zufall, dass das überhaupt funktioniert. Die übergebene Größe (SizeOf(PTokenMandatoryLabel)+GetLengthSid(pIntegr itySid)) ist dieselbe oder größer als die von MandatoryLabel.
Ich habe daher sizeof(MandatoryLabel) verwendet und es funkt wunderbar.

sizeof(MandatoryLabel) = sizeof(_TOKEN_MANDATORY_LABEL) = sizeof(PSID) +sizeof(DWORD) = 4+4 = 8
SizeOf(PTokenMandatoryLabel)+GetLengthSid(pIntegri tySid) = 4 + 12 = 16 (bei mir)

Die Struktur verwendet jedoch einen Zeiger auf die SID. Im Gegensatz zu den ACE Strukturen. Diese enthalten die SID komplett im Record. Daher muss man die SidLänge angeben.

Hast du es von dort?: http://weblogs.asp.net/kennykerr/arc...t-Control.aspx

Müsste man mal fragen, warum der das so macht. Würde mich gerne belehren lassen.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#3

Re: [Vista] FindFirstURLCacheEntry funktioniert wohl nicht?

  Alt 1. Dez 2007, 01:28
Hi,

Zitat von Dezipaitor:
Wenn ich dem FeedBack (erster Link) glaube, dann ist die einzige Möglichkeit, den korrekten Cache der LowIntegrity zu bekommen,
einen Prozess mit dem Aufruf zu beauftragen. Dieser Prozess muss sofort mit LowIL gestartet werden.
Sag mir bescheid, wenn du was dazu hast.
OK, das würde dann auch erklären, warum man rundll32 beauftragen muss (welche dann wiederum inetcpl im low integrity mode startet). Anscheinend werden also die Pfade gecached und nur beim Start des Prozesses aktualisiert.

Wird beim Auslagern des Codes in eine DLL, die ich im LIM starte, dann auch jedes mal der Benutzer benachrichtigt und muss bestätigen?

Zitat von Dezipaitor:
if (SetTokenInformation(processToken, Windows.TTokenInformationClass(TokenIntegrityLevel ),
@MandatoryLabel, SizeOf(PTokenMandatoryLabel)+GetLengthSid(pIntegri tySid))) then begin
ShowMessage('Privileges lowered');
end;
Meiner Meinung ist es reiner Zufall, dass das überhaupt funktioniert. Die übergebene Größe (SizeOf(PTokenMandatoryLabel)+GetLengthSid(pIntegr itySid)) ist dieselbe oder größer als die von MandatoryLabel.
Ich habe daher sizeof(MandatoryLabel) verwendet und es funkt wunderbar.
Hab' ich so aus der MSDN, Siehe http://msdn2.microsoft.com/en-us/library/bb250462.aspx

Danke für deine Antwort
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: [Vista] FindFirstURLCacheEntry funktioniert wohl nicht?

  Alt 1. Dez 2007, 02:54
Zitat von sECuRE:
Hi,
Wird beim Auslagern des Codes in eine DLL, die ich im LIM starte, dann auch jedes mal der Benutzer benachrichtigt und muss bestätigen?
Verstehe nicht, wie das Auslagern was bringen soll.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#5

Re: [Vista] FindFirstURLCacheEntry funktioniert wohl nicht?

  Alt 1. Dez 2007, 12:40
Hi,

Zitat von Dezipaitor:
Zitat von sECuRE:
Hi,
Wird beim Auslagern des Codes in eine DLL, die ich im LIM starte, dann auch jedes mal der Benutzer benachrichtigt und muss bestätigen?
Verstehe nicht, wie das Auslagern was bringen soll.
Auslagern im Sinne von: Eine separate DLL machen, die dann via rundll32 (im Low Integrity Mode) gestartet wird, so wie es der IE7 ja macht.

cu
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz