Forum: Programmieren allgemein
by himitsu,
4. Jul 2006
Variable := @Funktion;
entspricht
MOV &Variable, $00123456
hier kann nichts von windows gefixt werden, denn für Windows ist es nur eine "normale" Zahl, welche in irgendeinen peicherbereich kopiert wird ... und da es nicht wissen kann, daß es eigentlich ein Pointer ist, kann es dort definitiv nicht fixen und später fixen ginge och nicht, da dort Windows eigentlich nicht wissen kann, ob gefixt...
Forum: Programmieren allgemein
by himitsu,
4. Jul 2006
gerade da ligt ja z.B. eines der Probleme ... es kann es eben nicht wissen.
wenn ich z.B. irgendwo im Quellcode einer Variable einen hardcodierten Wert übergeben, welcher z.B. die Position einer Funktion ist,
Variable := @Funktion;
(wenn funktion eine eigene Funktion im eigenem Programm ist, dann wird der Wert ja vom Compiler hardgecodet)
dort vielleicht noch ein bissl rumrechne
Variable...
Forum: Programmieren allgemein
by himitsu,
4. Jul 2006
aso
OK, an dieser Stelle wäre natürlich der direkte Sprung nicht schlecht ^^
Obwohl du dort natürlich auch relativ springen könntest
JMP (neueFunktion - aktuellePosition)
also in etwa:
lBuffer : Array of Byte;
...
PByte(@lBuffer)^ := $e9;
Forum: Programmieren allgemein
by himitsu,
4. Jul 2006
nö, dat is der Opcode für einen direkten short jump oder wie dat nochmal hieß.
Also einen sozusagen ein relativer Sprung, von der Stelle aus, wo er steht.
Den Opcode für einen absoluten Sprung hab ich auch gerade nicht im Kopf ... könnte höchstens mal heut abend nachseh ^^
im Grunde gibt das PTR (Pointer) ja auch an, daß es sich um einen solchen handelt, aber dieses muß nicht immer...
Forum: Programmieren allgemein
by himitsu,
4. Jul 2006
Ansonsten war deine Angabe eh falsch, in Betracht auf dein Ziel,
jmp
denn du wolltest doch bestimmt dieses verwirklichen? :zwinker:
jmp $00112233
die eckigen Klammern geben ja schließlich an, daß es dich bei der Angabe um einen "Zeiger" handeln soll.