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