最近我使用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有助于保护知识产权或专有软件,防止人们窃取代码。