mirror of
https://github.com/morluto/rea.git
synced 2026-11-10 16:57:19 +00:00
feat(apple): join IPS images to admitted Mach-O slices (#9570)
* feat(apple): join Apple IPS frames to a selected Mach-O or dSYM slice inspect_apple_ips reported every image UUID as unknown and stated that joined frames were unobserved. Accept an optional join_path, read its LC_UUID and __TEXT vmaddr with the existing bounded stable-artifact reader, and match by canonical UUID plus architecture. A frame joins only when exactly one slice carries the image UUID and an agreeing architecture, so arm64 and arm64e never cross, all-zero UUIDs never join, and a conflicted or unreadable artifact stays typed instead of guessed. Joined frames report the slice __TEXT vmaddr plus the recorded imageOffset as a static address, which is the value atos resolves for the same report. Symbolication is still not performed. * refactor(apple): remove superseded join integer type import * fix(apple): share FAT admission and preserve completed join facts * fix(apple): bind standalone joins to admitted source identity --------- Co-authored-by: 2SinceJuly <202121119+2SinceJuly@users.noreply.github.com> Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
This commit is contained in:
15 files changed
+1376
-45
No files matched your search
@@ -109,6 +109,15 @@ export const registerBinaryDiagnosticsCommands = (
|
||||
maxIntegerTextBytes: cliDecimalField(
|
||||
inspectAppleIpsInputSchema.shape.max_integer_text_bytes,
|
||||
),
|
||||
joinPath: z
|
||||
.string()
|
||||
.optional()
|
||||
.describe(
|
||||
"Optional local Mach-O executable or dSYM whose slice LC_UUID matches report images",
|
||||
),
|
||||
maxJoinBytes: cliDecimalField(
|
||||
inspectAppleIpsInputSchema.shape.max_join_bytes,
|
||||
),
|
||||
}),
|
||||
run: ({ args, options }) =>
|
||||
withCommandCancellation(async (signal) => {
|
||||
@@ -129,6 +138,10 @@ export const registerBinaryDiagnosticsCommands = (
|
||||
max_images: options.maxImages,
|
||||
max_registers: options.maxRegisters,
|
||||
max_integer_text_bytes: options.maxIntegerTextBytes,
|
||||
...(options.joinPath === undefined
|
||||
? {}
|
||||
: { join_path: absoluteCallerPath(options.joinPath) }),
|
||||
max_join_bytes: options.maxJoinBytes,
|
||||
},
|
||||
{ signal },
|
||||
),
|
||||
|
||||
Reference in new issue
Block a user