阅读此文档的过程中遇到任何问题,请关注公众号【移动端Android和iOS开发技术分享】或加QQ群【309580013

1.目标

分析某车之家sign签名算法的实现

2.操作环境

  • frida

  • mac系统

  • Charles抓包

  • 越狱iPhone

3.流程

寻找切入点

通过Charles抓包获取到关键词为_sign,这也就是我们的切入点:

静态分析

在静态分析前,我们先观察sign值的特征,比如32位就有可能是md5,数字加字母加+/然后以=号结尾的,就有可能是base64。

通过肉眼观察,发现sign签名的长度是32位大写,第一直觉就是MD5,接下来直接进入动态调试去hook md5函数,看看该加密是否为md5

动态分析

使用frida工具的frida-trace -UF -i CC_MD5命令跟踪CC_MD5函数,代码如下:

{
onEnter(log, args, state) {
log(`CC_MD5(${args[0].readUtf8String()})`);
},
onLeave(log, retval, state) {
log(`CC_MD5()${hexdump(retval, {length:16})}`);
}
}

执行frida-trace -UF -i CC_MD5后,点击登录按钮,日志输出如下:

witchan@witchandeAir ~ % frida-trace -UF -i CC_MD5
Instrumenting...
CC_MD5: Loaded handler at "/Users/witchan/__handlers__/libcommonCrypto.dylib/CC_MD5.js"
Started tracing 1 function. Press Ctrl+C to stop.
/* TID 0x303 */
6214 ms CC_MD5(2222)
6215 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f051548 93 4b 53 58 00 b1 cb a8 f9 6a 5d 72 f7 2f 16 11 .KSX.....j]r./..
6216 ms CC_MD5(@7U$aPOE@$Version1_appidapp.iphone_timestamp1658455619autohomeuaiPhone 12.5.5 autohome 11.25.0 iPhoneisCheckModeratorsRemote1isapp1logincode%31%31%31%31%31%31%31%31%31%31%31reffersessionida2b93cb5da721aa55ca1a87b2e919b3d3cd214e6showmob1userpwd934B535800B1CBA8F96A5D72F72F1611validcode3333@7U$aPOE@$)
6216 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f051478 50 03 73 09 75 58 bb 53 72 80 20 54 b1 39 2b d4 P.s.uX.Sr. T.9+.
6219 ms CC_MD5(https://118.116.0.118/api/UserApi/StandardLoginAHLoginAccountLoginService)
6219 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f051118 17 9a 87 99 d6 48 43 ab 69 a0 b8 62 1d d0 a8 0d .....HC.i..b....
6221 ms CC_MD5(MGCopyAnswerDeviceName)
6221 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f0504c8 ae 4a a5 c0 f7 11 1f 08 b1 63 88 1a a4 f8 da 9f .J.......c......
6221 ms CC_MD5(MGCopyAnswerProductVersion)
6221 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f0504c8 a8 d3 5d 76 55 0a f8 1f d8 96 8a 0d a3 29 b0 80 ..]vU........)..
6222 ms CC_MD5(MGCopyAnswerDeviceName)
6222 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f0504c8 ae 4a a5 c0 f7 11 1f 08 b1 63 88 1a a4 f8 da 9f .J.......c......
6222 ms CC_MD5(MGCopyAnswerProductVersion)
6222 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f0504c8 a8 d3 5d 76 55 0a f8 1f d8 96 8a 0d a3 29 b0 80 ..]vU........)..
6223 ms CC_MD5(@7U$aPOE@$apisign1|a2b93cb5da721aa55ca1a87b2e919b3d3cd214e6|autohomebrush|1658455619@7U$aPOE@$)
6223 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f050498 70 c0 71 0b 37 23 3a 29 d8 44 02 d7 f6 20 a5 0c p.q.7#:).D... ..
6227 ms CC_MD5(MGCopyAnswerProductVersion)
6227 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f0527b8 a8 d3 5d 76 55 0a f8 1f d8 96 8a 0d a3 29 b0 80 ..]vU........)..
6228 ms CC_MD5(MGCopyAnswerProductVersion)
6228 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f052748 a8 d3 5d 76 55 0a f8 1f d8 96 8a 0d a3 29 b0 80 ..]vU........)..
/* TID 0x552bf */

搜索 _sign值500373097558BB5372802054B1392BD4后发现结果:

  6216 ms  CC_MD5(@7U$aPOE@$Version1_appidapp.iphone_timestamp1658455619autohomeuaiPhone	12.5.5	autohome	11.25.0	iPhoneisCheckModeratorsRemote1isapp1logincode%31%31%31%31%31%31%31%31%31%31%31reffersessionida2b93cb5da721aa55ca1a87b2e919b3d3cd214e6showmob1userpwd934B535800B1CBA8F96A5D72F72F1611validcode3333@7U$aPOE@$)
6216 ms CC_MD5() 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
16f051478 50 03 73 09 75 58 bb 53 72 80 20 54 b1 39 2b d4 P.s.uX.Sr. T.9+.

结果

sign就是一个简单的32位的大写MD5

入参:@7U$aPOE@$Version1_appidapp.iphone_timestamp1658455619autohomeuaiPhone 12.5.5 autohome 11.25.0 iPhoneisCheckModeratorsRemote1isapp1logincode%31%31%31%31%31%31%31%31%31%31%31reffersessionida2b93cb5da721aa55ca1a87b2e919b3d3cd214e6showmob1userpwd934B535800B1CBA8F96A5D72F72F1611validcode3333@7U$aPOE@$

逐个分析:

@7U$aPOE@$前缀

Version1版本

_appidapp.iphone 应用标识

_timestamp1658455619时间戳

autohomeuaiPhone 12.5.5 autohome 11.25.0 iPhone手机UA

isCheckModeratorsRemote1不晓得

isapp1是否为手机

logincode%31%31%31%31%31%31%31%31%31%31%31手机号,原始手机号为11111111111。当入参为00123456789时,该字段为00%3123456789,结论:string里的1替换为%31

reffer来源

sessionida2b93cb5da721aa55ca1a87b2e919b3d3cd214e6队列id

showmob1不晓得

userpwd934B535800B1CBA8F96A5D72F72F1611密码MD5

validcode3333验证码

@7U$aPOE@$ 后缀

End

阅读此文档的过程中遇到任何问题,请关注公众号【移动端Android和iOS开发技术分享】或加QQ群【309580013

【iOS逆向】某车之家sign签名分析的更多相关文章

  1. iOS逆向必备绝技之ipa重签名

    一.重签名准备工作: 找到开发者证书和配置文件: 列出所有开发者证书文件: security find-identity -p codesigning -v 找一个开发环境配置文件生成entitlem ...

  2. iOS逆向(五)-ipa包重签名

    为什么要重签名? 1.在没有源代码的情况下,你已经对某个应用进行了资源修改(比如修改了启动图或图标等).修改完成以后,如果想要让APP可以正常使用,该APP一定要重新签名然后压缩成IPA文件. 2.如 ...

  3. 对飞猪H5端API接口sign签名逆向实验

    免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...

  4. 偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试

    Intro 虽然“只有偏执狂才能够生存”这句话已经被假药停给毁了,但是作为一只有逼格的高大上的iOS逆向分析研究员,难道如果有现成的macOS/iOS全版本镜像可以下载并且无限“漫游”,难道你就不想来 ...

  5. iOS逆向+越狱

    感觉本文涉及内容有点多的,但是自己不愿意写太多,就简单的谢谢关于ios上手的东西吧 初级入手不免要用到,pp助手,i4 tools等 iOS逆向-ipa包重签名及非越狱手机安装多个应用 1.常识 我们 ...

  6. iOS逆向系列-逆向APP思路

    界面分析 通过Cycript.Reveal. 对于Reveal安装配置可参考配置iOS逆向系列-Reveal 通过Reveal找到内存中的UI对象 静态分析 开发者编写的所有代码最终编译链接到Mach ...

  7. iOS逆向分析app

    适合有一定的逆向编程基础的人看. 背景:自动抢红包的脚本工具:cyscript,reveal,class-dump,越狱的pod等. 这里先上一张reveal的分析图: 小结:获取到了真个软件的整体结 ...

  8. iOS 逆向之ARM汇编

    最近对iOS逆向工程很感兴趣. 目前iOS逆向的书籍有: <Hacking and Securing IOS Applications>, <iOS Hacker's Handboo ...

  9. ios逆向过程中lldb调试技巧

    在ios逆向过程中,善于运用lldb,会给逆向带来很大的方便 一般的命令: 1.image list -o -f  看看各个模块在内存中的基址 2.register read r0  读取寄存器r0的 ...

  10. iOS逆向开发(1):基础工具 | ssh | scp | socat

    小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情 ...

随机推荐

  1. Linux_tail总结

    tail 命令用法 功能从尾部显示文件若干行 语法: tail [ +/- num ][参数] 文件名 使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把 ...

  2. HDFS 高可用分布式环境搭建

    HDFS 高可用分布式环境搭建 作者:Grey 原文地址: 博客园:HDFS 高可用分布式环境搭建 CSDN:HDFS 高可用分布式环境搭建 首先,一定要先完成分布式环境搭建 并验证成功 然后在 no ...

  3. 完整的WindowsServer服务器系统初始化配置、安全策略加固和基线检查脚本等保2.0适用

    转载自:https://www.bilibili.com/read/cv14326780?spm_id_from=333.999.0.0 0x00 前言简述 最近单位在做等保测评,由于本人从事安全运维 ...

  4. mysqld_exporter参数信息

    [root@database03 mysqld_exporter]# ./mysqld_exporter --help usage: mysqld_exporter [<flags>] F ...

  5. 使用python连接elasticsearch

    官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/overview.html 安装的时候注意 ...

  6. 我的 Kafka 旅程 - 文件存储机制

    存储机制 Topic在每个Broker下存储所属的Partition,Partition下由 Index.Log 两类文件组成. 写入 Log 由多个Segment文件组成,每个Segment文件容量 ...

  7. PTA 乙级解题笔记 1001 害死人不偿命的(3n+1)猜想

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 ...

  8. 洛谷P7960 [NOIP2021] 报数 (筛法)

    禁止报的数的生成规则与埃式筛法类似,考虑用筛法预处理可以报出的数字列表和不可报出的数字,从而 O(1) 回答每一组询问. 用check函数判断数字中是否含有7,用nx[i]记录数字i的下一个合法数. ...

  9. 源码随想 String -> SoftReference

    源码随想 String -> SoftReference 2021年7月27日 15:38:14 今天实习时看 String的源码,发现其中的一个构造方法 public String(byte ...

  10. MQ系列6:消息的消费

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 在之前 ...