Advertisement
Guest User

AppCake Malware

a guest
Jul 17th, 2019
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. +(void)load {
  2.     var_C = lr;
  3.     *((sp - 0x14) + 0xfffffffffffffffc) = r8;
  4.     sp = (sp - 0x14) + 0xfffffffffffffffc - 0xc;
  5.     if (_objc_autoreleasePoolPush == 0x0) {
  6.             _dyld_register_func_for_add_image(0xc82d);
  7.     }
  8.     r5 = objc_getClass("NSArray");
  9.     if (class_respondsToSelector(r5, @selector(objectAtIndexedSubscript:)) == 0x0) {
  10.             protocol_getMethodDescription(sp + 0x4, @protocol(__ARCLiteIndexedSubscripting__), @selector(objectAtIndexedSubscript:), 0x1);
  11.             asm { ldrd       r1, r3, [sp, #0x18 + var_14] };
  12.             class_addMethod(r5, r1, 0xca9f, r3);
  13.     }
  14.     r6 = objc_getClass("NSMutableArray");
  15.     if (class_respondsToSelector(r6, @selector(setObject:atIndexedSubscript:)) == 0x0) {
  16.             protocol_getMethodDescription(sp + 0x4, @protocol(__ARCLiteIndexedSubscripting__), @selector(setObject:atIndexedSubscript:), 0x1);
  17.             asm { ldrd       r1, r3, [sp, #0x18 + var_14] };
  18.             class_addMethod(r6, r1, 0xcab5, r3);
  19.     }
  20.     r6 = objc_getClass("NSDictionary");
  21.     if (class_respondsToSelector(r6, @selector(objectForKeyedSubscript:)) == 0x0) {
  22.             protocol_getMethodDescription(sp + 0x4, @protocol(__ARCLiteKeyedSubscripting__), @selector(objectForKeyedSubscript:), 0x1);
  23.             asm { ldrd       r1, r3, [sp, #0x18 + var_14] };
  24.             class_addMethod(r6, r1, 0xcb03, r3);
  25.     }
  26.     r0 = objc_getClass("NSOrderedSet");
  27.     r6 = r0;
  28.     if (class_respondsToSelector(r0, @selector(objectAtIndexedSubscript:)) == 0x0) {
  29.             protocol_getMethodDescription(sp + 0x4, @protocol(__ARCLiteIndexedSubscripting__), @selector(objectAtIndexedSubscript:), 0x1);
  30.             asm { ldrd       r1, r3, [sp, #0x18 + var_14] };
  31.             class_addMethod(r6, r1, 0xcb19, r3);
  32.     }
  33.     r0 = objc_getClass("NSMutableOrderedSet");
  34.     r4 = r0;
  35.     if (class_respondsToSelector(r0, @selector(setObject:atIndexedSubscript:)) == 0x0) {
  36.             protocol_getMethodDescription(sp + 0x4, @protocol(__ARCLiteIndexedSubscripting__), @selector(setObject:atIndexedSubscript:), 0x1);
  37.             asm { ldrd       r1, r3, [sp, #0x18 + var_14] };
  38.             class_addMethod(r4, r1, 0xcb2f, r3);
  39.     }
  40.     asm { vcmpe.f64  d17, d16 };
  41.     if (!COND) {
  42.             r4 = objc_getClass("NSMutableDictionary");
  43.             protocol_getMethodDescription(sp + 0x4, @protocol(__ARCLiteKeyedSubscripting__), @selector(setObject:forKeyedSubscript:), 0x1);
  44.             asm { ldrd       r1, r3, [sp, #0x18 + var_14] };
  45.             class_replaceMethod(r4, r1, 0xcb45, r3);
  46.     }
  47.     if (_objc_retain == 0x0) {
  48.             _dyld_register_func_for_add_image(0xcb71);
  49.     }
  50.     if (_objc_readClassPair == 0x0) {
  51.             _dyld_register_func_for_add_image(0xcfef);
  52.             r4 = objc_getClass("NSUndoManagerProxy");
  53.             if (r4 != 0x0) {
  54.                     r0 = class_getInstanceVariable(r4, "_targetClass");
  55.                     *0x11318 = r0;
  56.                     if (r0 != 0x0) {
  57.                             class_addMethod(r4, @selector(isKindOfClass:), 0xd237, "@:#");
  58.                     }
  59.             }
  60.             r4 = objc_getClass("NSManagedObject");
  61.             if (r4 != 0x0) {
  62.                     r5 = object_getClass(r4);
  63.                     replaceMethod(r4, @selector(init), 0xd287, 0x1131c);
  64.                     replaceMethod(r5, @selector(allocWithEntity:), 0xd29f, 0x11320);
  65.                     replaceMethod(r5, @selector(allocBatch:withEntity:count:), 0xd2b7, 0x11324);
  66.             }
  67.             *0x11328 = objc_getClass("NSMutableDictionary");
  68.             *0x1132c = objc_getClass("NSConstantString");
  69.             *0x11330 = objc_getClass("NSString");
  70.             r4 = objc_getClass("NSKnownKeysMappingStrategy1");
  71.             if (r4 != 0x0) {
  72.                     replaceMethod(r4, @selector(fastIndexForKnownKey:), 0xd2eb, 0x11334);
  73.                     replaceMethod(r4, @selector(indexForKey:), 0xd335, 0x11338);
  74.             }
  75.             r4 = objc_getClass("NSKnownKeysDictionary1");
  76.             if (r4 != 0x0) {
  77.                     replaceMethod(r4, @selector(objectForKey:), 0xd37f, 0x1133c);
  78.                     replaceMethod(r4, @selector(removeObjectForKey:), 0xd3c9, 0x11340);
  79.                     replaceMethod(r4, @selector(setObject:forKey:), 0xd40f, 0x11344);
  80.                     replaceMethod(r4, @selector(addEntriesFromDictionary:), 0xd459, 0x11348);
  81.             }
  82.     }
  83.     return;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement