Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Mac Me Up

macrumors regular
Original poster
Jun 25, 2005
170
0
Australia
I was doing some google searching this morning, to find mentions of our app, and I came across a pretty disturbing site:
Edit: removed link to site

It looks like they crack app store apps and release them for free. What THE?! It's only for jailbroken phones, so I assume the userbase would be limited, but it makes me pretty mad! I can't believe someone would pirate an app that costs $1.99?

Does anyone know anymore about this? And does anyone know if it's possible to send them a take-down notice or something?

The other guys who work with me suggested we should be flattered that someone took the time to pirate our stuff, but I'm more annoyed than flattered :mad:
 

admanimal

macrumors 68040
Apr 22, 2005
3,531
2
The majority of hits to my app's web site are referred from app pirate sites. It's a waste of time to try to do anything about it and my sales have been just fine anyway.
 

detz

macrumors 65816
Jun 29, 2007
1,051
0
I've been a software engineer all my adult life I've learned that it's not cost effective to try and fight it. The small percentage of people that download it probably wouldn't have purchased in the first place anyways so you're not loosing anything.
 

gdevitry

macrumors member
Dec 26, 2003
58
3
So when they 'copy' your app, they are copying a complied version right?

In your code, test for a JailBroken app. Since a 'real' app can not do anything outside the App's Documents, test it by trying to copy/create a file at the app root dir. If successful, Die()/Exit()/DevNull. :)

Or something else that tests for jailbroken privileges.

Of course, Apple coding checkers might not like this... and reject your app. Or just remove the code?

Just thinking,
Greg
 

liptonlover

macrumors 6502a
Mar 13, 2008
989
0
I don't see why apple wouldn't like it... in fact they should automatically compile some code that does that into every application, or at least heavily recommend devs to do it. They would like it because it's easy, doesn't harm them, and it'll help stop piraters.
 

firewood

macrumors G3
Jul 29, 2003
8,141
1,384
Silicon Valley
Don't fail/die/exit if your app detects a crack. That just gives them incentive to try and patch your code (change the direction of the jump instruction, etc.). Instead make sure everything works perfectly the first time something funny is detected.

Then there are 3 possibilities:
1) Do nothing. Consider use of your app free advertisement.
2) Start displaying paid ads and monitize your app that way.
3) Later gradually make the game harder and less fun to play, UI response time gets laggy, prefs or user data sometimes "accidentally" doesn't get saved, etc. e.g. encourage them to delete your cracked app.


.
 

liptonlover

macrumors 6502a
Mar 13, 2008
989
0
I wouldn't do this because I'd rather just stop them, but if you don't want to stop them, do something to find out whether or not, and if you have been pirated use a pop up message to inform them that you know, and that you'll still let them use your app. :D
 

firewood

macrumors G3
Jul 29, 2003
8,141
1,384
Silicon Valley
Trying to stop them immediately often does the opposite. If you pop up a dialog, you've given them an real easy breakpoint from which to trace back and find out where to patch out the spot in your code where you detect the problem.

YMMV.
 

Mac Me Up

macrumors regular
Original poster
Jun 25, 2005
170
0
Australia
I've been thinking about this, and I think I'd just leave it be. If someone is that motivated to hack applications, then they will always find another way.

It's interesting to me the parallel to Vista vs OSX. I change my machines regularly, and re-installing Vista is a nightmare, I have to call their damn helpdesk and type in 1000 numbers or whatever they give you. In Microsofts case the impression they give you is that they are fighting piracy at your expense. I bet the pirates don't have to ring helpdesks or type in numbers! With OS X it's shipped by Apple completely unprotected...yes it is locked down by requiring EFI to run with, but I can install it again and again on my macs, without needing to do anything, I don't even have to type in a serial key! What stops me from buying one copy and installing it on 100 machines...nothing really...and yet I still pay for their OS.
 

firewood

macrumors G3
Jul 29, 2003
8,141
1,384
Silicon Valley
If someone is that motivated to hack applications, ...

Real motivation is no longer an issue. There are enough other ARM based platforms out there that there very likely are specialists in the chat rooms and semi-automated tools in the wild for finding and patching jump instructions.

.
 

DreamPod

macrumors 65816
Mar 15, 2008
1,265
188
In your code, test for a JailBroken app. Since a 'real' app can not do anything outside the App's Documents, test it by trying to copy/create a file at the app root dir. If successful, Die()/Exit()/DevNull. :)

I'm pretty sure that would work on any iPhone, jailbroken or no. It's not that the phone or SDK doesn't allow it, it's that *Apple* doesn't allow it.
 

gdevitry

macrumors member
Dec 26, 2003
58
3
I'm pretty sure that would work on any iPhone, jailbroken or no. It's not that the phone or SDK doesn't allow it, it's that *Apple* doesn't allow it.

Really. You must have a different SDK than I do. From all the reading and following code, MY SDK does not allow it. Complies but will crash.
Code:
    BOOL success;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"bookdb.sql"];
    NSString *writableDBPath2 = [documentsDirectory stringByAppendingPathComponent:@"bookdb2.sql"];
	success = [fileManager copyItemAtPath:writableDBPath toPath:writableDBPath2 error:&error];
    if (!success) {
        NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
    }

The following will work (copying to ~/Documents and not to the App root).
Code:
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"bookdb.sql"];
    success = [fileManager fileExistsAtPath:writableDBPath];
    if (success) return;
    // The writable database does not exist, so copy the default to the appropriate location.
    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"bookdb.sql"];

So the bad news is that, if your app will NEVER work on an unbroken device... since it will crash. (Edit: duh, use a @try/@catch for errors)
Code:
2008-11-02 07:11:40.185 SQLiteBooks[3142:20b] *** Assertion failure in -[AppDelegate createEditableCopyOfDatabaseIfNeeded], /Users/greg/Documents/iphoneApps/SQLiteBooks/Classes/AppDelegate.m:112
2008-11-02 07:11:40.188 SQLiteBooks[3142:20b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to create writable database file with message 'Operation could not be completed. No such file or directory'.'
 

ArtOfWarfare

macrumors G3
Nov 26, 2007
9,616
6,145
You could offer the downloads for free but charge for getting it register. (So like, they pay to have a code emailed to them, the code is then added to an online server as being valid, as soon as they use the code, it is removed from the server and will never be valid again and they're never asked for a code again. Yeah, it's a pain in the butt, but what else can you do?)

Also... you can prevent apple from getting their 30% this way (so maybe Apple wouldn't allow it on second thought.)
 

lapse

macrumors newbie
Nov 1, 2008
3
0
Did you guys read the blog that I posted? The author posted a way to detect if your application has been cracked whether you're running on a jailbroken iPhone or not.
 

gdevitry

macrumors member
Dec 26, 2003
58
3
Did you guys read the blog that I posted? The author posted a way to detect if your application has been cracked whether you're running on a jailbroken iPhone or not.

Right! read the whole freaking post! Sorry. That is much easier than what I was thinking.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.