最近我用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) 他们如何记住函数的放置位置?
最佳答案
人们不会那样写代码……除非他们是专家或缺乏经验。使用看似随机的方法/类名称字符串称为混淆,这意味着隐藏某些东西的真正含义以使其难以阅读。
Obfuscation Wiki因为它与软件开发有关
那里有一些程序,比如 ProGuard为我们做这件事。它的目的是使代码既紧凑又晦涩。这样一来,如果不无休止地研究项目的功能(取决于复杂性),某人就很难反编译和重建项目。
由于 Java 总是编译成字节码,因此它的反编译方式是可预测的,并且比一次编写随处编译的语言更加标准。 ProGuard 有助于保护知识产权或专有软件,防止人们窃取代码。
关于android - 使用更困惑的代码设计应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39567165/