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 ,