2016-09-19 2 views
4

最近、私はいくつかのリアルアプリを使ってオープンしましたthisより混乱したコードを使用しているアプリケーションを設計しますか?

私はそれからソースコードを取得しています。これらのソースコードでは、私は、コードのほとんどが文字化けテキストで指定されたにもこの

public class LockActivity extends Activity { 
    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     if (GlobalDataHolder.m9617e()) { 
      bm.m8771b(getApplicationContext(), getPackageManager()); 
      finish(); 
     } 
    } 

    protected void onResume() { 
     super.onResume(); 
     if (GlobalDataHolder.m9617e()||this.f4719a.m9124j()) { 
      bm.m8771b(getApplicationContext(), getPackageManager()); 

      finish(); 
      return; 
     } 
     startActivity(new Intent(getApplicationContext(), LaunchActivity.class)); 
    } 

    public void onPause() { 
     super.onPause(); 
    } 

    public void onDestroy() { 
     super.onDestroy(); 
    } 
} 

とJavaファイルのように設計されていることがわかるような

aa.java 

bh.java 

cj.java 

私の質問は)

1でありますなぜそれらの開発者が 'm8771b'、 'm9617e'という名前の関数を作成するのですか?

2)ほとんどのアプリはそのように設計されているのはなぜですか?

3)コードをコピーするのを避けるため、これはより安全ですか?

4)そのようなアプリケーションを設計する必要がありますか?

5)彼らはどこに機能を置くのか覚えていますか?

+0

アンドロイドプロジェクトでプロガードを使用すると、ファンクション名とクラス名が変更されます。それはユーザーによって行われません。 –

答えて

4

人々は、そのようなコードを書いていません...彼らは善行者でも未経験でもない限り。一見無作為なメソッド/クラス名の文字列を使用することは、Obfuscationと呼ばれるものです。これは、読みにくくするために何かの本当の意味を隠すことを意味します。

Obfuscation Wikiそれはソフトウェア開発に

を関係として私たちのためにこれを行うProGuardのようにそこにプログラムがあります。その目的は、コンパクトで不明瞭なコードの両方にあります。そうすることで、誰かが、(複雑さに依存して)無限にそれを実行することなくプロジェクトを逆コンパイルおよび再構築することは難しいです。

Javaはバイトコードに常にコンパイルされるため、コンパイルが可能であり、一度だけコンパイルできるようにすることができます。 ProGuardは、知的財産や独自のソフトウェアを保護し、人々がコードを盗むのを防ぐのに役立ちます。

関連する問題