OUYA games that cannot be unlocked

revision b0f6638e12dea92e04996aac4ba7c8bff02b1677

raw

README.rst

Final Fantasy 3

Crashes on startup when XPosed modules are loaded.

http://ouyaforum.com/showthread.php?10047-Final-Fantasy-III-Not-Launching

Luckily for others, I've done extensive research and I have found that it is not the root access itself which is not compatible with FF3, it is the activation of an Xposed Framework module.

So, if you're are rooted, have Xposed Framework installed and want to play Final Fantasy 3, just go to Xposed installer, deactivate all modules and reboot. You won't lose your root access and the game will launch just fine.

https://forum.xda-developers.com/xposed/framework-xposed-rom-modding-modifying-t1574401/page170#1700

To summarize: A strange native library in FF seems to get all /data/app/*-?.apk entries from the memory mapping file and tries to clear the data for them. Why? I don't know what this should be good for. I assume it targets the app itself, but why does it go such a complicated way? Why is the library obfuscated (the others aren't)? The best explanation I could think of was that it wants to clean up previous versions, but then I discovered that it doesn't clean for its own apk... so I have no idea.

After spending 2.5 hours looking at this, I don't think I have any chance or need to fix something in my code. I can't avoid that the modules are in the memory, I couldn't even unload them if I wanted to. Sorry, but it seems that you need to disable Xposed and reboot to play. Or ask the vendor to fix their code, there is no reason to clear data for foreign packages - but I'm not sure if they will listen to it.

https://forum.xda-developers.com/xposed/framework-xposed-rom-modding-modifying-t1574401/page620#6200

I think FF is looking for tools which manipulate the game data (of FF). Basically FF is a RPG so (especially in PC) people will write some "External tools" which manipulate or simulate inputs (like you type keyboard super fast) to get level up easier...

Maybe FF has a list of what tools to looking for, or just looking for certain suspicious activities. XPosed modules has full potential to do this (since they are also in FF's memory space) so that's why FF just bail out after detecting this....

https://forum.xda-developers.com/xposed/framework-xposed-rom-modding-modifying-t1574401/page187#1869

In case anyone is interested, I use XPrivacy (using Xposed Framework ironically) to circumvent this issue.

I allowed the following permissions only

  • Identification
  • Internet
  • Network
  • External storage (for the data cache)

You will be able to play it. It may work the same for Chaos Rings series as well.

https://forum.xda-developers.com/xposed/xposed-faq-issues-t2735540#4

Symptom: If you have activated Xposed and any module, some Square Enix games (e.g. Final Fantasy) and Puzzles & Dragons don't start anymore.

Background: I have spent several hours analyzing this issue. Here are my findings: http://forum.xda-developers.com/show...postcount=1701

Solution: I don't think I will be able to fix this. Some users reported that it's working after converting Xposed and modules to system apps (but I didn't test it and you have to do this after every update). Otherwise, you could press the "uninstall" button in the Xposed Installer, reboot, play the game, afterwards press the "install/update" button and reboot again.

Shadowgun

  • One of the few games that actually compare the gamer UUID in the receipts with the current gamer's UUID and notices if they do not match
  • Calls its own license server: http://madfingerdatastore.appspot.com/shadowgun/appLicensingOuya
    • this one does not exist anymore, gives a 404
    • Error message when restoring purchases: "Checking purchase failed. Please check your internet connection and try later."

No receipt checks

Games that do not check previously purchased products on startup and do have no way to sync purchases:

  • Giana Sisters
  • God of Blades

They can be unlocked on a dynamic server, not a static one.

raw

final-fantasy-3.log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
I/ActivityManager(  348): Start proc com.square_enix.android_OUYA.FFIII for activity com.square_enix.android_OUYA.FFIII/com.square_enix.FFIII_J.MainActivity: pid=1691 uid=10047 gids={3003, 1028}
I/dalvikvm( 1691): Turning on JNI app bug workarounds for target SDK version 13...
D/dalvikvm( 1691): Trying to load lib /data/data/com.square_enix.android_OUYA.FFIII/lib/lib__57d5__.so 0x41e4dbe8
D/Xposed  ( 1705): Starting Xposed binary version 50, compiled for SDK 16
D/Xposed  ( 1705): Phone: OUYA Console (OUYA), Android version 4.1.2 (SDK 16)
D/Xposed  ( 1705): ROM: JZO54L-OUYA
D/Xposed  ( 1705): Build fingerprint: OUYA/ouya_1_1/ouya_1_1:4.1.2/JZO54L-OUYA/1427:user/test-keys
I/Xposed  ( 1705): -----------------
I/Xposed  ( 1705): Added Xposed (/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar) to CLASSPATH.
D/AndroidRuntime( 1705): 
D/AndroidRuntime( 1705): >>>>>> AndroidRuntime START de.robv.android.xposed.XposedBridge <<<<<<
D/AndroidRuntime( 1705): CheckJNI is OFF
D/dalvikvm( 1705): Trying to load lib libjavacore.so 0x0
D/dalvikvm( 1705): Added shared lib libjavacore.so 0x0
D/dalvikvm( 1705): Trying to load lib libnativehelper.so 0x0
D/dalvikvm( 1705): Added shared lib libnativehelper.so 0x0
D/Xposed  ( 1705): Using structure member offsets for mode WITH_JIT
I/Xposed  ( 1705): Found Xposed class 'de/robv/android/xposed/XposedBridge', now initializing
I/ethernet( 1705): Loading ethernet jni class
I/Xposed  ( 1705): -----------------
I/Xposed  ( 1705): Jan 25, 2020 6:04:47 PM UTC
I/Xposed  ( 1705): Loading Xposed v47 (for com.android.commands.pm.Pm)...
I/Xposed  ( 1705): Loading modules from /data/app/de.cweiske.ouya.plainpurchases-2.apk
I/Xposed  ( 1705):   Loading class de.cweiske.ouya.plainpurchases.PlainPurchases
D/AndroidRuntime( 1705): Calling main entry com.android.commands.pm.Pm
D/AndroidRuntime( 1705): Shutting down VM
W/dalvikvm( 1705): threadid=1: thread exiting with uncaught exception (group=0x41521300)
E/JavaBinder( 1705): Unknown binder error code. 0xfffffff7
E/AndroidRuntime( 1705): *** FATAL EXCEPTION IN SYSTEM PROCESS: main
E/AndroidRuntime( 1705): java.lang.SecurityException: 1705 does not have permission:android.permission.CLEAR_APP_USER_DATA to clear datafor process:de.cweiske.ouya.plainpurchases
E/AndroidRuntime( 1705):        at android.os.Parcel.readException(Parcel.java:1425)
E/AndroidRuntime( 1705):        at android.os.Parcel.readException(Parcel.java:1379)
E/AndroidRuntime( 1705):        at android.app.ActivityManagerProxy.clearApplicationUserData(ActivityManagerNative.java:2889)
E/AndroidRuntime( 1705):        at com.android.commands.pm.Pm.runClear(Pm.java:1126)
E/AndroidRuntime( 1705):        at com.android.commands.pm.Pm.run(Pm.java:116)
E/AndroidRuntime( 1705):        at com.android.commands.pm.Pm.main(Pm.java:75)
E/AndroidRuntime( 1705):        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
E/AndroidRuntime( 1705):        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
E/AndroidRuntime( 1705):        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:135)
E/AndroidRuntime( 1705):        at dalvik.system.NativeStart.main(Native Method)
I/Process ( 1705): Sending signal. PID: 1705 SIG: 9
E/AndroidRuntime( 1705): Error reporting crash
E/AndroidRuntime( 1705): android.os.RemoteException: Unknown binder error code. 0xfffffff7
E/AndroidRuntime( 1705):        at android.os.BinderProxy.transact(Native Method)
E/AndroidRuntime( 1705):        at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:3118)
E/AndroidRuntime( 1705):        at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:76)
E/AndroidRuntime( 1705):        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
E/AndroidRuntime( 1705):        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
E/AndroidRuntime( 1705):        at dalvik.system.NativeStart.main(Native Method)
D/Zygote  (  109): Process 1691 exited cleanly (1)
I/ActivityManager(  348): Process com.square_enix.android_OUYA.FFIII (pid 1691) has died.
 

History