自制最新版得物&某物IOS日志自动记录ipa包.自动追踪所有sign和newsign等签名算法

最近,有个网友说他找了个外包团队做某物的协议,所有其他部分协议都做完了,就差newsign和sign算法(更新频繁),好像没有定位到算法的位置,这还是很罕见的(最后竟然是中介担保交易分文未收,竟然中介担保逆向协议,心真的比较大),估计一定是有一些非常规的逻辑,我决定看下到底有什么蹊跷,几天下来,虽然以前做过很多的日志记录重打包,不过这个还是让我有了一些新的发现。

首先,我做的这些日志记录包用的都是慢速函数追踪方法,并不是我以前说的几乎全量函数和数据追踪(这个主要是当慢速方法完全找不到算法或者算法异常复杂的时候,不过至今我只在imazing上用过),全量追踪需要极快的速度,很多东西都必须舍弃而只追求宏观的覆盖,这种慢速方法更像是我们平时手动调试程序,我们需要靠经验分析查看很多的参数和数据。但是我按照以前的方法却只跟踪到了newsign出现在很晚的地方(几乎马上要网络发送数据了),无法再往前回溯,我就很奇怪,后来才发现因为我主要跟踪的是objectC函数,而此程序好像大量用到了swift语言,我对这个完全不熟悉,后来才发现这个swift函数调用特别奇怪,参数传递和objectC 的msgSend完全不同,x8作为返回内存,x20作为self内存,x1返回值等等,反正是让我觉得对ios了解得太少了。不过总算跟踪解析了部分swift函数,最后算是比较完整记录到了sign和newsign等计算过程和逻辑。

下面是这个方法的一些简介(也适用于其他的日志记录包):

通过修改相应程序的ipa应用包,制作了自定义的插桩工具进行静态二进制重新静态JIT(当然大部分情况下只是记录一些关键函数调用,JIT主要是为了实现透明化无干扰跟踪,平时大家用的一些模拟执行unidbg之类的工具就是完全透明无干扰,当然如果不算执行效率的话,因为这太慢了),使其在运行过程中能够自动记录关键函数调用和参数。IPA 使用 Sideloadly 等方式安装,运行后生成的日志文件可以直接在 macOS 的 Finder 中访问(例如:log_0x0_0x0.txtlog_0x0_0x0_259.txt 等)。

功能特性

  • 单次运行可分线程记录 约 800 万条 函数调用日志

  • 捕获底层函数调用的详细信息

  • 日志为共享文件,可直接导出分析

  • 打印函数入口参数(不需要提前指定参数类型和数量,采用贪心算法深度搜索x0-x6寄存器指针)

日志格式说明

每一条日志记录包括:

  • 时间戳

  • 栈指针(可用于推断调用深度)

  • 函数地址(PC),可与 IDA 中地址对应,这里记录的是LR寄存器的值

  • 线程 ID(可按线程整理调用序列)

  • 函数参数(主要是可见字符串)

  • 对于不可见或加密参数,以 <x> 加 hex 表示

截图中展示了日志格式。我们可以清晰看到第一次newsign出现的位置,再往前搜索原来是通过这个计算出来的,这里是我内部自动一个断点自动搜索的入口参数,可以看到签名算法需要的原料数据,sign再往前回溯,同理。可以看出来sign是直接通过手机环境参数计算出来的,但是newsign的输入却不明显,当然出于研究学习的目的我没有再深究了。不过有一点很奇怪,就是我往前回溯堆栈的时候发现是swift release 函数,难道是官方把算法逻辑隐藏在析构调用中了吗(难怪不容易找到)(我问的chatgpt),我不是很熟悉这个,不敢妄下断言。如果有什么错误,欢迎指正。

240S:[16f0a6080]:[259]debug@{0xa3694} lr[0x10037688] x[111a64d60 111a64d80 0 481]0x16f0a6078[20b37c108] 0x10d0cd60[0x10d0cd60]
240S:[16f0a6080]:[259]@0xa3694 params(@0x20b37bcc0=88bc370b 2000000@0x20b37bcc8=e891370b 2000000@0x200000003=be010000 02c0100@0x20000000b= 02c0100 0ac2b4f)(@!@0x111a64d80=FADkC/rs@!@0x111a64d88=4NB1PpO7)(=0)(=481)(=1)(@0x111a66630= 0000000 0000020@0x111a66638= 0000000 0000020)
240S:[16f0a6080]: [259]:x19[0xa58c4][0x111a64d60 0x111a64d80 (nil) 0x481]
240S:[16f0a5f60]:[259]@0xa3b28:memmove576@0x111a64d80

239S:[16f0a6080]:[259]debug@{0xa3694} lr[0x10037688] x[111a62630 111a62650 0 399]0x16f0a6078[20b37c108] 0x10d0a630[0x10d0a630]
239S:[16f0a6080]:[259]@0xa3694 params(@0x20b37bcc0=88bc370b 2000000@0x20b37bcc8=e891370b 2000000@0x200000003=be010000 02c0100@0x20000000b= 02c0100 0ac2b4f)(@!@0x111a62650=app_buil@!@0x111a62658=d5.81.0.)(=0)(=399)(=1)(@0x111af4ca0= 0000000 0000020@0x111af4ca8= 0000000 0000020)
239S:[16f0a6080]: [259]:x19[0xa58c4][0x111a62630 0x111a62650 (nil) 0x399]
240S:[16f0a5f60]:[259]@0xa3b28:memmove[460](app_build5.81.0.530brandAppleemu0ipvxisNewInstall1isProxy0isRoot0mode0platformiPhoneshumeiid2025121418035897edd9e3dfbcc1fe2a22e9fba62fdb8400b06999e50dbca5timestamp1765706639979tokenJLIjsdLjfsdII%3D%7CMTQxODg3MDczNA%3D%3D%7C07aaal32795abdeff41cc9633329932195uuidUUID0559953bf89244dcb7f15d7c2d47798cv5.81.0webUserAgentMozilla/5.0 (iPhone; CPU iPhone OS 16_7_12 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E1483542e676b4c80983f6131cdfe577ac9b)@0x111a62650
240S:[16f0a5f60]:@0x16f0a5fa0([259][0]unfollow@0xa590c)

下载地址:

https://drive.google.com/file/d/1PsqeykM6zlNaqMoOTe2ZipXtMeQgnYei/view?usp=drive_link

1 个赞

666

好小子,我说为啥12月10日-12月14日一直在告警,原来是你搞得啊 :zany_face:

1 个赞

好小子,我说为啥12月10日-12月14日一直在告警,原来是你搞得啊 :zany_face: