欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

安卓应用程序的逆向工程

来源:本站整理 作者:佚名 时间:2017-09-20 TAG: 我要投稿

你常常在用 Burp 拦阻信息的时刻很渺茫么?你常常在阐发用加密的数据停止通讯的App,对付必要懂得它的数据而怀疑么?在本文,我将会分享许多办法来用于逆向阐发APK。咱们将会对目的APP采纳静态和静态的阐发办法。
我创立了一个简略的APP作为阐发目的,它的功效只是纯真地对咱们输入的数据停止验证,假如用户输入准确的话,将会在屏幕上表现“Congratulations“。
咱们先看一下这个应用的源代码以便于咱们一下子可以或许将它与反编译后的APK代码停止比拟。
package com.punsec.demo;
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import javax.crypto.SecretKey;
 
public class MainActivity extends AppCompatActivity {
 
    TextView result;
    EditText input;
    Button button;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        input = (EditText) findViewById(R.id.input);
        result = (TextView) findViewById(R.id.result);
        button = (Button) findViewById(R.id.ok);
 
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String a = input.getText().toString();
                String b = getString(R.string.a);
                try {
                    SecretKey secretKey = Util.a(new String(Base64.decode(getString(R.string.b), Base64.DEFAULT)));
                    byte e[] = Util.a(a, secretKey);
                    String er = Base64.encodeToString(e, Base64.DEFAULT).trim();
 
                    if(er.equals(b)) {
                        result.setText(getString(R.string.d));
                    }else {
                        result.setText(getString(R.string.e));
                    }
 
                } catch (Exception e) {
//                    Log.d("EXCEPTION:", e.getMessage());
                }
            }
        });
    }
}
这个应用应用下面的这个帮助类来履行一些重要的操纵:
package com.punsec.demo;
 
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.InvalidParameterSpecException;
 
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
 
 
class Util {
    static SecretKey a(String secret)
            throws NoSuchAlgorithmException, InvalidKeySpecException

[1] [2] [3] [4] [5] [6] [7] [8] [9]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载