-
Notifications
You must be signed in to change notification settings - Fork 297
Built-in bntl definitions for Objective-C types override analysis #8567
Copy link
Copy link
Labels
Component: Objective-C WorkflowIssues related to Objective-C supportIssues related to Objective-C supportComponent: Type LibrariesFile Format: SharedCacheIssue with the dyld_shared_cache pluginIssue with the dyld_shared_cache pluginImpact: MediumIssue is impactful with a bad, or no, workaroundIssue is impactful with a bad, or no, workaroundLanguage: Objective-CIssues involving decompilation of Objective-C binariesIssues involving decompilation of Objective-C binaries
Description
Activity
Metadata
Metadata
Assignees
Labels
Component: Objective-C WorkflowIssues related to Objective-C supportIssues related to Objective-C supportComponent: Type LibrariesFile Format: SharedCacheIssue with the dyld_shared_cache pluginIssue with the dyld_shared_cache pluginImpact: MediumIssue is impactful with a bad, or no, workaroundIssue is impactful with a bad, or no, workaroundLanguage: Objective-CIssues involving decompilation of Objective-C binariesIssues involving decompilation of Objective-C binaries
Version and Platform (required):
Bug Description:
When analyzing system frameworks, Binary Ninja correctly parses Objective-C runtime metadata to generate detailed type layout for objects (e.g. it can identify ivars). However this usually does not get applied, because before analysis runs, some type library definitions are loaded first. These type libraries provide degenerate definitions of these classes (e.g. NSWindow is defined as just
objc_object *) and this shifts the nicely-annotated versions into names likeNSWindow_1and this makes a bunch of the decompilation not be able to use it.Steps To Reproduce:
Please provide all steps required to reproduce the behavior:
Expected Behavior:
I expect to see clear ivar accesses, because Binary Ninja is able to recover all of these. I also expect that these are defined on a type named
NSWindow, notNSWindow_1.Screenshots/Video Recording:

Binary:
Ask me if you really need the shared cache I guess