混淆前后的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混淆前后的区别相关的知识,希望对你有一定的参考价值。
如果不混淆,反编译后清单文件、png文件、xml文件及JAVA代码几乎和你的源码完全一样!
虽说现在的android工程都是混淆过的,但是我们希望借鉴的如drawable下的图片、XML布局文件基本还是可以完好无缺的破解出来
即使JAVA代码破解后阅读起来比较吃力,但是某个具体的方法逻辑还是基本完好的。
混淆前后的区别--实例
源码
public class PhoneActivity extends Activity {
private EditText dt_number = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//加载指定的布局Button bt_dail = (Button) findViewById(R.id.bt_dail);dt_number = (EditText) findViewById(R.id.et_number);bt_dail.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String number = dt_number.getText().toString().trim();//获取号码if (TextUtils.isEmpty(number)) {//如果号码为空Toast.makeText(PhoneActivity.this, "号码不能为空!", Toast.LENGTH_SHORT).show();//土司return;//结束方法}Intent intent = new Intent();//意图intent.setAction(Intent.ACTION_CALL);//为意图设置事件,注意要在清单文件中注册权限intent.setData(Uri.parse("tel:" + number));//事件的数据startActivity(intent);//执行}});}}未混淆,从APK中提取出的源码
和源码的区别:①注释全去掉了;②结构基本不会变;③变量名可能会被更改;
public class PhoneActivity extends Activity {
private EditText dt_number = null;public void onCreate(Bundle paramBundle) {super.onCreate(paramBundle);setContentView(2130903040);Button localButton = (Button) findViewById(2131034113);this.dt_number = ((EditText) findViewById(2131034112));localButton.setOnClickListener(new View.OnClickListener() {public void onClick(View paramView) {String str = PhoneActivity.this.dt_number.getText().toString().trim();if (TextUtils.isEmpty(str)) {Toast.makeText(PhoneActivity.this, "号码不能为空!", 0).show();return;}Intent localIntent = new Intent();localIntent.setAction("android.intent.action.CALL");localIntent.setData(Uri.parse("tel:" + str));PhoneActivity.this.startActivity(localIntent);}});}}混淆后,从APK中提取出的源码
和没混淆的区别:①结构会有很大变化;②变量名会被更改;
public class PhoneActivity extends Activity {
private EditText a = null;public void onCreate(Bundle paramBundle) {super.onCreate(paramBundle);setContentView(2130903040);Button localButton = (Button) findViewById(2131034113);this.a = ((EditText) findViewById(2131034112));localButton.setOnClickListener(new a(this));}}这是衍生出来的一个类final class a implements View.OnClickListener {a(PhoneActivity paramPhoneActivity) {}public final void onClick(View paramView) {String str = PhoneActivity.a(this.a).getText().toString().trim();if (TextUtils.isEmpty(str)) {Toast.makeText(this.a, "号码不能为空!", 0).show();return;}Intent localIntent = new Intent();localIntent.setAction("android.intent.action.CALL");localIntent.setData(Uri.parse("tel:" + str));this.a.startActivity(localIntent);}}
!--WizRtf2Html>
以上是关于混淆前后的区别的主要内容,如果未能解决你的问题,请参考以下文章