AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Debug Control Register (DR7) richtig setzen
Thema durchsuchen
Ansicht
Themen-Optionen

Debug Control Register (DR7) richtig setzen

Ein Thema von Win32.API · begonnen am 23. Apr 2007 · letzter Beitrag vom 23. Apr 2007
Antwort Antwort
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#1

Debug Control Register (DR7) richtig setzen

  Alt 23. Apr 2007, 13:49
Hi,

ich stehe gerade vor einem großen Problem: wie setze ich das Dr7 mit seinen Flags fuer größe und action?
Gibt es dafuer schon fertige Funktionen oder muss ich das ganze per Hand machen und wenn ja wie?

Fuer alle die nicht wissen was gemeint ist, hier noch ein link zum thema: http://pdos.csail.mit.edu/6.828/2005...02.htm#fig12-1

lg win32
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Debug Control Register (DR7) richtig setzen

  Alt 23. Apr 2007, 17:39
Mach dir erstmal Gedanken wie du deinen (Delphi)Code im Kernelmode ausführen willst. Debug-Register sind privilegierte Ressourcen. IA-32 Intel Architecture Software Developer's Manual - Volume 3: System Programming Guide, 15-2.
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#3

Re: Debug Control Register (DR7) richtig setzen

  Alt 23. Apr 2007, 17:45
Ich benutze zur zeit Get/SetThreadContext, in den kernel wollte ich dann doch nicht

Haette ich dazu schreiben sollen, sry.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: Debug Control Register (DR7) richtig setzen

  Alt 23. Apr 2007, 17:53
Aha, gut, dann verweise ich dennoch auf die Quelle welche ich oben schon angab.

Die kannst du als PDF runterladen oder kostenlos als Hardcopy bestellen.


Übrigens dort dann Sektion "15.2.4 Debug Control Register (DR7)" auf Seite 15-5 (Kapitel 15, eben).
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#5

Re: Debug Control Register (DR7) richtig setzen

  Alt 23. Apr 2007, 17:58
In meinem ersten post habe die entsprechdende sektion des pdfs als html-version verlinkt.

Ich stehe noch immer vor meinem eigentlich problem: Wie setze ich die einzellnen bits des registers?


lg win32
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Debug Control Register (DR7) richtig setzen

  Alt 23. Apr 2007, 18:30
Es ist zwar nicht exakt die gleiche Sektion (inhaltlich), aber egal.

Wie setzt man nun ein Bit? Wie wäre es mit den Bit-Operationen? Erst die Bitmasken (vorzugsweise als Konstanten deklarieren):

Bit0: $00000001
Bit1: $00000002
Bit2: $00000004
Bit3: $00000008
Bit4: $00000010
Bit5: $00000020
Bit6: $00000040
Bit7: $00000080
Bit8: $00000100
Bit9: $00000200
BitA: $00000400
BitB: $00000800
... usw. usf.

Dann setzt man bspw. Bit 3 so:

Code:
dw := dw or $00000008;
... überprüft es so:

Code:
if(dw and $00000008 <> 0)then
... oder löscht es so:

Code:
dw := (dw and (not $00000008));
... ich bin leicht schockiert, daß du mit sowas rumspielen willst, wenn du nichtmal diese Grundlagen beherrschst. Wundert mich übrigens, daß das "einfach so" gehen soll. Immerhin sind gerade für diese Geschichten sonst Umwege über Exception-Handler nötig.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: Debug Control Register (DR7) richtig setzen

  Alt 23. Apr 2007, 18:40
Siehe da. Wären wir also wieder bei meiner ersten Antwort. Ein kurzer Blick in die Doku hat gereicht (hatte ich mir zuvor gespart, weil ich deine Frage offenbar mißverstanden hatte).

Zitat:
Pointer to the CONTEXT structure that contains the context to be set in the specified thread. The value of the ContextFlags member of this structure specifies which portions of a thread's context to set. Some values in the CONTEXT structure that cannot be specified are silently set to the correct value. This includes bits in the CPU status register that specify the privileged processor mode, global enabling bits in the debugging register, and other states that must be controlled by the operating system.
Ich hatte Luckie mal erklärt wie man es unter Delphi macht. Kann man nämlich auch für Kopierschutzgeschichten benutzen. Vielleicht hat er ja Zeit es dir zu erklären, habe keine Zeit es nochmal (zumal in Delphi) durchzukauen.
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#8

Re: Debug Control Register (DR7) richtig setzen

  Alt 23. Apr 2007, 18:43
Danke, ich werde es mir nochmal anschauen, wenn ich Probleme haben sollte melde ich mich.

win32
  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 06:23 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