64-bit 版 SendSignal
SendSignal の 64bit 版を作成したので、公開します。
上記 32-bit 版と同様にお使いいただけます(ただし、64-bit 版ですので、64-bit プロセスに対してのみ使用可能です)。
使用例(pid に Ctrl+Break を送信):
SendSignal64 pid
ただ、引数を一つ追加しており、最後に 0 を渡すことで、Ctrl+Break ではなく、Ctrl+C を送信することもできます。
使用例2(pid に Ctrl+C を送信):
SendSignal64 pid 0
以下の環境で動作を確認しています。
- Windows XP x64 Edition
- Windows 7 64-bit
- Windows Server 2008 R2
- Windows 8 64-bit
このソフトウェアを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねますので、同意いただける方のみご使用ください。
以下、技術的な補足です。
64-bit 版を実現するに当たって、kernel32#CtrlRoutine のアドレスを探し出し、CreateRemoteThread するアプローチは上記 32-bit 版と同じです。
変更したのは、CtrlRoutine の探し方です。32-bit 版では TEB から先頭スタックを(一定のオフセットを元に)辿って解決していたり、あるいは CaptureStackBackTrace 経由で CtrlRoutine を解決している方(上記リンクのコメント)もいらっしゃいますが、本実行ファイルでは単に kernel32 を LoadLibrary し、CtrlRoutine を GetProcAddress しているだけです。基本的に、API は序数が変わることはあれ、名前が変わることはないという立ち位置です。ドキュメントが公開されていないとはいえ、エクスポートされているんだから、使っちゃえばいいと思うのは安直なのでしょうか...
ソースコードについては、要望があれば公開いたします。