AGB  ·  Datenschutz  ·  Impressum  







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

Funktion returned falsche Werte?

Ein Thema von Lyan · begonnen am 15. Mai 2019 · letzter Beitrag vom 15. Mai 2019
Antwort Antwort
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#1

Funktion returned falsche Werte?

  Alt 15. Mai 2019, 05:46
Delphi-Version: 10.2 Tokyo
Heute wieder angefangen mit Delphi seit langem und schon hab ich 3 Fragezeichen auf dem Kopf.

Hier ein kleiner Ausschnitt der Funktion
Delphi-Quellcode:
function TCore.GetGlobal: DWORD64;
var
  Registers: TContext;
  Key0, Key1: DWORD64;
  Globals: array[0..20] of DWORD64;
  I: Integer;
begin
  with Registers do
  begin
    Key0 := GLOBAL_INIT_KEYS[0];
    Key1 := GLOBAL_INIT_KEYS[1];
    ConstructKeys(Key0, Key1);
    Rax := Key1;
    R8 := Process.Read64(Process.RvaToVa(GLOBAL0));
    Rdx := DWORD(R8);
    Rax := ROL(DWORD(Rax), 1) + Rdx;
    R8 := R8 shr $20;
Delphi-Quellcode:
function TProcess.Read64(AFrom: DWORD64): DWORD64;
var
  ReadCount: NativeUInt;
begin
  ReadProcessMemory(FProcessHandle, Pointer(AFrom), @Result, SizeOf(DWORD64), ReadCount);
end;
In der Funktion Read64 ist der Wert von Result eine 64-Bit Addresse und nach dem Return ist der zugewiesene Wert irgendwas anderes.

Screenshots im Anhang. Wtf?

Edit:// Okay liegt scheinbar an dem with keyword. Was zeigt mir der Debugger denn da an bei R8? Mit Registers.R8 wird es korrekt dargestellt... War einfach nur sehr verwirrend weil genau der Wert sowieso die Ursache dafür ist dass etwas in der Decryption falsch läuft und dann sah es halt so aus als ob der Grund dafür dass der Wert falsch ist die Funktion ist.

Ich wünschte man könnte wie in Visual Studio einfach global alle Werte als Hex anzeigen und ich könnte einfach über die Variablen hovern beim Debuggen, das ist ja echt zum Ktzen umständlich, Ctrl + F5, Rechtsklick Edit, "Showas Hex"... Wer denkt sich sowas aus? Yep, der Debugger spinnt komplett, bekomme einfach teilweise mal ne 32 Bit Addresse angezeigt, mal den richtigen Wert.
Angehängte Grafiken
Dateityp: png fnHfGIW.png (7,9 KB, 29x aufgerufen)
Dateityp: png TZaSR3E.png (7,2 KB, 29x aufgerufen)

Geändert von Lyan (15. Mai 2019 um 06:33 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Funktion returned falsche Werte?

  Alt 15. Mai 2019, 06:50
Hallo,
und ohne das with?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.429 Beiträge
 
Delphi 12 Athens
 
#3

AW: Funktion returned falsche Werte?

  Alt 15. Mai 2019, 07:24
Moin...
Zitat:
Okay liegt scheinbar an dem with keyword
...ich sage es immer wieder, aber keiner hört drauf. Mit with nimmst du dir die Debugging Funktionen und bekommst keine oder falsche Werte. Kann man das with Schlüsselwort nicht als "abgekündigt" markieren und mit einem Fehler versehen?
Machen wir eine Petition an Emba...
Zitat:
und ich könnte einfach über die Variablen hovern beim Debuggen
...das geht schon. Aber ohne das with.

Geändert von haentschman (15. Mai 2019 um 07:31 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Funktion returned falsche Werte?

  Alt 15. Mai 2019, 07:39
Hallo,
in der VCL sind auch
Zitat:
with
drin

ohne mein

with Query do
begin
end;

geht es nicht !
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.429 Beiträge
 
Delphi 12 Athens
 
#5

AW: Funktion returned falsche Werte?

  Alt 15. Mai 2019, 07:48
Zitat:
in der VCL sind auch
...da muß aber nicht debuggen.

Zitat:
ohne mein

with Query do
begin
end;

geht es nicht !
... wieso?

Delphi-Quellcode:
with Query do
begin
  ParamByName('Blubb').AsInteger := FunctionXY;
end;
...was zeigt der Debugger über AsInteger an? Nüscht.

@TE: Hover siehe Bild. http://docwiki.embarcadero.com/RADSt...ring_Debugging
@TE: Bei mir sind diese Fenster (#1) auf Ctrl + F7. Hast du eine andere Konfiguration oder war das ein Tippfehler?
Angehängte Grafiken
Dateityp: png Hover.png (5,8 KB, 18x aufgerufen)

Geändert von haentschman (15. Mai 2019 um 08:17 Uhr)
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#6

AW: Funktion returned falsche Werte?

  Alt 15. Mai 2019, 09:09
Zitat:
in der VCL sind auch
...da muß aber nicht debuggen.

Zitat:
ohne mein

with Query do
begin
end;

geht es nicht !
... wieso?

Delphi-Quellcode:
with Query do
begin
  ParamByName('Blubb').AsInteger := FunctionXY;
end;
...was zeigt der Debugger über AsInteger an? Nüscht.

@TE: Hover siehe Bild. http://docwiki.embarcadero.com/RADSt...ring_Debugging
@TE: Bei mir sind diese Fenster (#1) auf Ctrl + F7. Hast du eine andere Konfiguration oder war das ein Tippfehler?
Habe mich da nicht klar genug ausgedrückt, mir geht es explizit um das Darstellen der Werte in Hexadezimal. Ich brauche so gut wie nie Dezimal. In Visual Studio gibt's da (siehe screenshot).

Was mich auch stört, ist dass die IDE am rumfliegen ist alias "debug view mode". Lässt sich wahrscheinlich deaktivieren aber ist schon spannend, wie ich versuche auf dem rechten Bildschirm zu arbeiten und jedes mal wenn ich auf debuggen drücke siche die gesamte IDE auf den mittleren Bildschirm verschiebt und alle subwindows neu gedockt werden etc...
Ich überreagiere vlt. - vor allem weil ich erst seit heute die IDE habe, aber als gewohnter VS17 nutzer fühlt sich das erst mal sehr clunky und nicht gerade intuitiv an was da visuell passiert (und auch die Werte von with im debug mode). Ich setze mich später mal intensiver mit der IDE auseinander, vlt. gibt's ja paar optionen irgendwo versteckt.

Zitat:
Machen wir eine Petition an Emba...
Bin ich sofort dabei!
Angehängte Grafiken
Dateityp: png index.png (6,0 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.029 Beiträge
 
Delphi 12 Athens
 
#7

AW: Funktion returned falsche Werte?

  Alt 15. Mai 2019, 21:51
Moin...
Zitat:
Okay liegt scheinbar an dem with keyword
...ich sage es immer wieder, aber keiner hört drauf. Mit with nimmst du dir die Debugging Funktionen und bekommst keine oder falsche Werte. Kann man das with Schlüsselwort nicht als "abgekündigt" markieren und mit einem Fehler versehen?
Machen wir eine Petition an Emba...
Ja, fang doch schon mal damit an, in dem du eine entsprechende Anforderung in quality.embarcadero.com einträgst
und uns hier dann die Report Nummer kundtust...
  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 05:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz