SIMBL был построен из mach_star ... она содержит mach_star в его код ...
SIMBL является SIMPLE BundleLoader ... обратите внимание на заглавные буквы .... он был разработан, чтобы вставные модули для хранения в ~/Library/Application Support/SIMBL/Plugins и автоматически вводиться в поисковик.
Существует сценарий запуска в/Library/Scripting Дополнения/SIMBL.osax ... этот скрипт отвечает за установку mach_inject_bundle .framework в/Library/Frameworks (я думаю) и вставляю код в целевые программы, заданные plist.
У mach_star есть несколько примеров выполнения команд mach_inject_bundle_pid и других методов развратной магии.
Для использования SIMBL и создания плагинов у вас есть одна вещь ... вы можете сделать плагин, и вам не нужно беспокоиться о том, чтобы вводить поиск каждый раз, когда искатель просыпается или устанавливает файл mach_inject_bundle.framework.
Вы можете использовать эти плагинами ВАС APP АВТОМАТИЧЕСКИ: вы просто должны быть установлены и введены в коде их каждый раз искатель перезагружается/запускается и/или когда приложение запускается
(единственный путь к устранить ваши инъекции, чтобы использовать AppleScript, как следующее:
tell application "Finder" to quit
delay 2.5
tell application "Finder" activate
или мы должны были бы выполнить код mach_star и реализовать uninject утратившего материал ... :(
чтобы быть профессионалом и сделать приложение что автоматическая установка лет ur, мы должны сделать следующее: есть код, который может использовать SMJobBless, чтобы благословить программу, чтобы выполнить установку файла mach_inject_bundle.framework, если он еще не установлен, а также вводить поиск каждый раз, когда ваше приложение загружается и/или когда искатель перезапустится.
zerodivisi0n: Алексей Жучков проделал замечательную работу, а также Эрвана Барьер, чтобы проиллюстрировать, как вставлять код в приложение, которое делает следующее:
(псевдо-код)
AppDelegate ApplicaitonDidFinishLaunching:
SMJobBlessGetPermission() // держит нас с разрешением впрыснуть нашедший каждый запуск, как только пользователь одобрил один раз
{
// с исполнительными правами
если (основа не установлена)
установить mach_inject_bundle.framework в/Library/Frameworks
впрыскивать искатель с кодом расслоения
}
https://github.com/twotreeszf/FinderMenu
https://github.com/erwanb/MachInjectSample
Цитируется из MachInjectSample:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSError *error;
// Install helper tools
if ([DKInstaller isInstalled] == NO && [DKInstaller install:&error] == NO) {
assert(error != nil);
NSLog(@"Couldn't install MachInjectSample (domain: %@ code: %@)", error.domain, [NSNumber numberWithInteger:error.code]);
NSAlert *alert = [NSAlert alertWithError:error];
[alert runModal];
[NSApp terminate:self];
}
// Inject Finder process
if ([DKInjectorProxy inject:&error] == FALSE) {
assert(error != nil);
NSLog(@"Couldn't inject Finder (domain: %@ code: %@)", error.domain, [NSNumber numberWithInteger:error.code]);
NSAlert *alert = [NSAlert alertWithError:error];
[alert runModal];
[NSApp terminate:self];
}
}