Inline-ASM| Was soll es tun?

10/17/2014 17:46 Dr.Joker#1
Hallo,

ich habe schon viele Source-Codes von Hacks gesehen, wo man Inline-ASM benutzt hat, und ich möchte es nun auch anwenden.
Die Grundlegende Kenntnisse hab ich soweit, aber ein richtiges Programm alleine aus Assembler wäre etwas schwer.
Aber zurück zu meiner Frage, wenn ich Inline-ASM in meinem Hack verwenden möchte, Wann sollte ich es benutzten? Was sollte der ASM Code bewirken?

Okay das war soweit, vielen dank:)
10/17/2014 18:29 Jeoni#2
Mit ASM macht man das, was in der Hochsprache nicht oder nur unzureichend klappt. Beispiele hierfür wären extrem performancelastige Algorithmen oder harte Echtzeitanforderungen. Das gehört natürlich nicht unbedingt in's Gamehacking.
Aber nicht standardkonforme Funktionsaufrufe oder winzige Funktionsstubs gehören wohl am ehesten dazu. Zum Beispiel müssen in einem allgemeinen mid-function hook Register und Flags gesichert und wiederhergestellt werden, was in der Hochsprache nicht (oder nur durch Intrinsics) möglich ist. Auch kann man in inline asm direkt an die Werte der Register kommen, an die man sonst nur mit mehr Reversing (wo kommen die Werte an dieser Stelle her) herankommt.
Erwähnenswert ist allerdings noch, dass inline asm im MSVC nur in 32 bit Kompilaten nutzbar ist. In 64 bit Kompilaten ist das nicht implementiert. Ausweichmöglichkeiten wären hier vorassembelte Byte-Arrays oder direkt eingebundene Assembler-Dateien.
Wenn du dich zudem fragst, was der Code bewirken soll oder wann du ihn benutzen solltest, gab es wohl noch keine Stelle, an denen die Nutzung in einem deiner Projekte Sinn gemacht hätte.
Mit freundlichen Grüßen
Jeoni
10/17/2014 18:33 Dr.Joker#3
Achso okay vielen dank!
10/17/2014 22:53 -SoulCr4ck-#4
Nur so nen kleines Beispiel bei S4 League ..

Du kannst Button ersetzten mit nem detour -> ein Card Menü ( man braucht alle Karten ) -> und anstatt das du das Fenster mit den Karten erstellst(Card Menü) rufst du sofort die Card Umtausch Funktion auf und Jmp'st zum ende des Fenster ( Card Menü ) wenn es gelöscht wird bzw. Gehidet..dann geht es mit der vorherigen Aktion weiter.

Hoffe verstanden :)

P.S. man könnte mit nem Compare auch noch die Karten checken und dann mit Je zum Card eintausch springen wenn nicht alle vorhandenen sind zum richtigen Menü.

Viel Spaß :)