Home of Gamehacking - Archiv

Normale Version: Two Worlds 2
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Das ist ja komisch.
Hab das direkt aus meinem TrainerLib kopiert.
Dort funktioniert es perfekt.
[Bild: base_asm.png]
EAX hat die richtige Base.

Auch in Delphi funktioniert es ohne Probleme bei mir.
[Bild: base_delphi.png]

Liegt es vllt an Windows?
Benutze hier Windows 7 mit SP1 die 32bit Version.

Du hast es ja schon selbst hinbekommen. Smiling

MfG
Hi maluc...

Das funktioniert auch bei mir.
Dein Codestück ist im Prinzip fast genauso aufgebaut wie meins. Der Unterschied liegt eigentlich nur in der Zeile 41 (in deinem Delphi Screenshot).
Meine Variante ist ja...
[code=Delphi]if (CompareText(Moduleentry.szModule, DLLName) =0) then[/code]

und deine Variante ist diese...
[code=Delphi]if lstrcmpi(ModuleEntry32.szModule, lpname)=0 then[/code]

Wenn ich das dahingehend abändere...
[code=Delphi]if lstrcmpi(ModuleEntry.szModule, DLLName)=0 then[/code]
... dann funktionierts. DLLName ist nur mein "Bezeichner" für die EXE/DLL. Woraufs ankommt ist das (ModulEntry32.szModule...).
Würde mich jetz nur interessieren warum das mit der API lstrcmpi funktioniert, aber mit CompareText nicht Huh

grEEtZ sILeNt heLLsCrEAm

PS: Könnte mir nur vorstellen das Delphi hier Probleme damit, denn ich glaube irgendwo mal gehört zu haben das die CompareText Funktion ein Delphieigenes mitbringsel ist. "lstrcmp/lstrcmpi" allerdings sind Windows API's wenn ich recht informiert bin. Sehr verwirrend, aber gut zu wissen das Dein Code auch bei mir läuft. Happy
Tag...

Ich hab mir noch mal meinen Sourcecode angeschaut, noch mal Stück für Stück durchgegangen...
Man, man , man... Wie kann man nur so blind sein... Huh

Mein Code zum filtern der richtigen Basis Adresse einer DLL ist ja dieser...
[code=Delphi]
SnapMod:= CreateToolhelp32Snapshot(TH32CS_Snapmodule, ProcID);
ModuleEntry.dwSize := Sizeof(ModuleEntry);
FindDLLBase:= Module32First (SnapMod, ModuleEntry);
while FindDLLBase do begin
if (CompareText(Moduleentry.szModule, DLLName)=0) then
DLLBaseAddy:= ModuleEntry.modBaseAddr;
FindDLLBase:= Module32Next(SnapMod, ModuleEntry);
end;
CloseHandle(SnapMod);[/code]

Malucs Codeabschnitt sieht ja folgendermaßen aus...
[code=Delphi]if lstrcmpi(ModuleEntry32.szModule, lpname)=0 then[/code]

Und mein Codeabschnitt ist ja folgender...
[code=Delphi]if (CompareText(Moduleentry.szModule, DLLName)=0) then[/code]

Na fällt da was auf??? Richtig die beiden Klammern... Klammer Auf vor "CompareText" und Klammer Zu nach der "=0".
Und diese 2 Klammern sind der Übeltäter... :rolleyes:
So funktionierts dann auch mit meiner Variante über CompareText.

grEEtZ sILeNt heLLsCrEAm
Also irgendwie werd ich hier draus nicht schlau... Habs nochmal so probiert, mit Klammern... Mal gehts, mal gehts net HuhHuhHuh Nu bin ich erst recht sprachlos.
Egal jetz, Hauptsache der Trainer funktioniert und das ist das wichtigste... Happy
Am besten du benutzt einfach lstrcmpi.
Damit ist Groß und Kleinschreibung egal.
Und es wird kein VCL Zeug benutzt.

MfG
Hi,

also was ich mit Sicherheit sagen kann ist das die Funktion CompareText eine Delphieigene Funktion ist. "lstrcmp/lstrcmpi" ist ne WinAPI zu finden in der Kernel32.dll.

Hier die Beschreibung zu "CompareText" direkt aus der Delphi Hilfe. CompareText ist die Groß-/Kleinschreibung ebenfalls egal.

[code=Delphi]Beschreibung
Vergleicht zwei Strings anhand des Ordinalwertes ohne Berücksichtigung der Groß-/Kleinschreibuing.

CompareText vergleicht S1 mit S2 und gibt 0 zurück, wenn beide identisch sind. Ist S1 größer als S2,
wird ein Integer-Wert größer als 0 zurückgegeben. Ist S1 kleiner als S2, ist der Rückgabewert kleiner als 0.
Beim Vergleich wird nicht zwischen Groß- und Kleinschreibung unterschieden und die aktuelle Ländereinstellung nicht berücksichtigt. [/code]

Was ich auch noch mit Sicherheit sagen kann ist das diese Funktion nur der Kombatiblität halber von Version zu Version mit durchgeschleift wird. Was aber auch noch ne Rolle spielt ist der Variablentyp. Also Byte und bzw. oder PByte etc...
Ich werd mir mal ne kleine Anwendung zusammencoden die mir zu einem Prozess die entsprechende Basis Adresse liefert.

grEEtZ sILeNt heLLsCrEAm
Seiten: 1 2