![]() |
Re: vergleichen von zwei librarys im speicher
warum die IDE abstürzt ist mir ein rätsel
so viel mach ich gar net im speicher rum oO jo hab nich false zurückgegeben, kannst ja schaun was deiner meinung nach nen cheat ist, alles was net funzt wird ja inner msg box ausgegeben |
Re: vergleichen von zwei librarys im speicher
Hi
leider bin ich immer noch nicht dazu gekommen das wirklich durchzuschauen :( aber ich denke dein code funktioniert ziemliche gut - du weißt was du tust :). die ide ist immer dann abgestürtzt, wenn ich den cheat ins spiel injiziert hab und danach wieder entfernt - wenn er dann nochmal überprüft hat ist mir das delphi abgekackt. Hab nur leider noch nicht mehr herumprobieren können ... Ansonsten denk ich ist das genial - ich werd schon dazu kommen dir zu berichten wo das problem lag.. Arnulf |
Re: vergleichen von zwei librarys im speicher
Also ich hab mich mal kurz durchgeschaut und ein bisschen herumprobiert.
Abstürtzen tut er hier:
Delphi-Quellcode:
und zwar mit range check error.
for i := 0 to size-1 do
pbyte(integer(p2)+i)^ := pbyte(integer(p2)+i)^-pbyte(integer(p1)+i)^; err := 0; Allerdings nur, wenn ein cheat installiert ist. Was ich allerdings seltsam finde ist, daß er wenn ich die ganze funktion in einem eigenen programm laufen hab eigentlich funktioniert. Wenn ich es allerdings in mein Programm einbaue dann stürtzt er ab. Der code ist aber garantiert der gleiche und ich hatte den absturtz auch schon im separaten programm allerdings momentan gehts seltsamer weise. der code ist deshalb sicher der gleiche, weil ichs mit copy und paste eingefügt hab. Ich hab mich auch schon versucht ein bisschen durchzuwurschteln durch den code. Ist im prinzip recht verständlich - wusste ja nicht, daß man einfach so den handle einer lib in einem anderen prozess bekommen kann :). wo ich allerdings aussteige ist dann bei der funktion: compareExecuteSections vor allem deshalb, weil ich den datentyp PImageDosHeader nicht kenne und mir auch nicht klar ist was letzten endes in der struktur steht auf den der pointer zeigt. Hoffe damit ist dir klar warum das programm nicht mehr funktioniert :) mir nämlich nicht. Danke Arnulf Edit: Ich hab mal ein bischen nachgeschlagen - jetzt verstehe ich die source ganz - gott sei dank :) - wusste ja nicht, daß solche header für .exe oder .dlls existieren - sag ja ich bin etwas ab vom schuß des programmierens... Auch interessant für mich ist wohl IMAGE_EXPORT_DIRECTORY damit wäre es doch relativ einfach simple wrapper zu entdecken - ich müsste nur alle vom spiel geladene .dlls kontrollieren. oder lieg ich damit falsch? - Das ist ein extrem interessantes kapitel. Arnulf |
Re: vergleichen von zwei librarys im speicher
Hallo nochmal.
Leider hab ich ziemlich viel stress mit dem check :(
Delphi-Quellcode:
das stürtzt leider mit range check error ab :(.
for i := 0 to size-1 do
pbyte(integer(p2)+i)^ := pbyte(integer(p2)+i)^-pbyte(integer(p1)+i)^; err := 0; funktionieren tut es so:
Delphi-Quellcode:
ich hab es auch mit comparemem probiert, aber brechi hat vermutlich recht und es kommt vor, daß 4 bytes unterschiedlich sind manchmal ( bei mir hat comparemem gut funktioniert ).
while (k < size-1) do
begin if pbyte(integer(p1)+k)^ <> pbyte(integer(p2)+k)^ then inc (err); inc(k); end; Jedenfalls hab ich mit der 2. ten methode das problem, daß leute mit dem neuen nvidia treiber plötzlich eine seltsame Auflösung am Bildschirm angezeigt bekommen. Bei einem Screenshot ist die das bild aber normal. Kann mir hier irgendjemand helfen? - wäre nett, wenn du mir noch ein paar tips dazu geben könntest Brechi :) Arnulf |
Re: vergleichen von zwei librarys im speicher
Bei Pointern sollte immer mit Cardinal-Cast gearbeitet werden (nicht Integer).
|
Re: vergleichen von zwei librarys im speicher
hi
was meinst du mit cardinal-cast? ich mein ich kann natürlich integer gegen cardinal austauschen was aber vermutlich nicht viel unterschied macht. Wenn doch, dann würde es mich interessieren welchen :). Arnulf |
Re: vergleichen von zwei librarys im speicher
Cardinal ist vorzeichenlos. Deswegen!
|
Re: vergleichen von zwei librarys im speicher
Pointer haben kein Vorzeichen. Deswegen kann es bei einem Cast auf Integer auch zu Range-Check-Fehlern kommen...
|
Re: vergleichen von zwei librarys im speicher
Ja das ergibt sinn.
allerdings in dem zusammenhang nicht wirklich. Hier geh ich ja nur den ganzen speicherbereich durch und zähle nach oben - wie sollte ich da eine negative zahl rausbekommen. so groß ist der bereich nicht. integer ist ja signed 32 bit also –2147483648..2147483647. ich will echt nicht blöd fragen :) aber ich versuche immer etwas zu verstehen bevor ich es abschreibe hehe Arnulf |
Re: vergleichen von zwei librarys im speicher
Zitat:
Folgendes könnte trotz Range-Check funktionieren (habe gerade keine Delphi zur Hand):
Delphi-Quellcode:
Byte(PByteArray(p2)[i] - PByteArray(p1)[i]);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 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-2025 by Thomas Breitkreuz