Skip to content
This repository has been archived by the owner on Jul 20, 2024. It is now read-only.
/ iCDump Public archive

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

License

Notifications You must be signed in to change notification settings

romainthomas/iCDump

Repository files navigation




iCDump is now part of LIEF extended



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