App逆向 | 某漫画app签名加密逻辑分析
第一篇有关app逆向的文章,可能篇幅较长,请耐心阅读。
首先来介绍一下需要用到的部分工具和安装方式,然后借助某漫画app,来详细讲解一下工具的使用,以及如何查找加密的流程。
文章中用到的安装包,下载速度超慢,不想下载或者下载不了的,可以直接联系我。
声明本文章只做技术交流,如有侵权请联系删除。
一、目标网站:
aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzY1MTM5ODA=
打开网站下载对应版本的apk,本文使用的是最新3.0.1版本。
二、环境安装:
jdk下载地址:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
官网下载需要注册oracle账号,找到对应版本下载安装即可。
另外需要安装配置虚拟机或者配置真机用来抓包。
三、工具介绍:
1.dex2jar
功能:反编译apk得到Java源代码
下载地址:
https://sourceforge.net/projects/dex2jar/files/
下载最新版本解压即可,后面会介绍如何使用。
2.jd-gui
功能:打开classes-dex2jar.jar查看源码
下载地址:
http://java-decompiler.github.io/
下载对应的系统版本解压。
四、抓包分析
打开app,随意点击一部漫画作品,进入到目录页面,点击任一章节进入漫画展示页面。
Charles中通过查看响应,确定接口,查看参数信息。
继续下滑,翻到下一章节,查看接口参数信息。
对比两个章节的请求接口,找到变动的参数分别是client_sign、client_time,其中client_time为13位的时间戳,而client_sign即为需要找的加密签名。
五、反编译apk
1、反编译apk
修改apk文件后缀为.rar,解压,打开找到classes.dex文件
拷贝classes.dex到下载好的dex2jar-2.0目录下
打开终端,进入到dex2jar-2.0目录下执行反编译命令
./d2j-dex2jar.sh ./classes.dex
我这里已经执行过,生成了.jar包
注意win下执行的命令跟mac下不同
./d2j-dex2jar.bat ./classes.dex
执行过程中,如果出现没有权限的问题,解决方法如下
sudo chmod +x ./d2j-dex2jar.sh # 增加可执行权限
2、打开jar包
打开安装好的jd工具
将反编译后的jar包,拖拽到jd工具里即可。
六、加密定位
定位方法:直接搜索加密字段client_sign
继续在jd工具上,点击搜索,设置字符串查找,双击b.class文件。
跳转到如下图所示位置
向上查看完整代码部分,点击str2高亮显示。
注意看下图中几行a1.L()部分,是不是跟抓包的接口参数名称十分相似,找其中的几个固定参数对比下,可以得到如下结论,client_sign的加密值就是str2的值。
继续查看第二个红框,str2的值是str3的结果,而str3是由l.aT()调用字符串组合的参数生成的。
接着继续分析l.aT()的参数
分别点击str4,str5,str6,str1,str7使其高亮显示,可以很直观的看到具体代表的参数名称。
最后分析aT(),点击aT进入到函数内部,可以看到整个java代码就是对参数进行md5的简单加密。
七、代码实现
1、验证client_sign
查看请求参数
提取请求参数值,构造加密参数,用python实现md5加密
对比两处生成的结果,client_sign结果一致,加密逻辑正确。
2、验证接口请求
修改时间,测试请求,代码如下
import requests
import time
import hashlibts = int(time.time()*1000)def get_sign():str4 = '3.0.1'str5 = str(ts)str6 = '569A83D51DBC08D59CCC9E67EAE13CB4'str1 = '0'str7 = ''sign_param = str4 + "android" + str5 + "e571dd8bd67803995b9bdcfefb58662b" + str6 + str1 + str7 + "{54563A97-2BBA-7F31-D4C1-8EF72F4A98E6}"hm = hashlib.md5()hm.update(sign_param.encode('utf-8'))return hm.hexdigest()def get_image_link():search_api = 'http://api.manhua.weibo.com/client/comic/play?chapter_id=204732'sign = get_sign()print(sign)data = {"app_devicetoken": "e571dd8bd67803995b9bdcfefb58662b","client_sign": sign,"client_time": str(ts),"client_type": "android","client_ver": "3.0.1","phone_mark": "569A83D51DBC08D59CCC9E67EAE13CB4","sina_token": "","sina_uid": '0',}headers = {'VREADREFER': 'vmh_client','Host': 'api.manhua.weibo.com','Content-Type': 'application/x-www-form-urlencoded; charset=utf-8','User-Agent': 'okhttp/3.8.0',}response = requests.post(search_api, headers=headers, data=data).json()items = response['data']['json_content']['page']for item in items:image_link = item['mobileImgUrl']print(image_link)if __name__ == '__main__':get_image_link()
返回结果如下
搞定,如果要执行后续翻页操作,在目录页面拿到每页的ID即可。
对你有帮助,请扫码关注!感谢!
公众号:逆向旅行
微信号:fzcoder888888
定期分享Python进阶技术,爬虫
App逆向 | 某漫画app签名加密逻辑分析相关推荐
- js逆向 | 七麦数据analysis加密逻辑分析(最新)
一.前言 没办法把公众号的文章直接搬运过来,简单分析下整个流程以及关键js代码和python的实现. 简单说下加密的实现逻辑 第一,使用拦截器,拦截请求url和请求携带的参数 第二,对参数进行排序并使 ...
- python某漫画app逆向
某漫画app逆向 一工具的准备 二项目思路 三简易代码提供参考 一工具的准备 1.fiddler抓包工具 ,夜神模拟器 2.python环境,Java环境 3.漫画app准备 4.java反编译工具 ...
- Python项目实战抓取-某漫画app逆向
目录 一工具的准备 二项目思路 三简易代码提供参考 一工具的准备 1.fiddler抓包工具 ,夜神模拟器 2.python环境,Java环境 3.漫画app准备 4.java反编译工具 二项目思路 ...
- python123 app下载_Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- 知物由学 | 干货!一文了解安卓APP逆向分析与保护机制
"知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...
- Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- APP爬虫|frida-某资讯app逆向过程,带你一起使用 frida 进行完整逆向
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python编程与实战 ( 想要学习Python?Py ...
- 逆向某停车app(原创)
最近一直在做python开发的事情,信息安全方面做得很少,也是"蛋蛋"的忧伤呀.今天有朋友请我帮忙,将一个app里的文字和图标替换一下,花了一下午和一晚上的时间搞了一下,主要是图标 ...
- 《APP逆向学习》课程介绍和什么是安卓app逆向?
来源[小肩膀 零基础一站式安卓app逆向安全(2021版)]:aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMUFWNDExSjd6aw== 1.课程介绍 安 ...
最新文章
- 强化学习圣经:《强化学习导论》第二版(附PDF下载)
- 【深度学习】ICCV2021|性能优于何恺明团队MoCo v2,DetCo:为目标检测定制任务的对比学习...
- Angular CLI创建的项目文件用途一栏
- 这个免费的交互式课程在一小时内学习JavaScript
- 远程多台前置机连接服务器上配置作业,得到作业运行历史记录
- element ui 点击修改开启停用按钮状态
- 女粉想要找男朋友,竟是为了...
- 分析uint8_t\uint_16_t\uint32_t\uint64_t
- 2005-2020POI数据 高德POI数据 高德信息点数据 百度POI数据分析下载
- 只需4步,微软数据科学家教你用OpenRefine搞定数据清洗
- windows设置hosts
- 【最短路】【spfa】CDOJ1633 去年春恨却来时,落花人独立,微雨燕双飞
- 怎么将视频转化为gif动画?视频如何生成gif格式图片?
- EXCEL高级玩法之非常酷炫的动态数据分析报表
- Linux 图片转换命令 convert
- vue3+ts实现todolist功能
- 【2021年度总结】回忆过去,大专生的三年
- Vue源码--解读vue响应式原理
- 国内一些期刊的搞笑审稿
- 我的前端之路 (css篇)