-
-
[原创]最右APP协议加密算法分析笔记
-
发表于:
2018-10-17 14:19
54356
-
IDA7.0
lldb
Charles
本次分析的版本是4.2.1(在目前最新版本4.6.4中依然适用)
开始前先进行如下步骤
1.app砸壳后用IDA加载
2.配置抓包工具charles
ok 开始前不会使用Charles的可以搜索关键字"Charles ios https"或直接查看该链接"329K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0L8X3u0D9L8$3N6K6i4K6u0W2j5$3!0E0i4K6u0r3K9Y4g2F1K9s2g2S2N6$3q4F1k6#2)9J5c8Y4m8Q4x3V1j5%4x3U0R3H3z5e0f1%4i4K6u0W2K9s2c8E0L8l9`.`." 其中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到手机
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
最后于 2019-8-27 18:02
被尐进编辑
,原因: 图片比例问题修改