Skip to content
This repository has been archived by the owner on Sep 6, 2019. It is now read-only.

Poweramp full version can't verify license #1340

Closed
Lasermole opened this issue Feb 13, 2014 · 73 comments
Closed

Poweramp full version can't verify license #1340

Lasermole opened this issue Feb 13, 2014 · 73 comments

Comments

@Lasermole
Copy link

Since update to 1.99.42 poweramp won't load as its unable to verify license. Pretty upset as its my favorite music app. Tried everything I can think but the only thing that works to allow me to launch poweramp is to disable Xprivacy in xposed to use it. I don't want to compromise on privacy for the sake of poweramp's crappy license system.

@M66B M66B added the bug label Feb 13, 2014
@M66B
Copy link
Owner

M66B commented Feb 13, 2014

Can you please provide a logcat?

@Lasermole
Copy link
Author

I would love to. Haven't done one before. Hate to bother you but can you
explain to me a quick way for me to grab one for you?
On Feb 13, 2014 3:55 PM, "Marcel Bokhorst" notifications@github.com wrote:

Can you please provide a logcat?

Reply to this email directly or view it on GitHubhttps://github.com//issues/1340#issuecomment-35024753
.

@M66B
Copy link
Owner

M66B commented Feb 13, 2014

@Lasermole
Copy link
Author

Ok I got a logcat. Hope it's got the pertinent data.

--------- beginning of /dev/log/main
[ 02-13 16:38:00.017 3964: 6387 I/XPrivacy/XRuntime ]
get 10292/exec shell=!restricted (cached)
[ 02-13 16:38:00.017 3964: 6387 I/XPrivacy/XRuntime ]
get 10292/exec shell=!restricted (cached)
[ 02-13 16:38:00.037 3964: 3964 I/XPrivacy/XContextImpl ]
getSystemService display=android.hardware.display.DisplayManager uid=10292
[ 02-13 16:38:00.037 3964: 3964 I/XPrivacy/XContextImpl ]
getSystemService window=android.view.WindowManagerImpl uid=10292
[ 02-13 16:38:00.047 3964: 3964 I/XPrivacy/XContextImpl ]
getSystemService power=android.os.PowerManager uid=10292
[ 02-13 16:38:00.047 3964: 3964 I/XPrivacy/XActivity ]
getSystemService power=android.os.PowerManager uid=10292
[ 02-13 16:38:00.087 3964: 3964 D/AbsListView ]
unregisterIRListener() is called
[ 02-13 16:38:01.097 3964: 3964 D/AbsListView ]
unregisterIRListener() is called
[ 02-13 16:38:02.007 3964: 3964 D/AbsListView ]
unregisterIRListener() is called
[ 02-13 16:38:02.037 3964: 3964 D/AbsListView ]
unregisterIRListener() is called
[ 02-13 16:38:02.067 3964: 3964 D/AbsListView ]
onVisibilityChanged() is called, visibility : 4
[ 02-13 16:38:02.067 3964: 3964 D/AbsListView ]
unregisterIRListener() is called
[ 02-13 16:38:06.347 3964: 3964 I/XPrivacy/XActivity ]
getSystemService layout_inflater=com.android.internal.policy.impl.PhoneLayoutInflater uid=10292
[ 02-13 16:38:06.347 3964: 3964 I/XPrivacy/XActivity ]
getSystemService layout_inflater=com.android.internal.policy.impl.PhoneLayoutInflater uid=10292
[ 02-13 16:38:06.357 3964: 3964 D/AbsListView ]
onVisibilityChanged() is called, visibility : 0
[ 02-13 16:38:06.357 3964: 3964 D/AbsListView ]
unregisterIRListener() is called
[ 02-13 16:38:06.357 3964: 6387 I/XPrivacy/XRuntime ]
get 10292/exec shell=!restricted (cached)
[ 02-13 16:38:06.357 3964: 6387 I/XPrivacy/XRuntime ]
get 10292/exec shell=!restricted (cached)
[ 02-13 16:38:06.367 3964: 3964 D/AbsListView ]
unregisterIRListener() is called
[ 02-13 16:38:06.367 3964: 3964 I/XPrivacy/XContextImpl ]
getSystemService display=android.hardware.display.DisplayManager uid=10292
[ 02-13 16:38:06.367 3964: 3964 I/XPrivacy/XContextImpl ]
getSystemService window=android.view.WindowManagerImpl uid=10292
[ 02-13 16:38:06.367 3964: 3964 I/XPrivacy/XContextImpl ]
getSystemService power=android.os.PowerManager uid=10292
[ 02-13 16:38:06.367 3964: 3964 I/XPrivacy/XActivity ]
getSystemService power=android.os.PowerManager uid=10292
[ 02-13 16:38:06.377 3964: 3964 D/AbsListView ]
unregisterIRListener() is called
[ 02-13 16:38:06.377 3964: 3964 D/AbsListView ]
unregisterIRListener() is called

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

The (short) logcat does not contain useful information.
I have check all the code for accidentally restricting this, without settings it, but I am quite sure this is not the case. So, either:

  • there must be some restriction visible in the XPrivacy usage data causing this
  • Poweramp checks for XPrivacy and refuses to work if it finds XPrivacy
  • There is a bug in the Poweramp licensing

I am downgrading this issue from bug to question.

@M66B M66B added question and removed bug labels Feb 14, 2014
@Lasermole
Copy link
Author

Sorry if that logcat was short. Just figured it would narrow down things to
the moment poweramp tried and failed to verify the license.
I don't have any restrictions set on poweramp when I launch it. Unless
there is another app (system) that it's leveraging to obtain the
information it needs to license itself.
I just know I didn't have an issue until last 1.99.42. And after a
reboot. The dev for poweramp said so long as the android id and Google
account are detected as the same as the purchase it will verify correctly.
Oddly it seemed every time I launched poweramp it detected my google
account as my secondary work email account and not my primary. Again I
didn't restrict account access either. I even removed my work account,
rebooted and tried again. No good.
Is there a way to be sure Xprivacy reports the actual device info and not
random to poweramp specifically?
On Feb 13, 2014 11:38 PM, "Marcel Bokhorst" notifications@github.com
wrote:

The (short) logcat does not contain useful information.
I have check all the code for accidentally restricting this, without
settings it, but I am quite sure this is not the case. So, either:

  • there must be some restriction visible in the XPrivacy usage data
    causing this
  • Poweramp checks for XPrivacy and refuses to work if it finds XPrivacy
  • There is a bug in the Poweramp licensing I am downgrading this issue
    from bug to question.

Reply to this email directly or view it on GitHubhttps://github.com//issues/1340#issuecomment-35055057
.

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

"Is there a way to be sure Xprivacy reports the actual device info and not
random to poweramp specifically?
"
I have already checked XPrivacy for "rogue" restrictions and for bugs in the recent changes.
My best guess is that this is a problem in Poweramp or some restriction, maybe of a system or Google component that is causing this issue.

@Lasermole
Copy link
Author

Thank you so much for the response! Wish all devs were as awesome!
On Feb 14, 2014 1:03 AM, "Marcel Bokhorst" notifications@github.com wrote:

"
Is there a way to be sure Xprivacy reports the actual device info and not
random to poweramp specifically?
"
I have already check XPrivacy for "rogue" restrictions and for bug in the
recent changes.
My best guess this is a problem in Poweramp or some restriction, maybe of
a system or Google component that is causing this issue.

Reply to this email directly or view it on GitHubhttps://github.com//issues/1340#issuecomment-35058816
.

@paour
Copy link
Contributor

paour commented Feb 14, 2014

I also have the PowerAmp issue. Here's what I tried:

  • made sure that neither PowerAmp nor the Play Store were blocked in any way (none of my system apps are)
  • PowerAmp fails to validate the unlocker
  • uninstalled the PowerAmp unlocker
  • tried to reinstall it from the Play Store
  • got an error, see screenshot (BM-PPH-01 error)

I've captured a log of events up to this point

  • checked in usage data that nothing has been blocked by Xprivacy since I performed the uninstall
  • disabled Xprivacy and rebooted
  • tried installing the unlocker from the Play Store, failed; the log indicated the Play Store was trying to delete something from its cache, so…
  • wiped Play Store data and tried to install again, succeeded
  • installed the unlocker from the Play Store and checked that PowerAmp did successfully validate
  • activated Xprivacy and rebooted
  • PowerAmp error again

What does this tell me:
- the issue is primarily between the Play Store and Xprivacy and this merits attention from @M66B since it is likely just the tip of the iceberg and other less popular apps may be suffering from this

  • PowerAmp does revalidate the license on each boot (but it may allow for the Play Store to be offline indefinitely, whereas the default is to allow only 1 month of leeway, based on verification data returned by the Play Store)

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

Can you post a link to the logcat?

@paour
Copy link
Contributor

paour commented Feb 14, 2014

For some reason I thought GitHub would autolink it, sorry. Here it is: https://gist.github.com/anonymous/8997393

@paour
Copy link
Contributor

paour commented Feb 14, 2014

You'll see a lot of scalpel error logging… It's a module that implements Jake Wharton's 3d layout view, pretty cool… I've just tested that with Scalpel disabled the same thing still happens.

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

Please post a new logcat with XPrivacy debugging enabled (main settings).

@paour
Copy link
Contributor

paour commented Feb 14, 2014

Argh, this seems to have been another intermittent Play Store glitch (I replicated the problem twice this morning though). I can now download the unlocker from the Play Store even with XPrivacy enabled.

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

So, issue resolved?

@paour
Copy link
Contributor

paour commented Feb 14, 2014

No, the unlocker still does not validate. But I had been under the impression that XPrivacy was causing issues in the Play Store (not just with PowerAmp), and that doesn't seem to be the case.

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

Then please provide another logcat with XPrivacy debug logging enabled.

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

This could be the reason:

02-14 09:01:43.195    8369-8369/com.maxmpz.audioplayer E/ActivityThread﹕ Activity com.maxmpz.audioplayer.dialogs.ExpiredActivity has leaked IntentReceiver pl.com.android.scalpel.inject.MainXposed$SettingsReceiver@429c4fc8 that was originally registered here. Are you missing a call to unregisterReceiver()?
    android.app.IntentReceiverLeaked: Activity com.maxmpz.audioplayer.dialogs.ExpiredActivity has leaked IntentReceiver pl.com.android.scalpel.inject.MainXposed$SettingsReceiver@429c4fc8 that was originally registered here. Are you missing a call to unregisterReceiver()?

But this is not caused by XPrivacy.

@paour
Copy link
Contributor

paour commented Feb 14, 2014

https://gist.github.com/anonymous/8997893

This new log does not contain Scalpel (it's disabled) and no IntentReceiverLeaked either.

Unfortunately it seems pretty clear that the PowerAmp failure is indeed due to XPrivacy: it's been reported by multiple users, and one even pinpointed the issue to a change between .39 and .40.

I went back to .39 with latest poweramp all is fine.
Update to .40 poweramp issue showed up.
Updated to .43 disabled all system apps and poweramp same issue.
Disabled XPrivacy from Xposed reboot all is fine with poweramp.
On .43 poweramp works without the unlocker, once unlocker installed got the issue.
Went back to a older poweramp same outcome, don't work with .40 an above.

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

Could you please try again with this version: https://github.com/M66B/XPrivacy/releases/tag/1.99.43-2
I like to see a new logcat, whether it works or not.

@an0n981
Copy link
Contributor

an0n981 commented Feb 14, 2014

Here a logcat with 43-2

https://gist.github.com/an0n981/997d44741b5416720fc4

At the end I uninstalled and reinstalled the unlock key.

Edit: Github cut off about 10,000 lines
here part 2:
https://gist.github.com/an0n981/ffa467e3cf5def3bd395

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

I thought we were talking about totally unrestricted:

I/XPrivacy( 4113): Load package=com.maxmpz.audioplayer.unlock uid=10124
I/XPrivacy( 4113): get 10124/SERIAL identification=restricted

As the reply of the Poweramp author pointed out the IDs should always be the same.
So, please try again without restricting the unlocker.

@an0n981
Copy link
Contributor

an0n981 commented Feb 14, 2014

both poweramp and unlocker (same uid) were totally unrestricted (check to restrict set to off)

but I will remove all restrictions and capture again

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

Maybe the template got applied while installing the unlocker (again) ?

@paour
Copy link
Contributor

paour commented Feb 14, 2014

Shouldn't be, the unlocker uses the same process id as the main app. What
does Xprivacy do in these circumstances?
On 14 Feb 2014 12:31, "Marcel Bokhorst" notifications@github.com wrote:

Maybe the template got applied while installing the unlocker (again) ?

Reply to this email directly or view it on GitHubhttps://github.com//issues/1340#issuecomment-35076039
.

@an0n981
Copy link
Contributor

an0n981 commented Feb 14, 2014

here another one with uid 10124 completely unrestricted

https://gist.github.com/an0n981/a1ea54985f32a972c0ec

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

D/ActivityThread( 5418): Loading provider com.maxmpz.audioplayer: com.maxmpz.audioplayer.unlock.DataProvider
W/XPrivacy/XContentResolver( 5418): Before uri=content://com.maxmpz.audioplayer.data/queue
W/XPrivacy/XContentResolver( 5418): Before uri=content://com.maxmpz.audioplayer.data/queue
W/XPrivacy/XContentResolver( 5418): After uri=content://com.maxmpz.audioplayer.data/queue
W/XPrivacy/XContentResolver( 5418): After uri=content://com.maxmpz.audioplayer.data/queue

Winamp seem to use a content provider for unlocking.
1.99.40 has a new implementation of content provider restrictions.
I have already checked the code about five times for flaws, but I don't see them.
I have also compared the old and new code line by line and still I have no explanation for this issue.
The content URI content://com.maxmpz.audioplayer.data/... should not be restricted in any way by XPrivacy.
I like to see the same log again with XPrivacy debug log enabled, maybe that reveals the cause.

@VorpalBlade
Copy link

Could it not be a bug in Xposed Framework causing this hooking to fail? Surely there is no way for an application for detect that it is being hooked? Or if there is, couldn't you hook that code to prevent it from discovering that?

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

The hook doesn't fail, else a whole lot of restrictions wouldn't work.

Maybe it is similar to the LBE Security Master incompatibility, the Poweramp unlocker seems to use a native library to do or to aid the license verification process. The reason is probably that a native library is more difficult to reverse engineer. Maybe the native library interferes with Xposed, like LBE seems to do (although for LBE the problem is worse, because it takes down the whole system). This is just another theory, maybe the Poweramp developer found a way to check for hooks or something.

@an0n981
Copy link
Contributor

an0n981 commented Feb 14, 2014

@M66B thanks for investing so much time and money trying to fix this. Looks like it's time to delete poweramp

@VorpalBlade
Copy link

Ah, so you would need to hook native code? I guess that makes sense, speaking of which I seem to remember reading that Cydia for Android could do that. In theory I guess that would allow you to better restrict applications? Now they can just bypass, say, the /proc restrictions if you allowed them to load a native library, right? Have you considered doing anything with Cydia?

Also: Any suggestions for music players with similar feature set to PowerAmp?

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

Normally I wouldn't and certainly not for a pro version of an app, but I suspected a problem in the rewritten content provider restrictions, which fortunately doesn't appear to be the case. This is good to know, so I can sleep again ;-)

@M66B
Copy link
Owner

M66B commented Feb 14, 2014

There is no real need to hook native code, although that could bring some new features, but probably at the price of significant incompatibility issues (there is a lot of variation in library versions, Android versions and nowadays also in processor architectures).

Cydia is not an option for a privacy tool, since it is not open source. In theory Xposed is easy to replace by another framework, like Cydia. XPrivacy is prepared for such a change as far as that can be prepared (it would require rewriting a small portion of the XPrivacy code, but it would require a lot of test work).

@M66B M66B closed this as completed Feb 14, 2014
@banderos101
Copy link

@M66B
"but it would require a lot of test work)."

To get something like xprivacy up and running with potential new tools at its disposal........would be worth it

edit
to clarify, if you meant user end, didnt mean it would be worth it if you "dropped everything in your life" in order to test this :)

@M66B
Copy link
Owner

M66B commented Feb 15, 2014

The minimum code to reproduce this issue is:

            Class<?> cpc = findClass("android.content.ContentProviderClient", null);
            for (Method method : cpc.getDeclaredMethods())
                if (method.getName().equals("query")) {
                    XposedBridge.hookMethod(method, new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        }

                        @Override
                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        }
                    });
                }

@yank555-lu
Copy link

I would suggest rating PowerAmp down to 1 star, if they take our money and break the app we paid for, maybe this would make them 'fix' this issue they created...

@paour
Copy link
Contributor

paour commented Feb 16, 2014

I'm not sure one-star reviews would be effective: they have many existing reviews, so the few negative reviews we can muster won't matter much.

In addition, from their point of view this is not a issue they created: it is due to a change in Xprivacy. We understand and support Marcel's decision and he has explained the context so PowerAmp can change the way they perform their verification. But their pace of development is pretty… deliberate, they'll need time. One these one-star reviews are posted, we'll have very little leverage.

Has someone reported this issue to them since Marcel concluded his investigation?

@yank555-lu
Copy link

I did, just a few hours ago, submitted a support request for both my Note 3 and Nexus 7.

Nonetheless, one-star rating is deserved from my point of view, I agree they need a way to protect themselves, but paying customers are entitled to be able to use the software they paid for (even if it's only a few €). Locking a software I legally bought and have been using is theft, no matter why it stopped working.

I work in IT and do development (for a living), but I just can't accept paying customers being unable to use the software they are entitled to using, not when the reason is a flawed copy protection system.

The same they need a way to protect themselves from being ripped off by cracked versions, we are entitled to protect our privacy, noone should have access to stuff like phone number, messages, emails etc. unless I allow it. And this kind of nonesense will only encourage people to not use legit versions, so it's pretty counterproductive.

Hence I'm rather unhappy right now, to place it mildly. And I don't use PowerAmp on a daily bases, mostly only when I travel or are on vacation, and I would have been really mad to find out about this once being abroad with no data connection (except expensive roaming) to install an alternative.

So just to be on the safe side, I just bought Rocket Player, no problem unlocking its paid features...

Let's sit and wait what will be of PowerAmp in the coming days/weeks.

JP.

@SanderGit
Copy link

Would it help to either ask Poweramp for a refund or to report the app as problematic to Google?

@paour
Copy link
Contributor

paour commented Feb 17, 2014

JP, your kernel for i9300 was the first I installed (sadly just before you wound it down) and I am just as furious at having to resort to pirated versions to be able to run software I paid for. I also write software for a living, and to me each 1-star review hurts, and I answer every message within hours.

But the bigger players don't think that way. PowerAmp has sold between 1 and 5 million licenses (at $4 a pop, excluding sales). Any change they make to appease our small band of privacy conscious users, they have to weigh against the potential repercussions on the vastly bigger sea of less technically proficient users.

Yep, let's sit and wait :-)

@slysuperb
Copy link

Here is a link to the issue on the Poweramp Forum.
At some point the creator has to react as more and more people start to complain.
http://forum.powerampapp.com/index.php?/topic/5735-xprivacy-and-licence-problem/

I love Xprivacy and no software on earth will keep me from using it!
If this means i have to fight to get my money back for Poweramp as the creator does not react to the endless problems with his Unlocker. Hell yeah, ill do it.

Its just crazy what companies and single devs force onto paying customers.
F*** them. I'm angry. I have paid for this app and i can't use it anymore, due to a poorly written Unlocker!

@yank555-lu
Copy link

I've also posted my point of view on their forum, I would encourage others to do the same, keep polite, but express you point of view.

And sorry to hijack this 'issue on your github' to 'fight' for the rights of running an app we paid for and which stopped working, while Xprivacy is no cause of the problem. Sorry for that.

JP.

@paour : My kernels are still up, but only on my forum.

@SanderGit
Copy link

@slysuperb They have been polite enough to refund the unlocker to me. I'm seeing this as a positive sign.

@maxmpz
Copy link

maxmpz commented Feb 17, 2014

Hello,
we've just released test build with workaround for this issue: http://forum.powerampapp.com/index.php?/topic/5726-xprivacy-issues/

Please let us know if it works for you.
Thanks!

@yank555-lu
Copy link

Confirmed working for me !

Thanx for the fix, JP.

@Cerberus-tm
Copy link

The developer/modeator fixed it really quickly, kudos to him!
Maxmp had this to say on the Poweramp forum:

"Posted Yesterday, 06:27 PM

"We installed Xprivacy, tested with Poweramp and added workaround. This is a build which works for us. Poweramp-build-549-arm-uni

"The issue was with extra arguments checking by either Xposed or Xprivacy for that query() method. This is incompatibility with existing Androids, and it hits apps which do such calls from JNI."

What do you think @M66B , has Maxmp found a way to circumvent Xprivacy? Or has he tamed his own app and made it behave "normally"?

@BackPacker007
Copy link

"We installed Xprivacy, tested with Poweramp and added workaround. This is a build which works for us. Poweramp-build-549-arm-uni"

@maxmpz: Where and how can I get this build? I am also a paying customer using XPrivacy.
Thanks & Regards

@yank555-lu
Copy link

By following the link he posted.

JP.

@yank555-lu
Copy link

@BackPacker007
Copy link

@yank555-lu: Thanks, did not see that link!

@BackPacker007
Copy link

The awful online-verification worked and Poweramp Pro is working now (how long without new online-verification-attempt?) But XPrivacy still says at every start that it's not compatible with the Poweramp Full Version Unlocker...

@an0n981
Copy link
Contributor

an0n981 commented Feb 18, 2014

@BackPacker007 update XPrivacy to at least version 1.99.46

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests