Gecrackte .ipa erkennen

  • Gecrackte .ipa erkennen

    Hallo Leute,

    nachdem ich bald wieder mal eine App veröffentlichen will und diesmal auch ein eigener Server im Hintergrund läuft habe ich absolut keinen Bock dadrauf, massenhaft Betriebskosten durch nicht zahlende Benutzer zu bekommen. Hier gab es ja schon mal Threads, die sich mit dem erkennen von Jailbreaks beschäftigt haben, ich will aber nicht einen Jailbreak erkennen sondern nur eine gecrackte .ipa, da man mit Jailbreak ja auch einkaufen kann. Ich will dem User der gecrackten App dann erst mal nur mitteilen, dass das ja nicht nett sein und das ein bisschen verfolgen, sperren kann man dann ja immer noch. Ich habe also ein bisschen gegoogelt und bis jetzt zwei Hauptmöglichkeiten gefunden:
    1.) Gucken ob in der info.plist ein Key "SignerIdentity" vorhanden ist, da die den beim cracken ja einführen. Da die den aber auch anscheinend anders schreiben können wollte ich davon eher nicht Gebrauch machen
    2.) Die Filesize der info.plist beim hochladen hardcoden und dann gucken ob größer, weil dann ja was veärndert würde.

    Habt ihr schon so was in einer eurer Apps implementiert und wenn ja, was für Erfahrungen habt ihr? Oder noch eine bessere Methode?
    Viele Grüße und danke schon mal,
    Tim
  • Haben ja nicht alle Installous und außerdem will ich ja wie erwähnt nicht kategorisch alle jailbreaker aussperren oder was auch immer mit den machen, weil man ja per Jailbreak trotzdem noch ordnungsgemäß Sachen kaufen kann. Und die Leute wären dann ja zurecht sauer, wenn ich sie Ärger OBWOHL sie mich für meine Arbeit bezahlt haben. Muss also gucken ob die ipa geändert wurde..:/
  • ja, das kann ich verstehen. Aber Installous befasst sich doch genau mit dem Installieren der Cracker Apps. Meiner Meinung nach kann man das anders nicht bewerkstelligen, denn auch wenn man die App vom PC aufs iPhone schiebt, braucht man Installous welches es installiert.

    Aber ich glaube es ist kaum Möglich, das zu überprüfen, weil du doch keine Rechte auf dein Bundle hast oder?

    Jailbreak != Cracked Apps

    Jailbreak ist eigentlich für die Modifizierung auf dem iDevice da, zb. Design ändern und Programme installieren, die Apple nicht will. bevor Apple es hatte, hatten es Jailbreaker: Multitasking, Ordner, Den Screen in iOS 5 der anzeigt, welcher Anruf verpasst wurde...
    Gruß

    Robin
  • Doch, man kann das überprüfen. Meine Frage ist, ob das was bringt oder die das aushebeln können wie die Sache mit dem Key in der Plist. Hier mal der Code mit dem man das bewerkstelligen könnte:

    Quellcode

    1. NSBundle *bundle = [NSBundle mainBundle];
    2. NSString* bundlePath = [bundle bundlePath];
    3. NSFileManager *fileManager = [NSFileManager defaultManager];
    4. NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath ];
    5. NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:pathP error:NULL];
    6. if (fileAttributes != nil) {
    7. NSNumber *fileSize;
    8. if (fileSize = [fileAttributes objectForKey:NSFileSize]) {
    9. NSLog(@"File size: %qi\n", [fileSize unsignedLongLongValue]);
    10. }
    11. }
    Alles anzeigen
  • das mit dem hash ist 'ne gute idee. allerdings verpufft die wirkung, wenn du diesen dann hart in deinen code reinschreibst. dann muss der angreifer jediglich den hash-algorithmus erkennen und deinen wert manipulieren. das legt also die latte (wie eigentlich alle masznahmen) nur ein wenig hoeher.
    weiter fortzufuehren waere die idee mit bspw. dem dynamischen zusammensetzen des wertes aus einzelkomponenten, die quer im code verstreut sind.
  • nun ist die frage ... verändert apple die info.plist? / verändert die sich für jeden Kunden dann gleich ... wäre interessant das mal zu testen..

    dann würde ich ne art home-calling machen die app trägt ihren plist hash in eine Datenbank ein und du kannst per fernverwaltung den devices /server - Datentransfer deaktivieren.
    auf sowas musst natürlich hinweisen das die app home-calling macht :)
    俺の世界にようこそ
  • hm ich hätte eine idee...:D

    da ich früher selber ab und zu mal gecrackte apps installiert habe, weiß ich, dass man den in app purchase nicht cracken kann. (kann sein dass sich das geändert hat)

    also du bietest die app kostenlos an und weist daraufhin, dass die app sozusagen durch iap "freizuschalten" ist.

    denn was soll man mit einer gecrackten app die nicht funtz? ;) ich hoffe ihr versteht wie ich es meine.

    Ap3x
    Mein iPhone Blog
    :thumbsup:
  • scriptedSheep schrieb:

    Auch ne Idee :) Könntest du mir mal zeigen wie man das machen würde? Habe echt keine Ahnung von sowas :D

    C-Quellcode

    1. //
    2. // NSData+AMDigest.m
    3. // LoginTest
    4. //
    5. // Created by Christian Weykopf on 20.05.09.
    6. // Copyright 2009 Meilenstein Software GmbH. All rights reserved.
    7. //
    8. #import "NSData+AMDigest.h"
    9. #include <openssl/evp.h>
    10. #include <openssl/err.h>
    11. @implementation NSData (AMDigest)
    12. - (NSData *) md5Digest
    13. {
    14. // compute an MD5 digest.
    15. EVP_MD_CTX mdctx;
    16. unsigned char md_value[EVP_MAX_MD_SIZE];
    17. unsigned int md_len;
    18. EVP_DigestInit (&mdctx, EVP_md5());
    19. EVP_DigestUpdate (&mdctx, [self bytes], [self length]);
    20. EVP_DigestFinal (&mdctx, md_value, &md_len);
    21. return [NSData dataWithBytes: md_value length: md_len];
    22. }
    23. - (NSData *)sha1Digest
    24. {
    25. // compute an SHA1 digest.
    26. EVP_MD_CTX mdctx;
    27. unsigned char md_value[EVP_MAX_MD_SIZE];
    28. unsigned int md_len;
    29. EVP_DigestInit (&mdctx, EVP_sha1());
    30. EVP_DigestUpdate (&mdctx, [self bytes], [self length]);
    31. EVP_DigestFinal (&mdctx, md_value, &md_len);
    32. return [NSData dataWithBytes: md_value length: md_len];
    33. }
    34. @end
    Alles anzeigen


    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • jeder ist vllt ein wenig übertrieben. von 100.000 Leuten können das max 1-2. Dann müssen diese beiden auch erstmal den Anreiz haben, weil es ein Haufen Arbeit ist.
    Ich selber hab mir es mir beigebracht um Bot's zu programmieren für meine MMO Phase. Dann war es nurnoch ein kleiner Sprung zum Binary Patchen.

    was ich gelernt habe ist, man kann es nicht verhindern, aber man muss es den Leuten auch nicht zu einfach machen ;)
    俺の世界にようこそ

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MacounFFM () aus folgendem Grund: Löschung auf Wunsch des Nutzers

  • Ap3x schrieb:

    hm ich hätte eine idee...:D

    da ich früher selber ab und zu mal gecrackte apps installiert habe, weiß ich, dass man den in app purchase nicht cracken kann. (kann sein dass sich das geändert hat)

    also du bietest die app kostenlos an und weist daraufhin, dass die app sozusagen durch iap "freizuschalten" ist.

    denn was soll man mit einer gecrackten app die nicht funtz? ;) ich hoffe ihr versteht wie ich es meine.

    Ap3x


    Ich glaube da macht Apple aber nicht mit und werden die App nicht zulassen.