某app客户端数字签名分析
最近测试app时发现某app对数据包做了签名,其直接后果就导致截获的数据包没法修改,因此对该app的数字签名了进行了一次分析。
首先通过class-dump将app的头文件都导出来,通常数字签名都会在数据包发包之前生成,因此我们需要找好http发包有关的类,此处我们搜索httprequest,此处httprequestwithurl引起了我们的兴趣(关键名字实在是太明显了)。
查看ida可以发现该函数中在httprequeast有这样的语句,那此处是不是生成的sign了?
在gdb中在该出下断点,登陆发包断下,该处函数为stringwithFormat。
以此查看r2到r4的参数。发现r4寄存器中保存了该次签名。
向上回溯发现r4来自一个函数的返回值,此处ida没有解析出来。
使用gdb下断点,发现该处的函数调用为URLEnconde,一次实现对数据的编码。
查看寄存器R2,即该函数的第一个参数可以发现此处传入的就是签名(此时是没有经过编码的签名)。通过上图可知,该处传入的第一个参数也来至之前函数(0x00132780)的返回值,因此推断0x00132780的调用很可能生成了函数的签名。
此处对该函数下断点,运行断下之后可以发现该函数为base64StringWithHMACSHA1Digest,而函数的第一个参数即为该次通信的url,由此断定该签名是针对数据包整个包的签名。
函数的第三个参数问签名使用到的密钥,此处硬编码在app中。
进入该函数,可以发现此处CCHmacInit函数使用之前的密钥进行一个sha1处理,让后再做一次base64处理。
参照分析的结果,实现自签名的程序,和发包签名完全一致。
某app客户端数字签名分析的更多相关文章
- 作业2——英语学习APP的案例分析
英语学习APP的案例分析 很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课?都不对,软件工程有理论,有实践,更重要的 ...
- ele.me在IOS浏览器端启动APP的技巧分析
ele.me在IOS浏览器端启动APP的技巧分析 巧妙利用后台重定向,在schemes启动时提示用户打开,启动不了APP时能够及时跳转至下载页面. 避免报错页面的出现以及用户还没来的及选择就跳转到下载 ...
- Android : App客户端与后台服务的AIDL通信以及后台服务的JNI接口实现
一.APP客户端进程与后台服务进程的AIDL通信 AIDL(Android Interface definition language-“接口定义语言”) 是 Android 提供的一种进程间通信 ( ...
- Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较
说明 Native.Hybrid.React.Web App方案的分析比较 目录 前言 参考来源 前置技术要求 楔子 几种APP开发模式 概述 Native App Web App Hybrid Ap ...
- 第2次作业——APP的案例分析
APP的案例分析 网易有道词典APP,使用这个软件有三年之久.唯独最爱的一点就是我每天都能听到不一样的英文歌看到创作歌手的来历,当然偶尔也会有其他国家的歌.起初使用这个软件的目的是用来查单词,每天积累 ...
- Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点)
Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点) 一丶Django的静态文件配置 #we ...
- 蓝牙App漏洞系列分析之一CVE-2017-0601
蓝牙App漏洞系列分析之一CVE-2017-0601 0x01 概要 2017年5月的 Android 安全公告修复了我们提交的一个蓝牙提权中危漏洞,这个漏洞尽管简单,但比较有意思,能够使本地恶意 A ...
- 蓝牙App漏洞系列分析之二CVE-2017-0639
蓝牙App漏洞系列分析之二CVE-2017-0639 0x01 漏洞简介 Android本月的安全公告,修复了我们发现的另一个蓝牙App信息泄露漏洞,该漏洞允许攻击者获取 bluetooth用户所拥有 ...
- 蓝牙App漏洞系列分析之三CVE-2017-0645
蓝牙App漏洞系列分析之三CVE-2017-0645 0x01 漏洞简介 Android 6月的安全公告,同时还修复了我们发现的一个蓝牙 App 提权中危漏洞,该漏洞允许手机本地无权限的恶意程序构造一 ...
随机推荐
- ABAP 通过视图取数到内表函数
CALL FUNCTION 'VIEW_GET_DATA' EXPORTING view_name = 'V_TVBUR' TABLES data = ...
- ASM:《X86汇编语言-从实模式到保护模式》第七章应用例:用adc命令计算1到1000的累加
在16位的处理器上,做加法的指令是add,但是他每次只能做8位或者16位的加法,除此之外,还有一个带进位的加法指令adc(Add With Carry),他的指令格式和add一样,目的操作数可以是8位 ...
- LayoutInflater的inflate函数用法详解
LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: LayoutInflater inflater=(Layo ...
- 【leetcode】Copy List with Random Pointer (hard)
A linked list is given such that each node contains an additional random pointer which could point t ...
- IOS 推送消息 php做推送服务端
IOS推送消息是许多IOS应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPh ...
- MyEclipse在线安装maven插件最新地址
http://repository.sonatype.org/content/sites/forge-sites/m2e/0.10.0/S/20100209-0800/
- JavaEE编码题
1.请编写代码实现登录效果(5分) 要求: 1)手写出相应的HTML和CSS代码 2)字体大小12px,表格宽300px,按钮行占两列并水平居中, 3)可以写在style节点内,也可使用行内CSS或者 ...
- [Android Pro] svn实例
referece : http://www.cnblogs.com/cnblogsfans/archive/2010/03/21/1690891.html 签出 svn checkout URL pa ...
- September 22nd 2016 Week 39th Thursday
Things won are done, the soul of joy lies in the doing. 得到即是完结,快乐的精髓在于过程. Things won are done, thing ...
- Mac 下 gradle 路径
/Users/yourname/.gradle/wrapper/dists cmd:cd ~/.gradle/wrapper/dists/