0

16進エディタで(私の)exeを変更しようとしています。元々は wx を使用して Python で作成され、py2exe を介して exe に変換されました。ソース コードをなくしてしまい (うーん)、ドロップダウン メニューの項目の 1 つを変更する必要があります。これは、「6」から「9」への単純な 1 文字の変更です。(ジミ・ヘンドリックスを思い出す)

いくつかの 16 進エディタを使用しましたが、文字列を見つけて変更し、ファイルを保存できます。ただし、変更された exe を開くと、ドロップダウン エントリは変更されていません。exe を 16 進エディタで再度開いて確認すると、exe が異なることを確認でき、文字列は必要な新しい値に設定されています。アプリの実行時にそのように表示されないだけです。

私は明らかに 16 進エディタ (または 16 進エディタ) をあまり使用しません。私は何が欠けていますか?ティア。

4

2 に答える 2

0

まず、文字列が実際に .exe ファイルにあり、library.zip ファイルにないことを確認してください。文字列が library.zip にある場合は、はるかに簡単になります。py2exe FAQ ( http://www.py2exe.org/index.cgi/FAQ ) によると、エントリ スクリプトはバイト コンパイルされ、リソースとして .exe に埋め込まれますが、インポートする他の Python モジュールはlibrary.zip ファイル。

文字列がエントリ スクリプトにあると仮定すると、バイト コンパイル プロセス (マーシャル モジュールを使用していると思われます) は、文字列の実際の内容を ASCII または UTF-8 のままにしておく必要があります。検索している文字列は、検索している「6」文字よりも長いですか? 間違った文字列を変更している可能性が高いと思います(または、実際には文字列の一部でさえないもので、非常に悪い可能性があります)。正しいように見える (つまり、文字列が少なくとも 5 ~ 6 文字の長さで、非常に特徴的である) と確信している場合は、ファイル内で複数回発生し、間違ったインスタンスを変更した可能性がありますか?

さらに先に進みたい場合は、Windows リソース エディターを入手し、.exe からリソースを抽出して .pyo ファイルを回復し、marshal モジュールと dis モジュールを使用してバイトコードを Python オペコードとリテラルに戻すことができます。これにより、ファイルに含まれる文字列をよりよく理解できる場合があります。

http://nedbatchelder.com/blog/200804/the_structure_of_pyc_files.html

于 2012-02-14T21:08:44.117 に答える