Piracy

Previous topic - Next topic

hardyx

#60
I'm not in iOS development, but I think you can check the binary or some data file with MD5 algorithm for detect if was modified. Then *the most important* don't say "you are a bad guy" (you give clues here), continue and disable little things in the app or game, or generate a div by 0 later in the code, or fail with a message ("cracked version, sorry") when you are in the last level or you want to save the records. This way you can't avoid a cracked version, but the differences are not obvious to the cracker. The crackers sometimes not complete the full game. But the cracker "clients", got frustrated when they discover that this cracked thing not works. If someone likes the game/app very much, he will go to buy legally.


Kitty Hello

First - I don't look for cracked versions. That keeps me from worrying.

You can't stop crackers. You can stop noobs from copying, but not crackers.
If the info.plist is really intact, you "might" want to calculate a CRC32 or whatever code of your binary and store that in a file (level0.dat) and compare that on runtime. I have no idea if you officially can read the binary, though.

Leginus

A sure fire way to beat the hackers................make it free  :enc:

BdR

Quote from: hardyx on 2011-Jan-05
I'm not in iOS development, but I think you can check the binary or some data file with MD5 algorithm for detect if was modified. Then *the most important* don't say "you are a bad guy" (you give clues here), continue and disable little things in the app or game, or generate a div by 0 later in the code, or fail with a message ("cracked version, sorry") when you are in the last level or you want to save the records. This way you can't avoid a cracked version, but the differences are not obvious to the cracker. The crackers sometimes not complete the full game. But the cracker "clients", got frustrated when they discover that this cracked thing not works. If someone likes the game/app very much, he will go to buy legally.
I was thinking about it this way too, you could start the nag screen only after the app was started and closed 10 times (with a counter in a settings file or something). That way the hacker will probably not see the nag screen when testing the cracked app and upload it.

Quote from: Kitty Hello on 2011-Jan-05
First - I don't look for cracked versions. That keeps me from worrying.
I guess that is probably the best way to deal with it (although fyi I was looking if there maybe was a game review out...)

BdR

oh and offtopic (kind of)

A tip, when you display copyrights and credits, always obscure the text strings in code (write a simpel custom function). Even a simple Caesar cipher/ROT13 (where "ABC" becomes "BCD" etc.) is enough to at the very least prevent the script kiddies from changing the credits screen from "programmed by John Smith" to something like "cracked by rickroll96".

MrTAToad

Build in checks for the currently known differences between jailbroken and non-jailbroken phones. Some of the currently known checks include looking for modification to the app's Info.plist, writing a checksum into the app and validating it a runtime, and checking to see if the Applications directory is writable.

ampos

The function isphonecracked() did not work, or I have been unable to replicate a pirated situation on my iphones. My app "snowland" (or was Magic Coin Box?) has it implemented, but as pirates do not like any of them  :'( the "real" situation has not been able to be checked.

AFAIK, you can not access anything outside the /my documents and /media dirs on iphone. Not sure, but on a JB iphone you can save in /media dir, but it doesnt mean that the app is cracked, just that the iphone was Jailbroken.
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

BdR

Okay, I use the iPhoneIsCracked and on my ipod it gives false as expected, the function doesn't crash or anything. As an extra check I can test if the appfolder is writable using this function, see code example below. Not sure if this is the best way to test it...
Code (glbasic) Select

// -------------------------------------
// default function to check app integrity
// -------------------------------------
IMPORT "C" int iPhoneIsCracked() // test nr 1

// -------------------------------------
// check if app folder is writable
// this would indicate a jailbroken iphone/ipod
// -------------------------------------
FUNCTION CheckAllowWriteAppFolder: // test nr 2

  LOCAL bResult%
  LOCAL bTmp%
  LOCAL Filename$

  Filename$ = "Media//appwritecheck.ini"
 
  // try to write new file in Media/ in appfolder
  bTmp = OPENFILE(1, Filename$, 0) // 0=write
  IF (bTmp = TRUE)
//    WRITESTR 1, "filecheck=1" // not needed
    bResult = TRUE
  ELSE
    bResult = FALSE
  ENDIF
  CLOSEFILE 1
 
  // remove file
  bTmp = DOESFILEEXIST(Filename$)
  IF (bTmp = TRUE)
    KILLFILE Filename$
  ENDIF

  // function result
  RETURN bResult

ENDFUNCTION

Kitty Hello

If the app folder is writable, it might be due to jailbreak, not crack. Right?

ampos

Yes, it is not a valid method. If the iPhone is Jailbroked (recently sentenced as legal in the US) the apps can write to the app folder. But it does not mean that the app itself has been pirated.
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

Leginus

Unfortunately no matter what you do, the crackers will get around it. That's the point of cracking  :(

Moru

The more intricate you do it, the more fun it is to crack it. It's like a really hard game, you win when you have cracked it. Instead of facebook/openfaint or whatever, you release it for free for credits/achivements. Whatever you do you will loose in the end. Use the piracy to promote your game instead. Find new ways of making money.

ampos

Quote from: Leginus on 2011-Jan-24
Unfortunately no matter what you do, the crackers will get around it. That's the point of cracking  :(

To pirate a iphone game is pretty easy, just a "program" on the iphone itself. Thats why there is so many pirated games out there. It is just copy&paste.

To crack them is another story. Nobody will try to crack your game unless it is the ultimate game! And if so, piraty will not be a problem.

Yes, a way to check if the app is pirated would be a nice feature.

Maybe you can check the changed files to a known valor. If the answer is 0 (you can not access it, so it is not JB) or the known value is correct (it is JB but not pirated)...
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

ampos

I have seen 2 types of pirated detections:

1.- A countdown of 20 secs at the start

2.- A note about the app being pirated, and a requester to the appstore.
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

Leginus

And how have you seen those eh  :whistle: