Los iPhones Jailbroken me dan coraje ya que contaminan algunas API fundamentales en iOS, al usar MobileSubstrate.Detectar la suplantación UDID en el iPhone en tiempo de ejecución
http://www.iphonedevwiki.net/index.php/MobileSubstrate
creo que muchas de las aplicaciones utilizan UDID como medio para autenticar un dispositivo y/o un usuario, ya que es semi-automática y práctico, pero usted debe ser consciente de este problema: UIDevice no es tan manipulación indebida prueba como debería ser Hay una aplicación llamada UDID Faker, que te permite simular fácilmente el UDID de otra persona en tiempo de ejecución.
http://www.iphone-network.net/how-to-fake-udid-on-ios-4/
Aquí está el código fuente de la misma:
//
// UDIDFaker.m
// UDIDFaker
//
#include "substrate.h"
#define ALog(...) NSLog(@"*** udidfaker: %@", [NSString stringWithFormat:__VA_ARGS__]);
#define kConfigPath @"/var/mobile/Library/Preferences/com.Reilly.UDIDFaker.plist"
@protocol Hook
- (NSString *)orig_uniqueIdentifier;
@end
NSString *fakeUDID = nil;
static NSString *$UIDevice$uniqueIdentifier(UIDevice<Hook> *self, SEL sel) {
if(fakeUDID != nil) {
ALog(@"fakeUDID %@", fakeUDID);
/* if it's a set value, make sure it's sane, and return it; else return the default one */
return ([fakeUDID length] == 40) ? fakeUDID : [self orig_uniqueIdentifier];
}
/* ... if it doesn't then return the original UDID */
else {
return [self orig_uniqueIdentifier];
}
}
__attribute__((constructor)) static void udidfakerInitialize() {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *appsBundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
ALog(@"Loading UDID Faker into %@", appsBundleIdentifier);
NSDictionary *config = [NSDictionary dictionaryWithContentsOfFile: kConfigPath];
fakeUDID = [config objectForKey: appsBundleIdentifier];
[fakeUDID retain];
if(fakeUDID != nil) {
ALog(@"Hooking UDID Faker into %@", appsBundleIdentifier);
MSHookMessage(objc_getClass("UIDevice"), @selector(uniqueIdentifier), (IMP)&$UIDevice$uniqueIdentifier, "orig_");
}
[pool release];
}
Como se puede ver, el método uniqueIdentifier en la clase UIDevice ahora vuelve fakeUDID en cualquier aplicación.
Parece que Skype y algunas otras aplicaciones detectan este tipo de contaminación, pero no sé cómo hacerlo.
Lo que quería hacer es: Cuando el UIDevice contaminado se detecta al iniciar, alerta y sale (0).
Ideas?
tío ... estás dando estas ideas a otras personas ... quiero decir que podrías haber publicado solo la pregunta sin el código de muestra y las API/Enlaces exactos para la suplantación de identidad. Ahora todos los usuarios de SO saben cómo suplantar un UDID. – lukya
Las personas con tales intenciones o no tienen la capacidad de entender el código anterior, o tienen la capacidad y ya saben sobre ello. –
Vamos, todos los usuarios de SO deben saber cómo usar google. El hecho de que los enlaces no estén aquí, no significa que alguien interesado en él no lo encuentre. – JustSid