最近学习android 的大型商业App 开发,又搞不到 商业源码,网上能找到的都是高仿的界面,但是应用程序里面的程序架构都不怎么样。 笔者就瞄准的 app破解,找个app破解开来学习。 Apk文件破解可见源码   这里讲的很好。
破解以后code 里面很多破解的不是很全面, 有很多//ERROR// 只能自己改了。 笔者的方法是 简单的 改掉,复杂的直接删掉,等将来用到的时候 再调试并加上。
Fiddler   http 调试利器    android http 抓包
一下记录了登录修改过程中碰到的一些问题: HttpClient 1  最开始 自己定义了一 httpClient  但是在 Fiddler抓的包中 一直有 client   agent 头,但是真正的app中是没有这个头的。最后还是只能用app中的实现:
    private HttpClient createHttpClient()    {      BasicHttpParams localBasicHttpParams = new BasicHttpParams();      ConnManagerParams.setMaxTotalConnections(localBasicHttpParams, 5);      HttpConnectionParams.setConnectionTimeout(localBasicHttpParams, 30000);      HttpConnectionParams.setSoTimeout(localBasicHttpParams, 60000);      HttpProtocolParams.setVersion(localBasicHttpParams, HttpVersion.HTTP_1_1);      HttpProtocolParams.setContentCharset(localBasicHttpParams, "ISO-8859-1");      HttpProtocolParams.setUseExpectContinue(localBasicHttpParams, true);      SchemeRegistry localSchemeRegistry = new SchemeRegistry();      localSchemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));      localSchemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));      return new DefaultHttpClient(new ThreadSafeClientConnManager(localBasicHttpParams, localSchemeRegistry), localBasicHttpParams);    }



2 关于encode 破解的 函数中 代码是乱的,最后在 网站的开放api sdk 中找到了:  
    public static String encode(String value) {      String encoded = null;      try {          encoded = URLEncoder.encode(value, "utf-8");      } catch (UnsupportedEncodingException ignore) {      }      StringBuffer buf = new StringBuffer(encoded.length());      char focus;      for (int i = 0; i < encoded.length(); i++) {          focus = encoded.charAt(i);          if (focus == '*') {              buf.append("%2A");          } else if (focus == '+') {              buf.append("%20");          } else if (focus == '%' && (i + 1) < encoded.length()                  && encoded.charAt(i + 1) == '7' && encoded.charAt(i + 2) == 'E') {              buf.append('~');              i += 2;          } else {              buf.append(focus);          }      }      return buf.toString();  }


3 程序签名 破解code 也是乱的, 最后google 了一下, 居然和weibo 的签名函数一样:
    http://open.weibo.com/qa/index.php?qa=3850&qa_1=token1-0 %E6%98%AF%E6%8A%A5%E9%94%99%EF%BC%8Csignature_method_rejected-get_oauth2_token
public static String generateSignature(String paramString1, String paramString2, String paramString3)  {    String HMAC_SHA1 ="HmacSHA1";     byte[] byteHMAC = null;        try {            Mac mac = Mac.getInstance("HmacSHA1");            StringBuilder localStringBuilder = new StringBuilder(String.valueOf(encode(paramString2))).append("&");            localStringBuilder.append(paramString1);            SecretKeySpec spec;            if (null == paramString3) {             String oauthSignature = encode(paramString2) + "&";             spec = new SecretKeySpec(oauthSignature.getBytes(), HMAC_SHA1);            } else {                           spec = new SecretKeySpec(encode(paramString3).getBytes(), "HmacSHA1");            }            mac.init(spec);            byteHMAC = mac.doFinal(paramString1.toString().getBytes());        } catch (InvalidKeyException e) {            e.printStackTrace();        } catch (NoSuchAlgorithmException ignore) {            // should never happen        }        return new BASE64Encoder().encode(byteHMAC);  }



最后 成功信息:   oauth_token=164269412_7130f783fdfafe3927d29e1f6625a4&oauth_token_secret=ec94542edde237ee3b9f7e4094c3cb606a2e3d3bd6&is_semi_account=0&user_id=164269412&verify=164269412_164269412_1413102298_3d1adde80e52af26753d7f050e5996ce_03403AndroidClient_kx&wapverify=164269412_164269412_1413102298_bc28dc7d497824ce8f6f392ab7f94899_kx-android

更多相关文章

  1. Android(安卓)下开发3D程序--我的坎坷路(一)
  2. (原)android的JNI中使用C++的类
  3. Android实现上传拍下的照片到服务器
  4. Android(安卓)切换系统语言源码分析
  5. 从Java/Android到Swift iOS开发:语言与框架对比
  6. Android(安卓)Hook程序,对库函数进行HOOK
  7. android在JNI_OnLoad入口函数下断点动态调试so库
  8. android源代码framework取消apk强制翻转
  9. Android系统启动阶段多种快速重启系统方法试验记录

随机推荐

  1. CSDN 很经典的博客 您值得一览
  2. qt for android
  3. Android(安卓)资源获取
  4. 【翻译】(1)Android NDK Overview
  5. Mono for Android试用体验
  6. android布局属性之margin
  7. 自定义组件
  8. Android应用程序启动过程——Launcher源
  9. 解决Android Studio 和 Android SDK Mana
  10. 常用的android弹出对话框alertDialog