196の日記

完全に開発メモと雑談、その他忘れそうな計算式などを書き溜める場所になっています!

DebugActiveProcess エラー 50 ERROR_NOT_SUPPORTED ~リバースエンジニアリング Pythonによるバイナリ解析技法

リバースエンジニアリング Pythonによるバイナリ解析技法,
プロセスのPIDからデバッグのためにアタッチを試みる部分でのエラーが起きました。3章の部分です。

原因はPython2が32bitであること?

本を初めから細かく読んで進めていたあなた。私と同じです!おそらく、1章にあった注意書きそのまんま、Immunity Debuggerのインストーラについて来たPythonインストーラで、Pythonを導入しませんでしたか?私はそんな覚えがあります笑
おそらく、このインストーラPythonが32bitです。そして、おそらく現時点(2018年)でこの本を読んでいる方は、64bitのWindowsとアプリケーションをしようしているはずです。




64bitのアプリケーションのデバッグは、Pythonも64bitではないと上手くできないそうです!!



ちなみに、エラーコードを吐き出させるには以下のようにすればOK. これをifの条件以降の通りそうな部分に記載してください。(同じ本を読んでいる方なら、新たな宣言とかは不要なはず)

print "[*] Unable to attach to the process %s" % FormatError(kernel32.GetLastError())

そして、この本の翻訳前の本(多分)のページでも似たようなことが取り上げられています。
Gray Hat Python (error 50 on 64 bit) | Word Gems


解決法

試しに、CmdでPython -vを叩いてみてください。バージョンが書かれているあたりに一緒に32bitと記載はありませんか?
なので、64bit版のPython2をもう一度インストールしましょう。そのあと、eclipsePythonインタプリタの設定も忘れずに。


その他

もし治らなかったら、以下のリンクを参照。僕はこのリンクを詳しく見る前に、解決したのでわかりませんが、構造体の再定義がどうのこうのって言っているので、、もしかしたら、、?

Windows - PythonとWindowsAPI(104853)|teratail







今回の本はこちらのものです。多少古いので、もっといい本があるかも、、です。