ポインタのアドレスを文字列変数に格納された値に手動で設定したいと思います。私が持っている:そしてデルファイでポインタのアドレスを手動で設定する方法
addr : String;
ptr : Pointer;
:
addr:='005F5770';
それはどのようにptr
に割り当てますか?
ポインタのアドレスを文字列変数に格納された値に手動で設定したいと思います。私が持っている:そしてデルファイでポインタのアドレスを手動で設定する方法
addr : String;
ptr : Pointer;
:
addr:='005F5770';
それはどのようにptr
に割り当てますか?
:アドレスはコンパイル時に知られているリテラルであるので、あなたは文字列変数を必要としない
ptr := Pointer($005F5770);
。もちろん
const
ptr = Pointer($005F5770);
、値はリテラルではなく、実際には16進表現で文字列としての人生をスタートした場合:値はコンパイル時に知られているので
実際には、あなたは、これが一定にすることができますあなたが最初の整数に変換する必要があります:64ビット用にコンパイルされたときに、あなたのコードが32ビットポインタの切り捨てに免疫があるように
ptr := Pointer(StrToUInt64('$' + S));
はUInt64
にそれを変換します。
これは動作します、ありがとうございます! – meller92
前に付加$
または0x
で文字列進数と標準StrToInt()を使用します。
ptr := Pointer(StrToInt('$'+addr));
あなたのポインタ値が大きく、64ビットコンパイラをターゲットにしている場合は、StrToInt64()
注意を使用することを検討してください整数からポインタへの型キャストが必要であるということです。
このよう
私はあなたがおそらくこれを行う必要があるかもしれないという理由で、むしろ好奇心が強いと認めます。プライベートアドレス空間の有効なメモリのアドレスは、16進数でエンコードされ、文字列に格納されてどのように終了しますか? –
アドレスを取得できますが、ポインタ変数のアドレスを設定できるかどうかはわかりません。あなたが設定できるのはポインタの値であり、アドレスではありません。 –
@J ...通常、ゲームのライフカウント変数のアドレスを見つけるためにハッキングツールを使用した後 –