-
-
[原创]最右APP协议加密算法分析笔记
-
发表于:
2018-10-17 14:19
53095
-
IDA7.0
lldb
Charles
本次分析的版本是4.2.1(在目前最新版本4.6.4中依然适用)
开始前先进行如下步骤
1.app砸壳后用IDA加载
2.配置抓包工具charles
ok 开始前不会使用Charles的可以搜索关键字"Charles ios https"或直接查看该链接"https://www.cnblogs.com/junhuawang/p/7280957.html" 其中https如何抓包都有详细讲解 此处不在赘述
首先开启抓包工具 打开APP刷新内容抓包结果如下
通过POST请求可以看到url上有个"sign"参数,每次请求该sign都会发生变化,接下来使用IDA进行分析该参数来源。
IDA中字符串搜索"sign=" 根据字符串推测是最后一个 鼠标左键双击进入
看到下图
在图中高亮处按下X键或者右键选中“jump to xref to operand”
弹出如下内容 点击ok
继续在图中高亮处按下X键或者右键选中“jump to xref to operand”
弹出如下内容
根据分析得知"[ZYAPIClient postWithURL:parameters]"中有sign来源 双击进入
按下f5转换为伪代码进行查看
如上图所示 sign的参数是通过调用"ZYAPIClient signWithParameters"返回的
此时先不关注v27参数内容是什么 等下动态调试再来看该参数内容
通过代码知道调用"ZYAPIClient signWithParameters"后返回sign值
继续使用IDA进行分析 在函数窗口中搜索“ZYAPIClient signWithParameters”双击跳转到如下图
得知参数是由“ZYCrypto signWithParameters”返回 那么函数窗口中继续搜索“ZYCrypto signWithParameters”
得知数据是调用了“sub_100FB6090”函数返回的 双击函数进入查看伪代码
查看代码得知还调用了"sub_100DB274C"和"sub_100FB6004"两个函数 接下来查看这两个函数
跳转到“sub_100DB274C”函数后肉眼可以看出是一系列循环位操作计算 流程图如下 逻辑清晰 无混淆 看起来并不复杂 代码量不算多
函数“sub_100FB6004”如下图
函数到此为止 记录下调用流程
下面开始动态调试(对于lldb的配置此处不再赘述)
首先ssh到手机
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-8-27 18:02
被尐进编辑
,原因: 图片比例问题修改