-2

AS2で書かれたadobe flashを使ったフラッシュプロジェクトがあり、もちろん.flaファイルがあります。このプログラムには、コードの記述に使用されるパラメーターを変更するための一種の認証があります。それは私が次のようなものを書いたことを意味します:

if (userEnteredPassword == "xyz")
{
//login success logic
}

今私がユーザーに与えるのは.exeファイルだけです。ユーザーがパスワードを変更できるようにしたい。どうやってやるの?コンパイル時に上記のコードの「xyz」を変更するにはどうすればよいですか? パスワードをハッシュして、.exe ファイルの隣のファイルに保存できると思いました。認証のためにハッシュ化された文字列を確認します。単純なハッシュ関数を作成できます。可能ですか? ファイルを操作するにはどうすればよいですか? ありがとうございました

4

2 に答える 2

1

FLAファイルがないと、特定の解決策を提供するのは困難です。私はあなたに一言だけ与えることができます。最初のコンパイルにはまだFlashが必要であり、60日間の試用版を簡単に入手できます。

解決策の1つは、このパスワードをASクラスで外部化することですが、セキュリティを少し向上させるためにSWFでコンパイルしたままにします(ただし、逆コンパイラーはパスワードを簡単に見つけることができるため、それほど多くはありません)。

パスワードがエンコードされている領域を見つける必要があります。たとえば、ActionScriptのblobを含むフレームであるとします。ステートメントが次のようなものだとしましょう

if (userEnteredPassword == "xyz")
{
    //login success logic
}

あなたはそれを次のように書き直すことができます

if (userEnteredPassword == appsetting.Settings.password )
{
    //login success logic
}

次に、 appsettingフォルダーにASファイルSettings.asを作成します。

class appsetting.Settings
{
    public static var password:String = "xyz";
}

FLAをSWFにコンパイルし、エラーがないことを確認します。その後、SWFはFlashIDEなしでMTASCによって更新される場合があります。

したがって、SWFとパスワードASファイルが同じディレクトリにあるとすると、MTASCコマンドは次のようになります。

mtasc.exe -swf your_swf_file.swf -cp ./ -out your_swf_with_new_password.swf

セキュリティに関する考慮事項 前述したように、プレーンテキストとして保存されているパスワードは不正です。少しアプローチは、MD5のような一方向の暗号化でパスワードを暗号化することです。次に、暗号化されたユーザー入力を暗号化されたパスワードと比較する必要があります。これには暗号化ライブラリも必要であり、そのためにはFlashの知識が必要です。

最善の解決策は、サーバーにパスワードを確認させることです。http呼び出しを行い、パスワードが一致するかどうかをサーバーに確認させることができます。これにより、パスワードがどのような形式でも公開されることはありません。このアプローチはより複雑です。

于 2013-02-04T23:41:44.703 に答える
1

Flash が AS2 (AS3 ではなく) で記述されていて、すべての ActionScript ソース コードがある場合、MTASCコンパイラを使用することは可能ですが、アプリケーションの記述方法によっては注意が必要です。ソース コードがない場合は、SWF を逆コンパイルする必要があり、逆コンパイラがすべてを包括的に分解してくれることを祈ります。残念ながら (そしてありがたいことに)、私が見たものは再構築可能なフラッシュを分解できませんでした。

于 2013-02-04T16:44:34.230 に答える