То, что вы пытаетесь сделать, может быть легко достигнуто с помощью MobileSubstrate, очень мощной структуры, созданной Jay Freeman, которая позволяет вам изменять практически любую функцию любого процесса во время выполнения. Среда построения theos, Dustin Howett, может использоваться вместо Xcode, с препроцессором Logos, создающим все это, казалось бы, сложное вредоносное очень очень простая задача.
Нечто подобное может быть выполнено с очень небольшим количеством кода.
Пример:
%hook UIApplication //Hooks into the UIApplication class.
- (void)sendEvent:(id)arg1{//Hook the sendEvent function, the function which handles all events passed to a UIApplication.
if([arg1 isKindOfClass:%c(UITouchesEvent)]){//Make sure we're not processing other events, such as device rotation.
for(UITouch *touch in [arg1 allTouches])
NSLog(@"Touch recorded: %@", NSStringFromCGPoint([touch locationInView: [[UIApplication sharedApplication] keyWindow]]));
}
%orig;//Call the original function, so the app can still process the events, and we don't eat them all.
}
Как вы можете видеть, это на самом деле довольно просто.
К сожалению, джейлбрейк-устройства - это ваш единственный вариант. Очевидно, что вы не сможете добавить ничего подобного в App Store. Однако Cydia стала очень важной частью iOS, и успех через нее можно достичь так же легко, если не проще, чем что-то в App Store.
Я очень сомневаюсь, что вам разрешат перехватывать штрихи из любого приложения без какого-либо серьезного взлома событий. Как коммерческое приложение, я боюсь, что это невозможно, но на устройстве, которое предоставляет вам разрешения, я думаю, что это вполне возможно. Вы можете настроить процесс демона для контроля цикла событий кварца. – CodaFi
Hi @CodaFi Спасибо за ваш ответ. Можете ли вы уточнить этот термин: «Вы можете настроить процесс демона для контроля цикла событий кварца». ? – NSExpression