yong.k
yong.k

Reputation: 678

Design application using more confuse code?

Recently I had opened some real apps by using this

So I'm getting the source code from that. In those source code, I found that most of the code is designed like 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();
    }
}

And also the java file named by Garbled text such as

aa.java

bh.java

cj.java

My question is

1) Why those developer create the function named 'm8771b','m9617e'

2) Why most of apps is designed like that?

3) Is this more secure for avoid other to copy their code?

4) Should we also design the application like that?

5) How they can remember where they put the function?

Upvotes: 4

Views: 106

Answers (1)

Nick
Nick

Reputation: 766

People don't write code like that... unless they are either a savant or inexperienced. Using seemingly random strings of methods/class names is something called Obfuscation, which means to hide the real meaning of something in order to make it difficult to read.

Obfuscation Wiki as it pertains to software development

There are programs out there, like ProGuard which do this for us. Its purpose is to both compact and obscure code. That way it is difficult for someone to decompile and reconstruct the project without pouring over what it does (depending on complexity) endlessly.

Since Java always compiles into bytecode, it is predictable in the way in which it can be decompiled and much more standard that a write-once compile-anywhere language. ProGuard helps protect intellectual property or proprietary software and keep people from just stealing code.

Upvotes: 4

Related Questions