apk随便在百度应用市场下载的,本想找个so加密的apk进行练习……

逆向第一步,当然是抓包看看提交了什么数据,分析数据包看看哪些数据是相对固定的,哪些数据是需要进一步分析的。

01.jpg (103.64 KB, 下载次数: 2)

2019-6-5 00:35 上传

POST https://nuc.api.mgtv.com/MobileLogin?device=vivo%20v3max%20a&osVersion=5.1.1&appVersion=6.3.6&ticket=&userId=0&mac=i865166029270231&osType=android&channel=baidu&uuid=&endType=mgtvapp&androidid=2cb935d1f69cdcb7&imei=865166029270231&macaddress=00%3A81%3Aba%3A79%3A6e%3Aa9&seqId=272a5ff8824479c52a450a0de249f6e2&version=5.2&type=10&abroad=0&src=mgtv&uid=&phonetype=vivo%20v3max%20a&testversion= HTTP/1.1

User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; vivo v3max a Build/LMY49I) imgotv-aphone-6.3.6

Content-Type: application/x-www-form-urlencoded

Content-Length: 86

Host: nuc.api.mgtv.com

Connection: Keep-Alive

Accept-Encoding: gzip

_support=10100001&invoker=hunantvphone&mobile=15344556677&password=s2345678&smscode=86

依据包分析得知,大部分都是相对固定的数据,其中mac ="i" + macaddress ,macaddress顾名思义就是设备mac。

其中只有seqId加密过,而且从长度判断,应该是一个MD5加密。

于是使用jadx反编译apk,搜索关键字非常容易就找到了数据包组包的地方:

02.jpg (86.84 KB, 下载次数: 1)

2019-6-5 00:39 上传

先跟进y.a看看,果真是一个MD5加密方法。

03.jpg (34.53 KB, 下载次数: 1)

2019-6-5 00:40 上传

退回组包的地方继续分析这个MD5加密传入的数据是什么:

最主要的是d.s()是什么呢?

04.png (156.34 KB, 下载次数: 2)

2019-6-5 00:43 上传

分析前后代码,竟然发现……:mac的值也是d.s(),而从前面的提交数据包已经分析得知:mac = "i" + macaddress。

意思就是说seqId = "i"+macaddress +"."+时间戳

这个帖子想说的重点是:消息摘要算法的特性!

依据消息摘要算法的特性,是没法根据加密后的数据解密出明文的,所以消息摘要算法一般常用于数据校验。而这个apk提交的数据包中,seqId的摘要参数包含了时间戳,而包中却没有传递该时间戳,所以服务器是无法验证此消息摘要的正确性。所以seqId,应该就是一个32个十六进制字符的随机数……至此,就分析完毕了。

上面不是重点,主要是下面对消息摘要算法特性的一些总结:

消息摘要算法有如下特点:不管加密明文有多长,加密后的密文定长

明文不一样,加密后的结果必定不一样

加密后是不可逆的。

这种算法一般常见于校验数据完整性,apk中常见于签名,sign等

由于密文不可逆,所以后台无法还原。也就是说他要验证,就会在后台以跟前台一样的方式去重新签名一遍来比较。也就是说他会把源数据和签名后的值一起提交前台。进行文本比对。

所以逆向的时候如果要保证加密结果是一样的,就必须要保证在签名时候的数据和提交上去的源数据一致。这种算法还特别特别喜欢在内部加入时间戳。所以上面为什么判断得出seqId是一个随机数,因为每次加密的时间戳是不一样的,而数据包并未提交时间戳。

apk逆向思路_逆向练手——从一个apk简单逆向看消息摘要算法相关推荐

  1. apk逆向思路_安卓逆向和手游辅助学习路线

    一.安卓逆向基础(建议1周) 1. 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向.在环境安装的工程中会遇到很多细节上的问题. 2. 第二步就是要了解 ...

  2. python爬虫之逆向破解_这种python反爬虫手段有点意思,看我怎么破解

    这种反爬虫手段被广泛应用在一线互联网企业的产品中,例如汽车资讯类网站.小说类网站等文字密度较大的站点.在开始学习之前,我们先来看看具体的现象.打开网址: https://implicit-style- ...

  3. pytorch 训练过程acc_pytorch入门练手:一个简单的CNN模型

    由于新型冠状肺炎疫情一直没能开学,在家自己学习了一下pytorch,本来说按着官网的60分钟教程过一遍的,但是CIFAR-10数据库的下载速度太慢了-- 这台电脑里也没有现成的数据库,想起之前画了一些 ...

  4. dueros模拟测试没有请求后台_实战 | 用手写一个骚气的请求合并,演绎底层的真实...

    来源:公众号[ java进阶架构师] 好文推荐: 字节跳动Java岗4面面经分享:索弓|+rabbitmq+spring+Redis 拼多多面经Java开发3面面经:准备好久没想到面试题超级简单 网易 ...

  5. node 压缩图片_嗯,手搓一个TinyPng压缩图片的WebpackPlugin也SoEasy啦

    作者:JowayYoung 仓库:Github.CodePen 博客:掘金.思否.知乎.简书.头条.CSDN 公众号:IQ前端 联系我:关注公众号后有我的微信哟 特别声明:原创不易,未经授权不得对此文 ...

  6. go爬虫和python爬虫_爬虫练手-豆瓣top250(go版以及python版)

    最近学习go,就找了一个例子练习[go语言爬虫]go语言爬取豆瓣电影top250,思路大概就是获取网页,然后根据页面元素,用正则表达式匹配电影名称.评分.评论人数.原文有个地方需要修改下pattern ...

  7. 简单且有创意的python作品_适合练手的 14 个Python 小项目,趣味十足!

    掌握一门技术,迅速提升能力,最好方法是通过实践项目,最好是完整且有趣的.分享一本,我认为非常不错的书籍,<Python Playground>,这本书每个章节就是一个完整的小项目. ​​​ ...

  8. 小型论坛php,PHP练手:一个小型论坛(带后台)_PHP教程

    注册相关函数 $value){ if (!isset($key) || ($value=='')){ return false; } return true; } } //验证邮箱是否有效 funct ...

  9. 底层小程序员 练手做一个网站不小心赚了几十亿

    微信又改版了,为了方便第一时间看到我们的推送,请按照下列操作,设置"置顶":点击上方蓝色字体"程序员之家"-点击右上角"-"-点击" ...

  10. 爬虫练手——求一个网页中所有数字之和!(题网:http://www.glidedsky.com/)

    第一道:题目如下! 1.目标URL:http://www.glidedsky.com/,此网站中的第一题. 2.python中requests+etree+xpath实现:(cookie_str数据大 ...

最新文章

  1. Globalization Resources
  2. SublineText 3 安装 Package Control插件
  3. docker日志存放路径
  4. Scala基础教程(五):函数、闭包
  5. ubuntu解压和压缩文件
  6. 计算机网络ipv4到ipv6怎么实现,论计算机网络协议IPV4到IPV6的过渡策略|房屋搬迁过渡协议...
  7. 在r中弄方差分析表_R语言 | 方差分析(上)
  8. 联机饥荒一直显示启动服务器,饥荒联机版启动服务器时遇到一些麻烦 | 手游网游页游攻略大全...
  9. 字符串系列——uva10361 - 自动作诗机
  10. 英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路
  11. 用单分子测序(single-molecule sequencing)和局部敏感哈希(locality-sensitive hashing)来组装大型基因组...
  12. 一种电池过放电保护电路
  13. 二层、三层与四层交换机
  14. 嵌入式产品测试工装——ETest
  15. centos7 搭建redis 5.0.0 集群
  16. windows 和 Linux 查看IP属性(ipconfig,ifconfig)
  17. 浏览器多分辨率适配方法总结(跨平台)
  18. 2020-10-05
  19. ssh无输入密码登录问题
  20. 使用TLS和Mosquitto Broker实现安全通信之密钥和证书生成

热门文章

  1. Uncaught TypeError: Cannot read property 'alpha' of undefined 报错解决
  2. 域渗透-横向移动(PTH)
  3. 为什么大多数人永远不会真正成功?
  4. 云更新服务器更新不了最新游戏,云更新服务器环境要求 | 专业网吧维护
  5. 脱壳进阶篇——IAT修复与解密
  6. 成의 時運의 圖像 正易八卦圖
  7. windows下大文件复制工具介绍
  8. 【C++】关于set的一些奇怪问题:错误C2676 二进制“<”:“const _Ty”不定义该运算符或到预定义运算符可接收的类型的转换
  9. PC浏览器如何设置代理
  10. 王者荣耀游戏时间计算机制,王者荣耀荣耀战力怎么算,荣耀战力计算机制详解...