{"id":13861400,"url":"https://github.com/theos/logos","last_synced_at":"2025-08-04T15:35:21.619Z","repository":{"id":28890666,"uuid":"119266010","full_name":"theos/logos","owner":"theos","description":"Preprocessor that simplifies Objective-C hooking.","archived":false,"fork":false,"pushed_at":"2024-08-19T19:44:11.000Z","size":525,"stargazers_count":217,"open_issues_count":21,"forks_count":33,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-07-09T13:07:16.749Z","etag":null,"topics":["logos","theos"],"latest_commit_sha":null,"homepage":"https://theos.dev/docs/logos","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-28T14:33:07.000Z","updated_at":"2025-06-15T03:54:02.000Z","dependencies_parsed_at":"2023-12-10T02:20:31.313Z","dependency_job_id":"60d1f6ad-2838-48c0-a3ce-f91b1e3f0197","html_url":"https://github.com/theos/logos","commit_stats":{"total_commits":474,"total_committers":27,"mean_commits":"17.555555555555557","dds":"0.49367088607594933","last_synced_commit":"31d2271046810dacedcbcd92b7780ec5da600e96"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/theos/logos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theos%2Flogos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theos%2Flogos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theos%2Flogos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theos%2Flogos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theos","download_url":"https://codeload.github.com/theos/logos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theos%2Flogos/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268715691,"owners_count":24295360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["logos","theos"],"created_at":"2024-08-05T06:01:21.127Z","updated_at":"2025-08-04T15:35:21.569Z","avatar_url":"https://github.com/theos.png","language":"Perl","funding_links":[],"categories":["Perl"],"sub_categories":[],"readme":"# Logos\nLogos 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](https://theos.dev/docs/) 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.\n\nLogos aims to provide an interface for [Cydia Substrate](http://cydiasubstrate.com/) by default, but can be configured to directly use the Objective-C runtime.\n\nDocumentation is available on the [Logos Syntax](https://theos.dev/docs/logos-syntax), [Logify](https://theos.dev/docs/logify.pl), and [File Extensions](https://theos.dev/docs/logos-file-extensions) pages of [theos.dev](https://theos.dev/docs/).\n\n## Example\n### Source file: Tweak.x\n```logos\n%hook NSObject\n\n- (NSString *)description {\n\treturn [%orig stringByAppendingString:@\" (of doom)\"];\n}\n\n%new\n- (void)helloWorld {\n\tNSLog(@\"Awesome!\");\n}\n\n%end\n```\n\n### Logos-processed output: Tweak.x.m\n*(Modified for brevity)*\n\n```objc\n#include \u003csubstrate.h\u003e\n\nstatic NSString *_logos_method$_ungrouped$NSObject$description(NSObject *self, SEL _cmd) {\n\treturn [_logos_orig$_ungrouped$NSObject$description(self, _cmd) stringByAppendingString:@\" (of doom)\"];\n}\n\nstatic void _logos_method$_ungrouped$NSObject$helloWorld(NSObject * self, SEL _cmd) {\n\tNSLog(@\"Awesome!\");\n}\n\nstatic __attribute__((constructor)) void _logosLocalInit() {\n\tClass _logos_class$_ungrouped$NSObject = objc_getClass(\"NSObject\");\n\n\tMSHookMessageEx(_logos_class$_ungrouped$NSObject, @selector(description), (IMP)\u0026_logos_method$_ungrouped$NSObject$description, (IMP*)\u0026_logos_orig$_ungrouped$NSObject$description);\n\n\tclass_addMethod(_logos_class$_ungrouped$NSObject, @selector(helloWorld), (IMP)\u0026_logos_method$_ungrouped$NSObject$helloWorld, \"v@:\");\n}\n```\n\n## License\nLicensed 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 [LICENSE.md](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheos%2Flogos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheos%2Flogos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheos%2Flogos/lists"}