GLBasic forum

Main forum => GLBasic - en => Topic started by: fjsantosb on 2010-Jun-06

Title: Piracy
Post by: fjsantosb on 2010-Jun-06
Hi there!

We have detected that Exodus has just been cracked, and in our servers 8 each 10 users are using a cracked version of it (We get results for matching 'new users' and sales).

We are really worried about; although there is a lot of theories about piracy means (some waves thinks that piracy is a type of publicity meanwhile others thinks that piracy is a lose of money).
Although we are in the middle of the 2 waves, we really want to get the control of it, (we would like to know how much people on our server are playing with cracked version, so we can choose between left continues playing or close applications).

Some time ago, i read some kind of method that will be implemmented in order to get the control of that, i wonder if this methods finally have been done.

We wonder too, the general feels of the forums, regading piracy and if you have done something to control it.

King Regards, fjsantos.
Title: Re: Piracy
Post by: MrTAToad on 2010-Jun-06
There was a secret command that Gernot implemented a while ago that may help - cant remember what its called though...
Title: Re: Piracy
Post by: fjsantosb on 2010-Jun-06
That sounds very interesting...

Anyone remember this command?

King Regards, fjsantos.
Title: Re: Piracy
Post by: MrTAToad on 2010-Jun-06
All I can find is that it checks the pinfo.list file - cant find the post detailing it, unfortunately.

I do remember you needed to call C/C++/ObjC code...
Title: Re: Piracy
Post by: trucidare on 2010-Jun-06
find a lib or piece of code and we can implement this.
Title: Re: Piracy
Post by: fjsantosb on 2010-Jun-06
It will be very interesting could to determine who is buying and who is piracy.

I will check out for some piece of code and write back.
Title: Re: Piracy
Post by: Wampus on 2010-Jun-06
fjsantosb how has Exodus been cracked? Was there copy protection that has been removed by a hacker? Or was a full working version shared online?

I don't think piracy can be stopped for one player games. It can only be reduced.

I believe most people pirate software because:-


Some possible ways to help reduce piracy:-


On that last point, Exodus only costs $1.99. Almost everyone I have talked to feels that $1 or $2 is like nothing and are willing to pay it. So...the pirates showing up on your server are Scrooge for not paying! They're probably people who would not pay for anything! In other words I don't think these people are potentially real customers that you are losing. Most likely they download cracked software as habit and will just play whatever they can get their hands on.

Good luck fjsantosb
Title: Re: Piracy
Post by: trucidare on 2010-Jun-06
there is a lib that checks 4 variants of pirated apps. incl. appShare.
but dont remember the name :/

you can check with this lib if its cracked and show a "awwww... you cracked my app" screen if its cracked.
Title: Re: Piracy
Post by: Kitty Hello on 2010-Jun-07
Try this:
Code (glbasic) Select

?IFDEF IPHONE
IMPORT int iPhoneIsCracked()
?ELSE
FUNCTION iPhoneIsCracked:
   RETURN FALSE
ENDFUNCTION
?ENDIF


Be sure to test if it works properly. I check for the SignerIdentity key.
Title: Re: Piracy
Post by: fjsantosb on 2010-Jun-07
Hi,

@Ragaril, Exodus has been cracked from AppStore (I suppose that it was buyed but a pirate and then he cracked), it was online in less than 24 hours after his release.

I am agree with the third cause of pirates (the feel special, they get things without pay money for them).

Regarding with the antipiracy ways I am agree, but they all require time and effort (and as you pointed they will probably will not buy after all), so I feel somewhat do you can't get them as customers, what is a pity, but is the real world!
They really don't play so much, as I say previously only 5 minutes and then logoff (almost none of them comes back, they are very busy trying other games), so we don't consider a real problem, but we would like to know who is legit and who knows (that is important), and after all, we can decide.

@Trucidare: Thanks as usual for your help, the method you referred is the one Gernot show, right?

@Gernot: As usual, thanks a lot for your support and your continuous help! I will try this methods in 2 stages: first one, I will implement to trying to difference between lgit users and pirate ones; and a in a second stage, i will decide to show a advertisement for buy a full verion 'Hello pirate'.

Thanks all,

King Regards, fjsantos.
Title: Re: Piracy
Post by: Hark0 on 2010-Jun-07
WTF!!!!!!! (No me jodas!!!!!!!)  :rant:

Are any way to "lock/kick/..." an user of Openfeint net ... if this illegal user are "detected"???

O_O¿?

Title: Re: Piracy
Post by: Hark0 on 2010-Jun-07
Quote from: Kitty Hello on 2010-Jun-07
Try this:
Code (glbasic) Select

?IFDEF IPHONE
IMPORT int iPhoneIsCracked()
?ELSE
FUNCTION iPhoneIsCracked:
   RETURN FALSE
ENDFUNCTION
?ENDIF


Be sure to test if it works properly. I check for the SignerIdentity key.

How check this feature?

Sorry for my dumb question... if are....  :-[

I'm are on 70% of development status of my iphone game project... and I are very interested on this question. I have 2 iphones... one jailbreaked and one clean... two avaliable for test my project...

TIA, Hark0
Title: Re: Piracy
Post by: Hark0 on 2010-Jun-07
On my commercial old PPC games...

I "install" a DLL on Windows path... this DLL are null, but with a name very impressive like this: "devicecpucore.dll" (really are a JPG renamed). The game check of exist of this file... if returns zero, NAG SCREEN. You know....

Only commercial/registered versions create/have this DLL. And I ONLY send a one key for device/user... one to one manually.

I think this is impossible on iphone due to filesystem works....


Please work toghether in implement an a feature ANTIpiracy for ours projects... my hardware ware avaliable for all kind of tests...

;)
Title: Re: Piracy
Post by: Hark0 on 2010-Jun-07
Quote from: fjsantosb on 2010-Jun-06
It will be very interesting could to determine who is buying and who is piracy.

I will check out for some piece of code and write back.

Can you check via Openfeint users vs pirates via email/nick account???
Title: Re: Piracy
Post by: Slydog on 2010-Jun-08
Are you asking how to use this feature, or to verify if it's working?

To use it, copy the above code into your project, and try (I've never verified this):
Code (glbasic) Select

IF iPhoneIsCracked() = TRUE
   DisplayNagScreen()
ELSE
   SaveHighScore()
ENDIF


To test it, that would be harder.  One method is to actually release your game, and wait for somebody to crack it.
Jailbreak your iPhone, and install the cracked copy, and run it.
Otherwise, you can assume its working if it returns FALSE.
Maybe you can edit the plist file to test? (I have no idea really, and have never even seen this file).

Anybody know how to force this check into thinking it's a cracked iPhone?

Quote from: Hark0 on 2010-Jun-07
Quote from: Kitty Hello on 2010-Jun-07
Try this:
Code (glbasic) Select

?IFDEF IPHONE
IMPORT int iPhoneIsCracked()
?ELSE
FUNCTION iPhoneIsCracked:
   RETURN FALSE
ENDFUNCTION
?ENDIF


Be sure to test if it works properly. I check for the SignerIdentity key.

How check this feature?

Sorry for my dumb question... if are....  :-[

I'm are on 70% of development status of my iphone game project... and I are very interested on this question. I have 2 iphones... one jailbreaked and one clean... two avaliable for test my project...

TIA, Hark0
Title: Re: Piracy
Post by: Hark0 on 2010-Jun-09
I have 2 iphones... one jailed and other clean....

Hmmm

How "crack" my own app for test anticopy???

:|
Title: Re: Piracy
Post by: trucidare on 2010-Jun-09
download and install openSSH and ldid on your jailbreaked phone.

to compile without develoepr cert. search in google. there are some simple tutorials.

after that copy the created app on your device in /Applications/ and go inside your .app folder. type ldid -s your_iphone_game
rebioot device or download respring from cydia and run
Title: Re: Piracy
Post by: Kitty Hello on 2010-Jun-09
the function crashes. Oops.
Title: Re: Piracy
Post by: fjsantosb on 2010-Jun-21
I would like to implement this function on this Exodus update.

I wonder if the function actually works. (or crash?).

King Regards, fjsantos.
Title: Re: Piracy
Post by: Kitty Hello on 2010-Jun-22
Try it with the latest V8 beta update. If it's not working, it will surely crash on your test iPod.
Title: Re: Piracy
Post by: Manu Segura on 2010-Jul-27
Hi there,

I am starting to learn how to program in GLBasic, my objective is to create a shooter with the iPhone as the target platform.

So, I'm concerned about piracy and would like to know if the function you were talking about is finally working or not.

There is any news?

Kind regards to everyone!!!

And wish me luck LOL
Title: Re: Piracy
Post by: Kitty Hello on 2010-Jul-27
you can protect it with this:
http://www.glbasic.com/forum/index.php?topic=4600.msg34618#msg34618 (http://www.glbasic.com/forum/index.php?topic=4600.msg34618#msg34618)
Title: Re: Piracy
Post by: Ozden79 on 2010-Jul-27
In my opinion, there shouldn't be any fear about the piracy. When we talk about AppStore particularly, every app you see in there is sooner or later pirated and unless you create the next number one hit on AppStore, people will not rush to buy you software (in that case, it'll be probably cracked in a day or two after the release).

Our game, "FastBall 2", had been cracked the next day that it's released. I had seen enormous amount of increase on online leaderboards and after a while, all the new crack momentum went away. And even this, it end up in "New & Noteworthy Section", sold well and still sells a good amount.

In short, no need to worry about this matter much and just try to create a very enjoyable game which can reach a wide audiance... 
Title: Re: Piracy
Post by: matchy on 2010-Jul-27
If you can beat them, join them soon by making legal JB apps. :whistle:

Quote
    Jailbreaking now legal
    Not locked into App Store
    Telcos launch iPhone 4 plans

IPHONE owners will soon be able to legally unlock their devices so they can run software applications that haven't been approved by Apple.

The US Government last night decided to allow "jailbreaking" as one of a handful of new exemptions from a 1998 federal law that prohibits people from bypassing technical measures that companies put on their products to prevent unauthorised use of copyright-protected material.
http://www.news.com.au/technology/jailbroken-now-iphones-are-for-porn-too/story-e6frfro0-1225897548234


http://www.appleinsider.com/articles/10/07/26/us_government_legalizes_iphone_jailbreaking_for_unauthorized_apps.html
Title: Re: Piracy
Post by: Slydog on 2010-Jul-27
Ha, I love this new change:
Quote- allow people to break technical protections on video games to investigate or correct security flaws.
I wonder how many people will try to use that reason as to why they cracked the game?!

But I'm not too worried, as Apple still doesn't support the practice, and will still make it a pain to crack, etc.
I'm predicting that we may see a few extra people jailbreak their device, but only those who were sitting on the fence and were afraid to harm their device.  It still may break your warranty.   

I don't think many people were holding back because it was illegal.  If they were, it is still illegal to pirate games, even though jailbreaking may not be.

But if you are worried, give the game away for free, and implement iAds.  You may make more money in the long run, as your exposure will be much greater, and once iAds start increasing their fill rate, the average game will probably make much more money.  They pay something like a penny per impression, and $2 a click, minus Apples 40% or something.  Not bad at all.
Title: Re: Piracy
Post by: FutureCow on 2010-Jul-28
I don't have an iphone so I might be a wrong on this point.

Gernots code checks whether a phone has been jailbroken - NOT whether the application has been pirated. My understanding is that just because you have a jailbroken phone, doesn't mean every app on the phone is a pirate copy. If this is the case then
* you can't use Gernot's code to verify whether the person is using a pirated copy of your app
* all you can verify with it is that the phone they're using has been jailbroken.
* Printing a "You are a pirate!" message when detecting a jailbroken phone might upset people who have bought your application but are using it on a jailbroken phone for reasons of their own.

From what I've read, there are some good reasons to jailbreak your phone, but that does not automatically mean you're a software pirate.
Title: Re: Piracy
Post by: erico on 2010-Jul-28
"* Printing a "You are a pirate!" message when detecting a jailbroken phone..."

thought of the situation... it would be funny to see.
Title: Re: Piracy
Post by: Slydog on 2010-Jul-28
Ya, I was really offended when they told me that while I was playing "Pirate's Treasure".
Title: Re: Piracy
Post by: Kitty Hello on 2010-Jul-28
Quote from: FutureCow on 2010-Jul-28
Gernots code checks whether a phone has been jailbroken - NOT whether the application has been pirated. My understanding is that just because you have a jailbroken phone, doesn't mean every app on the phone is a pirate copy. If this is the case then
* you can't use Gernot's code to verify whether the person is using a pirated copy of your app
* all you can verify with it is that the phone they're using has been jailbroken.
* Printing a "You are a pirate!" message when detecting a jailbroken phone might upset people who have bought your application but are using it on a jailbroken phone for reasons of their own.

WRONG!!!
My code checks the signage of the program. People who pirate the app will have to change that in order to run it on a jailbreak iPhone. So, the legal App does run on an Jailbreak iPhone. But the pirated app does not.
Title: Re: Piracy
Post by: Manu Segura on 2010-Jul-28
Quote from: Kitty Hello on 2010-Jul-28
Quote from: FutureCow on 2010-Jul-28
Gernots code checks whether a phone has been jailbroken - NOT whether the application has been pirated. My understanding is that just because you have a jailbroken phone, doesn't mean every app on the phone is a pirate copy. If this is the case then
* you can't use Gernot's code to verify whether the person is using a pirated copy of your app
* all you can verify with it is that the phone they're using has been jailbroken.
* Printing a "You are a pirate!" message when detecting a jailbroken phone might upset people who have bought your application but are using it on a jailbroken phone for reasons of their own.

WRONG!!!
My code checks the signage of the program. People who pirate the app will have to change that in order to run it on a jailbreak iPhone. So, the legal App does run on an Jailbreak iPhone. But the pirated app does not.

That's great news. Good job.

But the question that comes to my mind is...

Why all developers ( I mean, not only glbasic ones) are not using this feature?

Or maybe they will?

Looks like all of them have to switch to glbasic LOL

cheers,
Title: Re: Piracy
Post by: Kitty Hello on 2010-Jul-29
Most don't care. We earn enough anyway.
Title: Re: Piracy
Post by: matchy on 2010-Jul-29
Here's another tip: Forget about finance and marketing as reward comes with game designs.  ;)
Title: Re: Piracy
Post by: Hatonastick on 2010-Jul-29
Darn, you just squashed all my hopes and dreams.  Actually I just bypass going through all the hassle of releasing stuff and just enjoy myself doing the design.  I'm 100% efficient me. =D
Title: Re: Piracy
Post by: matchy on 2010-Jul-29
Quote from: Hatonastick on 2010-Jul-29
Darn, you just squashed all my hopes and dreams.  Actually I just bypass going through all the hassle of releasing stuff and just enjoy myself doing the design.  I'm 100% efficient me. =D

LOL. I can't tell if you are serious or sarcastic (I hope the latter). ;)
Title: Re: Piracy
Post by: Hatonastick on 2010-Jul-29
Not entirely sure myself.  I'll get back to you on that one. :)

Nahh, I'm aiming to break my long, long, long, long running period of not releasing much of anything.  Currently though I'm taking a break from my GLB sort-of 'Time Pilot' remake as I work on a mod for a game but mostly it's an excuse to learn 3D modeling for the first time ever -- it's about the right time though, my family has a long tradition of only adopting technology after it's been out for 20 years, from TV's to DVDs.  :whistle:

It is relevant to GLB though as my next GLB project (after the remake) will be 3D and the package I bought has a GLB exporter written for it by Gernot, so it will be getting a bit of use.


Edit:  Move along, nothing to see here.
Title: Re: Piracy
Post by: matchy on 2010-Jul-29
What are you talking about?
This topic is about piracy.
Title: Re: Piracy
Post by: Kitty Hello on 2010-Jul-29
Ahoy me mates. "A pirate I was meant to be. Trim the sails and roam the sea..." ahem..
Title: Re: Piracy
Post by: matchy on 2010-Jul-30
To cheer myself up; I'm playing the latest Monkey Island.
Title: Re: Piracy
Post by: Hark0 on 2010-Jul-30
Quote from: matchy on 2010-Jul-30
To cheer myself up; I'm playing the latest Monkey Island.

:offtopic:

Look behind you, a three-headed monkey!

:D
Title: Re: Piracy
Post by: backslider on 2010-Jul-30
xD

You fight like a dairy farmer. How appropriate. You fight like a cow.

My favourite quote  :good:
Title: Re: Piracy
Post by: Hatonastick on 2010-Jul-30
I miss the old Lucasarts adventure games.  Lots of quotable quotes from those games...
Title: Re: Piracy
Post by: ampos on 2010-Oct-07
Just try this simple code:
Code (glbasic) Select

SETCURRENTDIR("Media") // seperate media and binaries?
SETSCREEN 960,640,0
LOADFONT "smalfont.png",0

WHILE TRUE
PRINT "PI:"+iPhoneIsCracked(),0,192
SHOWSCREEN
WEND

?IFDEF IPHONE
IMPORT int iPhoneIsCracked()
?ELSE
FUNCTION iPhoneIsCracked:
   RETURN FALSE
ENDFUNCTION
?ENDIF


But XCode returns:

QuoteLd build/iPhone.build/Debug-iphoneos/iPhone.build/Objects-normal/armv7/iPhone normal armv7
cd /Users/Fakiro/Desktop/test
setenv IPHONEOS_DEPLOYMENT_TARGET 3.0
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk -L/Users/Fakiro/Desktop/test/build/Debug-iphoneos -L/Users/Fakiro/Desktop/test/Lib -F/Users/Fakiro/Desktop/test/build/Debug-iphoneos -filelist /Users/Fakiro/Desktop/test/build/iPhone.build/Debug-iphoneos/iPhone.build/Objects-normal/armv7/iPhone.LinkFileList -dead_strip -lstdc++ -miphoneos-version-min=3.0 -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -framework AudioToolbox -framework CoreLocation -framework OpenAL -lGLBasiciPhone-egl -lpng-gf -lPROGRAM -framework MediaPlayer -o /Users/Fakiro/Desktop/test/build/iPhone.build/Debug-iphoneos/iPhone.build/Objects-normal/armv7/iPhone

Undefined symbols:
  "__GLBASIC__::iPhoneIsCracked()", referenced from:
      __GLBASIC__::__MainGameSub_()       in libPROGRAM.a(gpc_temp0.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status


Any hint?
Title: Re: Piracy
Post by: Slydog on 2010-Oct-07
Does an 'IMPORT' statement need to be at the top?
If so, try this instead:
Code (glbasic) Select
?IFDEF IPHONE
IMPORT int iPhoneIsCracked()
?ENDIF

SETCURRENTDIR("Media") // seperate media and binaries?
SETSCREEN 960,640,0
LOADFONT "smalfont.png",0

WHILE TRUE
   PRINT "PI:"+iPhoneIsCracked(),0,192
   SHOWSCREEN
WEND

?IFNDEF IPHONE
FUNCTION iPhoneIsCracked:
   RETURN FALSE
ENDFUNCTION
?ENDIF
Title: Re: Piracy
Post by: ampos on 2010-Oct-07
Still doesnt work. Maybe is related that I am still in "demo mode"?  :whistle:
Title: Re: Piracy
Post by: PaLe on 2010-Oct-09
Quote from: ampos on 2010-Oct-07
Still doesnt work. Maybe is related that I am still in "demo mode"?  :whistle:

I was interested ... but I get about the same error (2 errors, 1 warning)
(registered version)

Quote
Ld build/iPhone.build/Release-iphoneos/iPhone.build/Objects-normal/armv7/Piracy normal armv7
cd /Users/Paolo/Desktop/Piracy/XCode/GLBasic
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk -L/Users/Paolo/Desktop/Piracy/XCode/GLBasic/build/Release-iphoneos -L/Users/Paolo/Desktop/Piracy/XCode/GLBasic/Lib -F/Users/Paolo/Desktop/Piracy/XCode/GLBasic/build/Release-iphoneos -filelist /Users/Paolo/Desktop/Piracy/XCode/GLBasic/build/iPhone.build/Release-iphoneos/iPhone.build/Objects-normal/armv7/Piracy.LinkFileList -dead_strip -lstdc++ -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -framework AudioToolbox -framework CoreLocation -framework OpenAL -lGLBasiciPhone-egl -lpng-gf -lPROGRAM -framework MediaPlayer -o /Users/Paolo/Desktop/Piracy/XCode/GLBasic/build/iPhone.build/Release-iphoneos/iPhone.build/Objects-normal/armv7/Piracy

Undefined symbols:
  "__GLBASIC__::iPhoneIsCracked()", referenced from:
      __GLBASIC__::__MainGameSub_()       in libPROGRAM.a(gpc_temp0.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status

Title: Re: Piracy
Post by: Kitty Hello on 2010-Oct-11
wasn't that IMPORT "C" int iPhoneIsCracked()
Title: Re: Piracy
Post by: ampos on 2010-Oct-11
Quote from: Kitty Hello on 2010-Oct-11
wasn't that IMPORT "C" int iPhoneIsCracked()

Ein? :blink:
Title: Re: Piracy
Post by: Cliff3D on 2010-Oct-11
Quote from: ampos on 2010-Oct-11
Quote from: Kitty Hello on 2010-Oct-11
wasn't that IMPORT "C" int iPhoneIsCracked()

Ein? :blink:

In:

Code (glbasic) Select

SETCURRENTDIR("Media") // seperate media and binaries?
SETSCREEN 960,640,0
LOADFONT "smalfont.png",0

WHILE TRUE
PRINT "PI:"+iPhoneIsCracked(),0,192
SHOWSCREEN
WEND

?IFDEF IPHONE
IMPORT int iPhoneIsCracked()
?ELSE
FUNCTION iPhoneIsCracked:
   RETURN FALSE
ENDFUNCTION
?ENDIF



try

Code (glbasic) Select
IMPORT "C" int iPhoneIsCracked()

in place of

Code (glbasic) Select
IMPORT int iPhoneIsCracked()
Title: Re: Piracy
Post by: ampos on 2010-Oct-17
With the "C" trick now XCode compiles with no error, but the "cracked" detection does not work. I have checked it on a 3G-3.1 jailbroken+install0us and iphoneiscracked() returns 0.
Title: Re: Piracy
Post by: MrTAToad on 2010-Oct-17
Doesn't it detect a pirated copy of the application and not whether the iPhone has been jail broken ?
Title: Re: Piracy
Post by: ampos on 2010-Oct-17
I have the following program:

Code (glbasic) Select
//TEST

?IFDEF IPHONE
IMPORT "C" int iPhoneIsCracked()
?ENDIF

SETCURRENTDIR("Media") // seperate media and binaries?
SETSCREEN 480,320,0
LIMITFPS 60

WHILE TRUE
PRINT "PI:"+iPhoneIsCracked(),0,192
SHOWSCREEN
WEND

?IFNDEF IPHONE
FUNCTION iPhoneIsCracked:
   RETURN FALSE
ENDFUNCTION
?ENDIF


I have installed it on a iPhone trough xcode and on a jailbroken/install0us one using the ipa generated by xcode.

In both cases iPhoneIsCracked() always returns 0
Title: Re: Piracy
Post by: MrTAToad on 2010-Oct-17
Modify the SignerIdentity key

From Gernot :

QuoteI check for the SignerIdentity key.
Title: Re: Piracy
Post by: ampos on 2010-Oct-17
The jb iPhone is just a plain phone. Nothing installed but jb/installous. Also the phone is unknown to apple Dev/xcode.
Title: Re: Piracy
Post by: MrTAToad on 2010-Oct-17
That may be, but the function checks the integrity of the application, and not the phone.
Title: Re: Piracy
Post by: BdR on 2011-Jan-05
*kicks thread*

Only 1 day after its release, I found out my new game was made available as "cracked IPA" file, which can be installed without paying the astronomical amount of 1 lousy dollar. :rant: I guess the only conclusion is that most iphone users are dirt poor sobs..  Maybe you can tell from my sarcasm, I feel kinda bitter and sad about this, I worked about 6 months on this game. :(

I only have the official sales results of the first day (half a day really) and there are 5 official buyers, while my own database shows at least 13 distinct users (it only logs usage of the level editor).

In the next update or a new game, I will definitely try to put crack-detection and display a nag screen or disable some key features... or maybe just display "cracked version detected, apparently you have no money" and then link to an unemployement site or something.
Title: Re: Piracy
Post by: Leginus on 2011-Jan-05
Lol "link to unemployment site", harsh but funny

Maybe try to appeal to their better nature.  I went onto the download forum where my game was and said along the lines of "I hope you all enjoy the game, but as the developer of this, my family doesn't feed itself and for 59p,maybe you would consider downloading it"

Not sure it helped though.

How would you tell which on of the 13 is hacked and which are legitimate for your nag screen?

The problem is that software will always be hacked and has been ever since the commodore 64 days when i was on the other side of the fence.  Maybe a way forward would be to offer free software but with in app purchases.  As much as i hate in ap purchases myself, its an option.

Just a word of warning which I didnt think of.  I downloaded the hacked version of my game to my pc, so I could see what the ipa looked like.  I forgot to put my media into a data file and therefore is free for anybody to rip off.

New games will be using shoebox :)


Title: Re: Piracy
Post by: Moebius on 2011-Jan-05
I was thinking of appealling to the user, but also limiting the game to what you'd get in a 'Lite' version, including ads so you could still make revenue.
However, the "link to unemployment site" seems to great to exclude from the cracked version  :good:
Perhaps you could upload a 'cracked' version yourself just to annoy people...
Title: Re: Piracy
Post by: BdR on 2011-Jan-05
I also downloaded the ipa file, which you can rename to zip and then open with winrar. This is what it contains:
Code (glbasic) Select

/Payload/TripleDutch.app/Info.plist   // <- seems unaltered
/Payload/TripleDutch.app/TripleDutch  // the binary is altered, at least it has a different date
/Payload/TripleDutch.app/Icon.png     // 57x57 icon
/Payload/TripleDutch.app/etc.         // default.png, icons and media files etc. unaltered
/iTunesArtwork                        // <- 512x512 png icon
/iTunesMetadata.plist                 // <- my app can't check this file(?)
/_RickRossBoss                        // tag file added by script kiddy


The tag file mentions that the game was cracked using Clutch 1.0.5 whatever that is. The binary seems and the iTunesMetadata.plist file seem to be altered in some way, but the Info.plist seems the same (though I'm not 100% sure, can't access the original files atm) which would seem to rule out checking that file as copy-detection.

btw I personally don't mind so much that the images and sound files can be extracted, if someone wanted to extract them in the first place, they probably (hopefully) want to do something creative with it (photoshop, wallpaper etc) so that's okay with me. But simply a pirated copy of the entire app bundle carelessly floating around on sites like megaupload, that just pisses me off.
Title: Re: Piracy
Post by: Leginus on 2011-Jan-05
After spending hours upon hours of doing gfx (which I have to work really hard at) as its not my natural forte, i find it HIGHLY frustrating that they get ripped, regardless of whether its for a fan site or not.   :rant:

However, saying that, maybe it is c64 kalma coming back to haunt me.  At least we werent scipt kiddies though and had to really work at hacking :)

Either way I was wrong all those years ago and I am sure these people will realise it too.  Just the natural cycle.
Still...... hope there phones blow up lol   (sorry, childish moment :))




Title: Re: Piracy
Post by: MrTAToad on 2011-Jan-05
One thing you could try (if you know PHP and what not) is when its all finished, calculate a MD5 checksum of the complete iPhone package, which your program uses (after adding in the code) which would be checked against a reference value from a website (or internally of you like).
Title: Re: Piracy
Post by: 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.

Title: Re: Piracy
Post by: Kitty Hello on 2011-Jan-05
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.
Title: Re: Piracy
Post by: Leginus on 2011-Jan-05
A sure fire way to beat the hackers................make it free  :enc:
Title: Re: Piracy
Post by: BdR on 2011-Jan-05
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...)
Title: Re: Piracy
Post by: BdR on 2011-Jan-05
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".
Title: Re: Piracy
Post by: MrTAToad on 2011-Jan-05
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.
Title: Re: Piracy
Post by: ampos on 2011-Jan-05
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.
Title: Re: Piracy
Post by: BdR on 2011-Jan-23
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
Title: Re: Piracy
Post by: Kitty Hello on 2011-Jan-24
If the app folder is writable, it might be due to jailbreak, not crack. Right?
Title: Re: Piracy
Post by: ampos on 2011-Jan-24
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.
Title: Re: Piracy
Post by: Leginus on 2011-Jan-24
Unfortunately no matter what you do, the crackers will get around it. That's the point of cracking  :(
Title: Re: Piracy
Post by: Moru on 2011-Jan-24
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.
Title: Re: Piracy
Post by: ampos on 2011-Jan-24
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)...
Title: Re: Piracy
Post by: ampos on 2011-Jan-24
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.
Title: Re: Piracy
Post by: Leginus on 2011-Jan-24
And how have you seen those eh  :whistle:
Title: Re: Piracy
Post by: ampos on 2011-Jan-24
Quote from: Leginus on 2011-Jan-24
And how have you seen those eh  :whistle:

Just for scientific research, of course!  :nana:
Title: Re: Piracy
Post by: Moru on 2011-Jan-24
The problem of making an app work less good if it's a pirated version is that the cracker won't get a bad name but you will get very bad reputation. This has killed big commercial games already, don't fall in this trap. Very big companies with extremely well-liked games might get away with this...
Title: Re: Piracy
Post by: Moebius on 2011-Jan-25
Perhaps just adding unobtrusive ads or something to get money out of cracked versions would be a good idea...  Moru's point is a good one.
On one thing from the last page:
QuoteIf 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.
Could it be possible to check if the phone is jailbroken with a file-writing test, and then if it is hash check the executable or code signing files?
For some reason I think it would be nice to be able to at least keep track of the number of cracked apps that are being used if one can't do anything to limit the program without inviting further cracking :(
Title: Re: Piracy
Post by: matchy on 2011-Jan-25
Quote from: ampos on 2011-Jan-24
Just for scientific research, of course!  :nana:
That's even worse because you are assisting the problem. Sound like double standards?

"Educational" research would be more appropriate because we will NEVER solve this issue.
Title: Re: Piracy
Post by: BdR on 2012-Feb-21
*kicks thread*

Yesterday, I decided to write to some Chinese review sites. Using google-translate managed to read (more or less) some pages and sent an e-mail to these 3 sites. gameape (http://gameape.tw/), 178.com (http://apple.178.com), zhangxin (http://www.zhangxin.cc/). Learning from my previous app (see earlier in this thread), I had build a function into the app that it sends a one-time message to my database at the first app startup, to see how many users I've really got (apart from appstore sales figures).

So this morning, starting from about 9:00am I saw many many first-time app starts from Chinese users. I was immediately suspicious because it was *only* from the full version, none from the lite version. The 178.com website had some reviews and seems to have an official link to gameloft so I figured it was legit. But apparently it is affiliated with appifan, which is a jailbreak site. So now a pirated copy of Snake Slider can be downloaded from the appifan site.  :rant: damnit!

I'm not too mad, because you can always kind of expect it.. however this did give me another counter-piracy idea, which is: let the v1.0 of your app be pirated on purpose, and then start adding features (and bugfixes) into your app. This is kind of what the creators of No Time To Explain (http://torrentfreak.com/indie-game-devs-post-pirated-game-on-the-pirate-bay-110909/) have done.

Btw my function also checks if the app folder is writable and reports this in the one-time message. Of the chinese users there were about 35% not writable and 65% writable. So when the appfolder is writable that doesn't automatically mean it's not a jailbreak.
Title: Re: Piracy
Post by: spacefractal on 2012-Feb-21
piracy is annoyting, but nothing you 100% can due and sometimes drm can been too rouch (read Ubisoft). Howover I have missed this thread in some time, but I see they have added a /_RickRossBoss.  (I have not downloaded the file for just checking the content).

So me gonna think its mightbeen possible to count number of added files to the main root folder, which should not been altered? Th

Also only checking with the signer is a nogo, since its easy to workaround, but could been doing credits as well "crack" string (using crypt$) checks could been done? this should of course not been done under startup, but doing other places. elsewise its would been easy to crack that if anything done on startup.
Title: Re: Piracy
Post by: BdR on 2012-Feb-21
Counting the number of files won't help, because in the Snake Slider ipa no files were added.

And I'll just leave it at this, but I'll remember this site as a jailbreak site for the next time. Because I like the idea of letting the app be cracked on purpose.

The first version of my new app will probably contain some "bugs" that only happen after a certain date (like save-game not working, screwed up graphics or worse...). I'll make sure it gets pirated and the file spreads, and then normal paying customers will just get an update 8) heh heh
Title: Re: Piracy
Post by: BdR on 2012-Feb-23
@Ocean:
After browsing some startup/sale data I realise that not everybody updates their apps as frequently as I would like. Of course I don't expect everybody to update every app the very day it is released. But I've seen evidence of old versions of my app being used (legit so not hacks) even months after a new release.

So you're right.. Building in some sort of app-crippler function that is triggered by a date (implicitly expecting that all paying users are using a newer version by then) might not be such a good idea.
Title: Re: Piracy
Post by: Leginus on 2012-Feb-23
This would be a looong job if you had say 250,000 legit users
Title: Re: Piracy
Post by: Leginus on 2012-Feb-23
i will see if i can find the link, but i recently read the link where a developer used humour against the pirates.  Basically if it detected a pirate version, the skins on the characters turned to pirates instead of proper characters.
Title: Re: Piracy
Post by: BdR on 2012-Feb-23
If I had 250.000 paying users I wouldn't care about piracy :D and I think the app with the characters turned into pirates was "No Time To Explain" (see my post (http://www.glbasic.com/forum/index.php?topic=4600.msg63828#msg63828))
Title: Re: Piracy
Post by: Leginus on 2012-Feb-23
Lol.  I knew I had read it somewhere  :-[
Note to self...read previous posts

I suppose its a fair point on the 250,000 users.
I think the best way to defeat the piracy issue which has been going on since the c64 and before,  is to forget about it, many people have tried and failed.
Its just one of those things.  It will happen no matter what you do.

Just make sure you have plenty of marketing in your game and hope it spreads the word to people who have better morals and may want to buy it