Skip to content
Preprocessor that simplifies Objective-C hooking.
Perl Vim script Other
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
extras/vim [logos] Support automatic generation of %new type encodings Jul 25, 2011
.gitignore [gitignore] Add a gitignore. Jan 29, 2018 [docs] Add license and readme. Jan 28, 2018 [docs] Add license and readme. Jan 28, 2018


Logos is a Perl regex-based preprocessor that simplifies the boilerplate code needed to create hooks for Objective-C methods and C functions with an elegant Objective-C-like syntax. It’s most commonly used along with the Theos build system, which was originally developed to create jailbreak tweaks. Logos was once integrated in the same Git repo as Theos, but now has been decoupled from Theos to its own repo.

Logos aims to provide an interface for Cydia Substrate by default, but can be configured to directly use the Objective-C runtime.

Documentation is available on the Logos page of iPhone Dev Wiki.


Source file: Tweak.x

%hook NSObject

- (NSString *)description {
	return [%orig stringByAppendingString:@" (of doom)"];

%new - (void)helloWorld {


Logos-processed output: Tweak.x.m

(Modified for brevity)

#include <substrate.h>

static NSString *_logos_method$_ungrouped$NSObject$description(NSObject *self, SEL _cmd) {
	return [_logos_orig$_ungrouped$NSObject$description(self, _cmd) stringByAppendingString:@" (of doom)"];

static void _logos_method$_ungrouped$NSObject$helloWorld(NSObject * self, SEL _cmd) {

static __attribute__((constructor)) void _logosLocalInit() {
	Class _logos_class$_ungrouped$NSObject = objc_getClass("NSObject");

	MSHookMessageEx(_logos_class$_ungrouped$NSObject, @selector(description), (IMP)&_logos_method$_ungrouped$NSObject$description, (IMP*)&_logos_orig$_ungrouped$NSObject$description);

	class_addMethod(_logos_class$_ungrouped$NSObject, @selector(helloWorld), (IMP)&_logos_method$_ungrouped$NSObject$helloWorld, "v@:");


Licensed under the GNU General Public License, version 3.0, with an exception that projects created using Logos are not required to use the same license. Refer to

You can’t perform that action at this time.