AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

File patchen

Ein Thema von kuba · begonnen am 4. Apr 2009 · letzter Beitrag vom 27. Jan 2023
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.590 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: File patchen

  Alt 5. Apr 2009, 00:02
Du musst das doch nur exakt wie in ScanFile schon gezeigt machen. Nur eben statt nur suchen ggf. auch ersetzen.

Wobei ich mich allerdings frage was für einen Sinn das hat. Außer um einen Virus zu schreiben. Denn schließlich bringt das ja keinerlei Vorteil für die Sicherheit oder Benutzung des Systems, verhindert aber ggf. die Reparatur des Systems.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: File patchen

  Alt 5. Apr 2009, 00:16
Zitat von jaenicke:
Du musst das doch nur exakt wie in ScanFile schon gezeigt machen. Nur eben statt nur suchen ggf. auch ersetzen.

Wobei ich mich allerdings frage was für einen Sinn das hat. Außer um einen Virus zu schreiben. Denn schließlich bringt das ja keinerlei Vorteil für die Sicherheit oder Benutzung des Systems, verhindert aber ggf. die Reparatur des Systems.
Es ist zur Einrichtung eines KIOSK PC gedacht, dieser darf nicht durch Tastatureingaben in der Startphase unterbrochen werden ! Der abgesicherte Modus ermöglicht weitreichende Manipulationsmöglichkeiten um das System zu kompromittieren.

Der KIOSK PC läuft in einer virtuellen Maschine, daher muss F8 ausser Kraft gesetzt werden !

Die Information mit der F8 Taste kommt selbstverständlich von Microsoft und ist eigentlich nicht für Virenhersteller gedacht.

Die Reparatur des System erfolgt ggf. durch Barts PE

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.590 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: File patchen

  Alt 5. Apr 2009, 00:43
Zitat von kuba:
Der abgesicherte Modus ermöglicht weitreichende Manipulationsmöglichkeiten um das System zu kompromittieren.
Aber nur, wenn kein Administratorpasswort usw. gesetzt ist, denn sonst kommt man erst gar nicht ins System hinein...

Trotzdem: es ist wie gesagt ja eigentlich fast nichts zu ändern im Vergleich zu dem verlinkten ScanFile.
Hier mal eine Version, die auch für Delphi 2009 eine byteweise Ersetzung mittels AnsiStrings zulässt. 3 Zeilen und ein Parameter sind neu und eine Zeile geändert, sonst nur String durch AnsiString und PChar durch PAnsiChar ersetzt.
Delphi-Quellcode:
function ReplaceInFile(const FileName, SearchString, NewString: AnsiString;
  CaseSensitive: Boolean): Longint;
  { returns position of string in file or -1, if not found }
const
  BufferSize = $8001; { 32K+1 bytes }
var
  pBuf, pEnd, pScan, pPos: PAnsiChar;
  filesize: LongInt;
  bytesRemaining: LongInt;
  bytesToRead: Integer;
  F: file;
  SearchFor: PAnsiChar;
  oldMode: Word;
begin
  Result := -1; { assume failure }
  // NEW (first line): if length of string to search and new string does not match, cancel.
  // Of course one could move the rest of the file accordingly instead.
  if (Length(SearchString) <> Length(NewString))
    or (Length(SearchString) = 0) or (Length(FileName) = 0) then Exit;
  SearchFor := nil;
  pBuf := nil;

  { open file as binary, 1 byte recordsize }
  AssignFile(F, FileName);
  oldMode := FileMode;
  FileMode := fmOpenReadWrite; { NEW: access to read and write }
  Reset(F, 1);
  FileMode := oldMode;
  try
    { allocate memory for buffer and pchar search string }
    SearchFor := StrAlloc(Length(SearchString) + 1);
    StrPCopy(SearchFor, SearchString);
    if not caseSensitive then { convert to upper case }
      AnsiUpper(SearchFor);
    GetMem(pBuf, BufferSize);
    filesize := System.Filesize(F);
    bytesRemaining := filesize;
    pPos := nil;
    while bytesRemaining > 0 do
    begin
      { calc how many bytes to read this round }
      if bytesRemaining >= BufferSize then
        bytesToRead := Pred(BufferSize)
      else
        bytesToRead := bytesRemaining;

      { read a buffer full and zero-terminate the buffer }
      BlockRead(F, pBuf^, bytesToRead, bytesToRead);
      pEnd := @pBuf[bytesToRead];
      pEnd^ := #0;
       { scan the buffer. Problem: buffer may contain #0 chars! So we
         treat it as a concatenation of zero-terminated strings. }

      pScan := pBuf;
      while pScan < pEnd do
      begin
        if not caseSensitive then { convert to upper case }
          AnsiUpper(pScan);
        pPos := StrPos(pScan, SearchFor); { search for substring }
        if pPos <> nil then
        begin { Found it! }
          Result := FileSize - bytesRemaining +
            Longint(pPos) - Longint(pBuf);

          // NEW: replace it
          Seek(F, Result);
          BlockWrite(F, PAnsiChar(NewString)^, Length(NewString));

          Break;
        end;
        pScan := StrEnd(pScan);
        Inc(pScan);
      end;
      if pPos <> nil then Break;
      bytesRemaining := bytesRemaining - bytesToRead;
      if bytesRemaining > 0 then
      begin
       { no luck in this buffers load. We need to handle the case of
        the search string spanning two chunks of file now. We simply
        go back a bit in the file and read from there, thus inspecting
        some characters twice
       }

        Seek(F, FilePos(F) - Length(SearchString));
        bytesRemaining := bytesRemaining + Length(SearchString);
      end;
    end; { While }
  finally
    CloseFile(F);
    if SearchFor <> nil then StrDispose(SearchFor);
    if pBuf <> nil then FreeMem(pBuf, BufferSize);
  end;
end; { ScanFile }
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: File patchen

  Alt 5. Apr 2009, 01:21
Hallo,

vielen, vielen Dank !!!

Es funktioniert prima, anbei der "Patcher"

KUBA

PS: winexec ersetzt durch FileSetReadOnly('c:\ntldr', False);
Angehängte Dateien
Dateityp: zip nof8_982.zip (214,7 KB, 34x aufgerufen)
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: File patchen

  Alt 5. Apr 2009, 01:24
Zitat von jaenicke:
Zitat von kuba:
Der abgesicherte Modus ermöglicht weitreichende Manipulationsmöglichkeiten um das System zu kompromittieren.
Aber nur, wenn kein Administratorpasswort usw. gesetzt ist, denn sonst kommt man erst gar nicht ins System hinein...
Aber der Computer befindet sich dann leider im "abgesicherten Modus" und nicht im "KIOSK-Modus"

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.590 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: File patchen

  Alt 5. Apr 2009, 01:29
Na hast du natürlich Recht.

Nur nebenbei: Kennst oder benutzt du eigentlich schon Windows SteadyState?
http://www.microsoft.com/windows/pro...s/default.mspx

Das hilft beim Einrichten eines solchen öffentlichen PCs ja sehr viel weiter und ist ja kostenlos.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: File patchen

  Alt 5. Apr 2009, 01:37
Zitat von jaenicke:
Na hast du natürlich Recht.

Nur nebenbei: Kennst oder benutzt du eigentlich schon Windows SteadyState?
http://www.microsoft.com/windows/pro...s/default.mspx

Das hilft beim Einrichten eines solchen öffentlichen PCs ja sehr viel weiter und ist ja kostenlos.
Sicher, mein KIOSK-Release bietet auch sehr viel, wenn man mal ganz genau hinsieht - wenn nicht mehr !!

KUBA

PS: ist ja auch kostenlos
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

Re: File patchen

  Alt 5. Apr 2009, 04:54
Ich hoffe du weißt den Benutzer auch daraufhin, dass du original Systemdateien manipulierst. Ich würde solch eine Software nämlich nicht installieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#19

Re: File patchen

  Alt 5. Apr 2009, 07:32
Hi,

wäre noch schön, wenn Du anstatt WinExec ShellExecute benutzt, WinExec ist mittlerweile veraltet.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.590 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: File patchen

  Alt 5. Apr 2009, 07:43
Dass WinExec veraltet ist, ist sicher richtig, schon seit 14 Jahren, aber wo steht hier im Thread etwas davon?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 02:16 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