Version and Platform (required):
- Binary Ninja Version: 5.2.8128-dev Personal, 86ad75d4
- OS: macos
- OS Version: 15.6
- CPU Architecture: arm64
Bug Description:
Loading multiple images from a dyld_shared_cache is progressively slower and eventually stops functioning.
My workflow is to defer initial analysis so I can apply a large number of DSC images first, then later analyze only MLIL. With analysis disabled, I iterate over ~100 images and call apply_image for each. After ~30 images, per-image load time grows from seconds to tens of seconds/minutes and the UI becomes unresponsive/frozen. This reproduces on both the stable and dev builds.
Note: This was discussed with your team on Slack, I was advised to file an issue because this behavior is not intended.
Steps To Reproduce:
-
Open the DSC.
-
Disable analysis (analysis-on-hold). (Screenshot attached.)
-
Apply many images in a loop:
for idx, image in enumerate(images_to_load):
print(f'[+] {idx+1}/{len(images_to_load)} Loading {image}')
if image:
start = time.time()
shared_cache.apply_image(bv, image)
end = time.time()
total_time += (end - start)
print(f'Time:{end-start} (Total Time:{total_time})')
-
Observe that by ~30 images, apply_image takes ~30s–minutes per image and BN becomes frozen.
-
Close the BNDB and retry a single problematic image in a fresh session: the same apply_image takes ~0.5s. (Screenshot attached.)
Expected Behavior:
With analysis disabled, applying many DSC images should remain fast and consistent (similar to the ~0.5s single-image timing), without progressive slowdown or freezing.
Screenshots:
Initial analysis disabled
Applying multiple images
Applying single image
Binary:
Dyld shared cache - 23A5297i__iPhone17,2
Version and Platform (required):
Bug Description:
Loading multiple images from a
dyld_shared_cacheis progressively slower and eventually stops functioning.My workflow is to defer initial analysis so I can apply a large number of DSC images first, then later analyze only MLIL. With analysis disabled, I iterate over ~100 images and call
apply_imagefor each. After ~30 images, per-image load time grows from seconds to tens of seconds/minutes and the UI becomes unresponsive/frozen. This reproduces on both the stable and dev builds.Note: This was discussed with your team on Slack, I was advised to file an issue because this behavior is not intended.
Steps To Reproduce:
Open the DSC.
Disable analysis (analysis-on-hold). (Screenshot attached.)
Apply many images in a loop:
Observe that by ~30 images,
apply_imagetakes ~30s–minutes per image and BN becomes frozen.Close the BNDB and retry a single problematic image in a fresh session: the same
apply_imagetakes ~0.5s. (Screenshot attached.)Expected Behavior:
With analysis disabled, applying many DSC images should remain fast and consistent (similar to the ~0.5s single-image timing), without progressive slowdown or freezing.
Screenshots:
Initial analysis disabled
Applying multiple images
Applying single image
Binary:
Dyld shared cache - 23A5297i__iPhone17,2