![]() |
Two Worlds 2 - Druckversion +- Home of Gamehacking - Archiv (http://archiv-homeofgamehacking.de) +-- Forum: Gamehacking (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=3) +--- Forum: Projekte (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=31) +--- Thema: Two Worlds 2 (/showthread.php?tid=525) Seiten:
1
2
|
RE: Two Worlds 2 - maluc - 23.08.2011 Das ist ja komisch. Hab das direkt aus meinem TrainerLib kopiert. Dort funktioniert es perfekt. ![]() EAX hat die richtige Base. Auch in Delphi funktioniert es ohne Probleme bei mir. ![]() Liegt es vllt an Windows? Benutze hier Windows 7 mit SP1 die 32bit Version. Du hast es ja schon selbst hinbekommen. ![]() MfG RE: Two Worlds 2 - iNvIcTUs oRCuS - 24.08.2011 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 ![]() 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. ![]() RE: Two Worlds 2 - iNvIcTUs oRCuS - 24.08.2011 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... ![]() 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 RE: Two Worlds 2 - iNvIcTUs oRCuS - 25.08.2011 Also irgendwie werd ich hier draus nicht schlau... Habs nochmal so probiert, mit Klammern... Mal gehts, mal gehts net ![]() ![]() ![]() Egal jetz, Hauptsache der Trainer funktioniert und das ist das wichtigste... ![]() RE: Two Worlds 2 - maluc - 26.08.2011 Am besten du benutzt einfach lstrcmpi. Damit ist Groß und Kleinschreibung egal. Und es wird kein VCL Zeug benutzt. MfG RE: Two Worlds 2 - iNvIcTUs oRCuS - 26.08.2011 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 |