最近学习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

从破解APP开始学Android——用户登录验证相关推荐

  1. android用户登录验证

    转自https://www.cnblogs.com/android-blogs/p/5912585.html 转载于:https://www.cnblogs.com/xiaoyuersdch/p/84 ...

  2. 使用SSH框架实现用户登录验证

    今天,写一个非常简单的通过struts+hibernate+spring的集成来实现用户登录验证的例子,让大家了解一下三者是如何是整合的. 我们可以通过myeclipse的向导,生成相应的环境搭建,如 ...

  3. ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...

    ajax用户登录验证: 实例 html> Ajax实战:表单验证 用户登录 邮箱: 密码: 提交 let btn = document.getElementsByTagName('button' ...

  4. python登录验证程序_Python模拟用户登录验证

    本文实例为大家分享了Python模拟用户登录验证的具体代码,供大家参考,具体内容如下 1.功能简介 此程序模拟用户登录验证的过程,实现用户名输入.黑名单检测.用户有效性判别.密码输入及验证等.用户在3 ...

  5. php 语法验证_PHP用户登录验证模块

    这篇文章介绍的内容是关于PHP用户登录验证模块 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 实现用户登录 >>>1 创建登录表单 登录表单的HTML代码如下: U ...

  6. JavaWeb 实验 Servlet用户登录验证

    实验2.2 Servlet用户登录验证 实验内容: 编写JSP程序,实现用户提交登录表单给Servlet,由Servlet 查询数据库(模拟查询,不用真的连接数据库查询),对用户是否存在进行验证. 实 ...

  7. 数据库用户登录验证及注册功能实现

    数据库用户登录验证及注册功能实现 1.mysql数据库安装 2.解决navicat连接mysql的密码错误问题 3.创建数据库.用户表.插入数据 (1)进入mysql数据库 (2) 创建数据库dnn_ ...

  8. 基于 JSP + Servlet 的用户登录验证

    综合案例--基于 JSP + Servlet 的用户登录验证 [例6-1] 实现一个简单的用户登录验证程序,如果用户名是 abc ,密码是 123,则显示欢迎用户的信息,否则显示"用户名或密 ...

  9. php链接mysql实例之用户登录验证以及使用cookie登录

    这篇博客实现用户登录验证以及使用cookie登录,它承接了前面的几个博客: 1. php连接mysql实例之新用户注册实现 2. php连接mysql实例之后台列表显示已注册的用户信息 3. php连 ...

  10. 使用filter过滤器实现简单用户登录验证(不用配置web.xml文件)

    一.filter过滤器的作用 如果想要获取中文字符,或者是显示提交的中文,就需要添加以下代码,来防止乱码的情况发生. request.setCharacterEncoding("utf-8& ...

最新文章

  1. Gartner发布2020年数据与分析领域的十大技术趋势
  2. ABAP选择屏幕建议
  3. php中的ol标签,html5中ol标签的用法详解
  4. 验证码的设计,随机数的生成
  5. 前端学习(1916)vue之电商管理系统电商系统之绘制面包屑导航和卡片视图
  6. docker mysql命令大全_Docker命令大全
  7. java伪代码生成器_JAVA单例模式的实现伪代码
  8. LeetCOde-394:字符串解码
  9. Python easy_insatll 安装包
  10. http/https 协议(概略)
  11. oralce修改密码教程
  12. AI显微镜面市:20分钟诊断疟疾,精度满足世卫最高标准
  13. Python项目导出依赖包requirements.txt
  14. SQL语句的执行计划
  15. 2022: Python下载安装教程
  16. 隐匿函数,二分法 冒泡排序
  17. 甘肃省房屋过户费用计算机,2017二手房过户费计算器
  18. 基于MATLAB/Simulink的电力电子电路仿真技术——三相电流滞环跟踪逆变器
  19. docker入门基础(四)
  20. 独立游戏——《爱与正义》准备开工啦!

热门文章

  1. 从零开始学习Java的简单步骤和方法技巧
  2. 智慧城市的投资运营与评估
  3. windows ip管理之netsetman
  4. nuxt 低版本浏览器不兼容处理
  5. 第四周 特殊应用:人脸识别和神经风格转换(Special applications: Face recognition Neural style transfer)
  6. 程序员修炼之道(第2版)
  7. 境外电商-香港汇丰银行基础知识
  8. Python实现离线字典+听写单词(一):获取离线字典
  9. 一个RGB数据采集实例学习matlab_GUI界面设计
  10. 针对初学者的 MQL 5 中的自定义指标