Skip to content

objc2_class_ro_item.base_meths incorect value #58

@lfuret

Description

@lfuret

Problem

  • Platform: iOS
  • Arch: arm64e
  • lang: Objective-C

For some obscure reason the upper word of objc2_class_ro_item.base_meths in ktool/src/ktool/objc.py is shift one nibble to the left. This result in an invalid method's pointer.

Example:

BEFORE FIX: objc2_class_ro_item.base_meths: 0x800dc310000678b0   # 0x10000678b0 INVALID POINTER
 AFTER FIX: objc2_class_ro_item.base_meths: 0x800dc31000678b0    # 0x1000678b0 VALID POINTER

Temporary fix:

I add a line in ktool/src/ktool/objc.py at line 774, to manually fix the upper word.

objc2_class_ro_item.base_meths =  (objc2_class_ro_item.base_meths & 0xffffffff00000000) >> 4| (objc2_class_ro_item.base_meths & 0xffffffff)

TODO:

  • What's the root cause ?
  • Reproduce with other binary

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions