長い命令を短い命令に置き換える場合は、nop
をパッドするだけで済みます。インラインで短い命令を置き換える(アセンブリ)
私はどのようにインラインで置き換えますか?
そしてインライン私は、他の空きメモリにはjmp
がないことを意味します。
他の言葉で言えば、なにか可能です挿入 more ops?それはどうですか?バイナリのヘッダーは何とか変更する必要がありますか? jmp
のすべてのopsで何が起こりますか?(理論的な変更の後も引き続き動作しますか?)絶対jmp
があるのはどうですか?それらも同様に変更する必要がありますか?それ以外は何をすべきか(これが実際に可能な場合)? 、(jmp
)(je
、jne
など)条件付きまたは無条件のか、短いと近い2つの形態で存在し、簡単なジャンプの
すべての種類:
どのコンパイラを使用しますか? – zx485
質問は理論的なので重要ではありませんが、私はhttps://www.onlinedisassembler.com/odaweb/を使ってこれらのオペコードを取得しました。 – alexandernst
私は過去にこれを正確に行うコードを書いていますが、参照を識別して修正するために基本的なオペコード・ディスアセンブラを書く必要があるので、やや複雑です。私は少し違ってアプローチしましたが、命令を追加するのではなく、さらにRAMを割り当て、ロングジャンプ命令で上書きされるアセンブラをコピーして、コピーされたアセンブラのすべての参照を更新して、場所(オンザフライPIC)。ジャンプは私の新しいメソッドを指していました。私の新しいメソッドは、私がコピーした変更されたアセンブラにジャンプして、古いメソッドのコードを継承することができました。 – Geoffrey