• Stars
    star
    117
  • Rank 301,828 (Top 6 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created about 2 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A modern Objective-C class dump based on LIEF and LLVM.


iCDump

iCDump is a modern and cross-platform Objective-C class dump. Compared to existing tools, iCDump can run independently from the Apple ecosystem and it exposes Python bindings.

It relies on LIEF to access the Objective-C metadata and LLVM to output the results.

Swift support is on-going but not public yet.

Python API

iCDump exposes a Python API through nanobind. One can dump Objective-C metadata as follows:

import icdump
metadata = icdump.objc.parse("./RNCryptor.bin")

print(metadata.to_decl())
@interface RNCryptor.RNCryptor.Encryptor{
    NSObject * encryptor;
}
@end
@interface RNCryptor.RNCryptor.Decryptor{
    NSObject * decryptors;
    NSObject * buffer;
    NSObject * decryptor;
    NSObject * password;
}
@end
...

Or inspect Objective-C structures using the different properties:

for cls in metadata.classes:
    print(cls.demangled_name)
    for prop in cls.properties:
        print(prop.name)

Contact

Credits

License

iCDump is released under the Apache License, Version 2.0