当前位置:操作系统 > 安卓/Android >>

Android apk逆向实战

简介
 
逆向Android apk其实是一个分析Android apk的一个过程,必须了解Android程序开发的流程、结构、语句分支、解密原理等等。
 
功能
 
破解一个注册验证程序(自写一个简单的注册验证程序,然后分析它,再破解它)。
 
步骤
 
1、编写一个简单的注册验证apk,关键代码如下:
 
 
private boolean checkSN(String userName, String sn) { //确认验证  
    try {  
        if ((userName == null) || (userName.length() == 0))  
            return false;  
        if ((sn == null) || (sn.length() != 16))  
            return false;  
        MessageDigest digest = MessageDigest.getInstance("MD5");  
        digest.reset();  
        digest.update(userName.getBytes());  
        byte[] bytes = digest.digest();     //采用MD5对用户名进行Hash  
        String hexstr = toHexString(bytes, ""); //将计算结果转化成字符串  
        StringBuilder sb = new StringBuilder();  
        for (int i = 0; i < hexstr.length(); i += 2) {  
            sb.append(hexstr.charAt(i));  
        }  
        String userSN = sb.toString(); //计算出的SN          
        //Log.d("crackme", hexstr);  
        //Log.d("crackme", userSN);  
        if (!userSN.equalsIgnoreCase(sn))   //比较注册码是否正确  
            return false;  
    } catch (NoSuchAlgorithmException e) {  
        e.printStackTrace();  
        return false;  
    }          
    return true;  
}  
  
private static String toHexString(byte[] bytes, String separator) { //转为十六进制  
    StringBuilder hexString = new StringBuilder();  
    for (byte b : bytes) {  
        String hex = Integer.toHexString(0xFF & b);  
        if(hex.length() == 1){  
            hexString.append('0');  
        }  
        hexString.append(hex).append(separator);  
    }  
    return hexString.toString();  
}  

 

 
这个方法的主要功能是计算用户名与注册码是否匹配。

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,