私はモッディングの目的でビデオ ゲームで DLL インジェクションを使用しています (私はゲーム API を構築しています)。
新しい DLL から EXE 内の構造体と変数に直接アクセスしたいと考えています。変数の絶対アドレスはわかっています (EXE には固定イメージ ベースがあります)。
GNUld
ドキュメントによると、--defsym=symbol=expression
式で指定された絶対アドレスを含むグローバル シンボルを出力ファイルに作成するために使用できます。
私はそれを働かせることができません。
extern
コードでシンボルを宣言してを使用するld --defsym
と、未定義の参照エラーが発生します。しかし、コードでシンボルを定義すると、EXE バージョンではなくローカル (DLL) バージョンが使用されます。
--defsym
オプションは効果がないようです。どんな洞察も大歓迎です。
更新: --defsym
Linux で完全に動作します。mingw を使用して Windows でコンパイルしようとすると、undefined reference
エラーが発生します。