AGB  ·  Datenschutz  ·  Impressum  







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

Absturz bei Zugriff auf PByte

Ein Thema von Clemens L. · begonnen am 30. Jul 2009 · letzter Beitrag vom 30. Jul 2009
Antwort Antwort
Clemens L.

Registriert seit: 27. Apr 2008
35 Beiträge
 
Delphi 2009 Architect
 
#1

Absturz bei Zugriff auf PByte

  Alt 30. Jul 2009, 15:13
Hallo,

ich habe hier ein kleines Problem mit einem Stück Quellcode. Der Code soll eine andere Funktion verändern, durch Zugriff auf einen Pointer der auf ein Byte zeigt.

Das ganze sieht ungefähr so aus:

Delphi-Quellcode:

procedure DoSomething;
  procedure _load_decrypt; forward;
  procedure _load_code(lpLoadLibrary, lpGetProcAddress: Pointer; lpSectionBegin: DWORD); stdcall; forward;
  procedure _load_code_end; forward;
  procedure _loader; stdcall;
  asm
    call _load_decrypt;
    call _load_code
  end;


  procedure _load_decrypt;
  var
    p: PByte;
    i: Integer;
    l: Integer;
  begin
    l := Integer(@_load_code_end) - Integer(@_load_code);
    p := @_load_code;

    for I := 0 to L - 1 do
    begin
      p^ := p^ xor $DF; //Hier steigt das Programm aus!
      inc(p);
    end;
  end;
  
  procedure _load_code(
    lpLoadLibrary,
    lpGetProcAddress: Pointer;
    lpSectionBegin: DWORD); stdcall;
  begin
    { ... }
  end;
  procedure _load_code_end; begin end;
  procedure _loader_end; begin end;

begin
  _load_decrypt; //Hier soll die Funktion _load_code "verschlüsselt" werden
end;
(Den unwichtigen Code habe ich entfernt )

Das ganze ist ein Konsolenprogramm. Wenn ich das in der IDE durchlaufen lasse, steigt das programm an der angegebenen Stelle aus, man sieht in der Konsole noch ganz kurz irgendeinen Runtime Error auftauchen. Wenn ich das Programm alleine laufen lasse, bleibt es einfach hängen, mit voller CPU Auslastung.

Ich hoffe ihr könnt mir weiterhelfen, sitze jetzt schon gut eine Stunde auf der Leitung.


Gruß,

Clemens
Clemens
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Absturz bei Zugriff auf PByte

  Alt 30. Jul 2009, 15:17
Ich nehme an, du hast keine Rechte dort rumzuschreiben (oder du hast falsch gerechnet).
Suche mal nach "VirtualPRrotect"!
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Clemens L.

Registriert seit: 27. Apr 2008
35 Beiträge
 
Delphi 2009 Architect
 
#3

Re: Absturz bei Zugriff auf PByte

  Alt 30. Jul 2009, 15:24
Delphi-Quellcode:
  procedure _load_decrypt;
  var
    p: PByte;
    i: Integer;
    l: Integer;
    old: Cardinal;
  begin
    l := Integer(@_load_code_end) - Integer(@_load_code);
    p := @_load_code;

    VirtualProtect(p, l, PAGE_EXECUTE_READWRITE, old);

    for I := 0 to L - 1 do
    begin
      p^ := p^ xor $DF;
      inc(p);
    end;

    VirtualProtect(p, l, old, old);
  end;
So hat es funktioniert, vielen Dank!

MfG,
Clemens
Clemens
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Absturz bei Zugriff auf PByte

  Alt 30. Jul 2009, 15:36
es wäre nicht schlecht, wenn du danach die alten Rechte wiederherstellst.
$2B or not $2B
  Mit Zitat antworten Zitat
Clemens L.

Registriert seit: 27. Apr 2008
35 Beiträge
 
Delphi 2009 Architect
 
#5

Re: Absturz bei Zugriff auf PByte

  Alt 30. Jul 2009, 15:50
Hab ich auch schon eingebaut, der Quelltext oben war nur der erste Versuch. Werd's trotzdem auch noch oben reinschreiben!
Clemens
  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:49 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