Omisakin Joshua
2f89a1b5c0
feat(ghidra): decode Swift String literals in function dossiers
...
Swift passes a String as two words. Small literals keep their UTF-8 bytes
inside those words, and immortal large literals keep a count plus a pointer
to their bytes biased by 32. Ghidra creates no data reference for either, so
analyze_function reported no strings for Swift code.
On AArch64 programs that contain Swift metadata, the Ghidra bridge now runs
constant propagation over the function and decodes register pairs where
Swift consumes a String: consecutive argument registers at calls and tail
calls, x0 and x1 at returns, and both registers of one STP. Large literals
must resolve to terminated bytes inside one initialized block that is not
executable. A pair whose registers both come from conditional selects is
skipped, because Ghidra forks each select without correlating the
condition and could otherwise pair words from different cases.
Decoded values are a derivation from the ABI layout rather than observed
references, so they appear in a new optional swift_string_literals field
with their source instruction, registers and raw words, and in a matching
inspect_analysis_view facet. referenced_strings is unchanged.
Refs #2030
2026-10-12 05:20:08 +01:00
..
2026-10-11 17:24:46 +08:00
2026-10-11 20:09:21 +08:00
2026-10-12 11:34:02 +08:00
2026-10-12 08:59:14 +08:00
2026-10-10 20:27:01 +08:00
2026-09-29 08:45:36 +08:00
2026-10-11 09:35:22 +08:00
2026-10-11 21:33:25 +08:00
2026-10-12 09:25:27 +08:00
2026-10-12 09:25:27 +08:00
2026-07-16 19:51:25 +08:00
2026-07-15 17:43:52 +08:00
2026-10-09 20:11:17 +08:00
2026-10-10 21:39:28 +08:00
2026-10-09 06:49:02 +08:00
2026-10-09 06:49:02 +08:00
2026-10-08 22:43:51 +08:00
2026-10-06 01:59:19 +08:00
2026-10-09 20:11:17 +08:00
2026-10-07 00:57:08 +08:00
2026-10-10 14:20:22 +08:00
2026-10-08 22:43:51 +08:00
2026-10-10 14:20:22 +08:00
2026-10-07 23:16:48 +08:00
2026-10-12 09:25:27 +08:00
2026-10-11 17:24:46 +08:00
2026-07-22 16:06:28 +00:00
2026-07-17 00:16:46 +00:00
2026-10-12 09:25:27 +08:00
2026-10-11 11:49:49 +08:00
2026-10-09 00:49:30 +08:00
2026-10-09 20:11:17 +08:00
2026-10-09 20:11:17 +08:00
2026-10-09 20:11:17 +08:00
2026-10-11 18:18:10 +08:00
2026-10-12 03:17:49 +08:00
2026-10-10 23:01:24 +08:00
2026-10-11 03:13:56 +08:00
2026-10-12 06:29:13 +08:00
2026-10-12 06:29:19 +08:00
2026-10-09 04:12:49 +08:00
2026-10-07 14:59:52 +08:00
2026-10-07 04:35:49 +08:00
2026-10-07 21:45:07 +08:00
2026-10-07 05:24:32 +08:00
2026-10-09 02:01:29 +08:00
2026-10-12 07:40:19 +08:00
2026-10-11 00:09:43 +08:00
2026-09-29 08:45:36 +08:00
2026-10-11 06:52:45 +08:00
2026-10-12 11:06:26 +08:00
2026-10-09 20:18:52 +08:00
2026-10-12 10:50:11 +08:00
2026-10-12 11:34:02 +08:00
2026-10-10 22:59:43 +08:00
2026-10-10 23:03:27 +08:00
2026-07-22 14:01:47 +00:00
2026-08-05 19:07:46 +08:00
2026-10-07 13:02:28 +08:00
2026-10-11 04:37:31 +08:00
2026-10-10 04:39:17 +08:00
2026-10-09 20:18:52 +08:00
2026-10-10 22:11:14 +08:00
2026-10-10 19:51:30 +08:00
2026-09-30 00:41:05 +08:00
2026-10-12 07:40:19 +08:00
2026-10-06 00:00:15 +08:00
2026-10-06 00:00:15 +08:00
2026-07-24 03:31:26 +00:00
2026-10-10 17:03:43 +08:00
2026-07-18 05:49:14 +00:00
2026-10-10 16:03:25 +08:00
2026-10-10 04:09:45 +08:00
2026-10-12 07:40:19 +08:00
2026-10-10 14:20:22 +08:00
2026-09-08 10:59:13 +08:00
2026-09-29 07:08:46 +08:00
2026-07-14 04:55:38 +08:00
2026-10-09 12:57:00 +08:00
2026-07-18 05:49:14 +00:00
2026-10-09 08:51:12 -07:00
2026-10-11 11:11:38 +08:00
2026-10-12 07:40:19 +08:00
2026-10-11 19:49:00 +08:00
2026-10-12 02:46:32 +08:00
2026-10-12 07:40:19 +08:00
2026-10-11 06:05:57 +08:00
2026-10-11 11:05:08 +08:00
2026-10-09 20:18:52 +08:00
2026-10-09 22:46:09 +08:00
2026-10-12 08:59:14 +08:00
2026-10-09 20:18:52 +08:00
2026-10-11 10:45:35 +08:00
2026-09-30 00:41:05 +08:00
2026-10-12 08:42:08 +08:00
2026-10-12 07:50:31 +08:00
2026-10-12 04:54:38 +08:00
2026-10-09 20:18:52 +08:00
2026-10-11 09:59:27 +08:00
2026-10-12 03:49:31 +08:00
2026-10-12 05:20:08 +01:00
2026-10-05 22:54:17 +08:00
2026-10-06 01:59:19 +08:00
2026-10-09 20:18:52 +08:00
2026-10-11 23:38:34 +08:00
2026-10-11 10:45:35 +08:00
2026-10-09 22:46:09 +08:00
2026-10-09 22:46:09 +08:00
2026-07-22 14:01:47 +00:00
2026-10-12 07:40:19 +08:00
2026-10-09 13:54:32 +00:00
2026-10-11 13:29:11 +08:00
2026-10-08 16:50:31 +08:00
2026-10-08 10:13:05 +00:00
2026-10-10 14:20:22 +08:00
2026-10-09 04:12:49 +08:00
2026-10-09 04:12:49 +08:00
2026-10-12 08:41:55 +08:00
2026-10-12 10:44:17 +08:00
2026-10-11 17:24:46 +08:00
2026-10-06 16:53:33 +08:00
2026-10-11 21:33:25 +08:00
2026-10-11 19:20:00 +08:00
2026-10-09 08:51:12 -07:00
2026-10-11 17:24:46 +08:00
2026-10-11 17:24:46 +08:00
2026-07-17 03:05:19 +09:00