I agree and I don't see how people are missing this valuable point you
make Mark.

Currently we are at: crackers must modify the program code to allow
piracy

>From here there are two ways to make piracy more difficult:
A) Make secure, non-rooted phones reject apps so that even a cracked
app won't run on a stock phone
B) Make crackers actually have to write code instead of just flip a
dalvik op somewhere

The problem with A is that for every app name SuperCoolWidget, there
could exist an app called SuperAwesomeWidget that has the same code
minus the call to LVL, so Google would have to disallow all non-market
apps to really make this work. Also, say for example they *did* want
to pursue this route. Obviously disabling side-loading isn't on the
table. But if say you wanted to check an applications full name
com.appdev.android.supercoolwidget etc to make sure that it isn't on
the market and doesn't have a checkmark that says "prevent
sideloading". Then at the very least now phones need a valid internet
connection to side load an app. So it's not going to be just a war
against pirates it's also to some extend degrading honest customers'
experiences.

I think the reliance on binder -> Market probably is going to make
automated cracks a little easier for pirates since I feel like these
kinds of calls will be easy to automatically find in apps.

So the final security measure B) is to simply make the hackers have to
write code. Granted I'm no security expert, but it seems to me that
the only thing that can be done is on the google LVL server. You can
upload a simple java class with a function that takes in:

Some basic information about the device the app is supposedly
installed on, possibly something time based like an integer that is
based on the date that the security policy of the app would determine
as the expiration date of the last LVL authentication. And returns an
array of bytes. The function wouldn't have access to any java
threading etc, and would be limited to a short runtime or something.

Then developers would have to make a call to LVL, then do something
like getSettings().setImportantSetting(lvlResponseData[5] +
lvlResponseData[1] - phone.DeviceSpecificInformation +
lvlAuthExpirationDateInt)

Where the online service feeds it data that will balance out with the
code in the apk to actually result in the value the setting is
supposed to have. really it becomes like a complex captcha for
crackers. They can still crack an app. But more importantly is the
actual obfuscation, like say you need a 5 in your code, you could use
an LVL web service which knows the specifics of your app to generate a
5 as well as generate the server side function that outputs the data
necessary.

So that hackers would have to figure out each time you update your app
how to crack it manually. That is what will actually stop the value of
piracy. Updates. If your app receives constant updates but people
pirating your app have to stick with an old one because the hackers
can't be bothered to keep cracking your app over and over again that
is the only way.

Of course I don't really see it being worth it, but I don't see any
other way to make the system more secure without moving a piece of
your code into the cloud.

-E

On Aug 25, 10:55 am, Mark Carter <mjc1...@googlemail.com> wrote:
> How about allowing the dev to specify response int values in the Dev
> Console?
>
> The recent "crack" script would (probably) not be able to work out which
> code means what. Therefore, a pirate would have to crack each app
> individually.
>
> That's right isn't it? The automation only works because LICENSED is always
> the same int value...
>
> On 25 August 2010 19:31, strazzere <str...@gmail.com> wrote:
>
>
>
>
>
>
>
> > I'm not sure how this would make code modification impossible?
>
> > You patch the application, make it always return a "yes, it was ok" to
> > the licensing service inside the apk. Application then requests
> > authentication, it fails, failure comes to application which still
> > continues to say "yes, it was ok".
>
> > So yes, your going to have the market return a fail always, but if
> > you've patched the application to *not* care, how is that actually
> > helping?
>
> > -Tim
>
> > On Aug 25, 10:13 am, Kostya Vasilyev <kmans...@gmail.com> wrote:
> > >   25.08.2010 21:04, Dianne Hackborn пишет:> If there are other
> > suggestions that will actually make things harder
> > > > without doing that, I would certainly like to hear them.
>
> > > Um, make the Market App side of LVL check that the application making
> > > LVL calls is signed with the same key as the .apk uploaded to Developer
> > > Home?
>
> > > Seems this would make attacks based on code modifications pretty much
> > > impossible, since a modified .apk is signed with a different key from
> > > the developer's.
>
> > > --
> > > Kostya Vasilev -- WiFi Manager + pretty widget --
> >http://kmansoft.wordpress.com
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to android-developers@googlegroups.com
> > To unsubscribe from this group, send email to
> > android-developers+unsubscr...@googlegroups.com<android-developers%2Bunsubs 
> > cr...@googlegroups.com>
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to