microg / microg/GmsCore

Unimplemented operation causes API spam to /androidantiabuse.

Open
#2,584 1 comment 7 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Java
Stars
14.6k
Forks
3.2k
Avg merge
12d 11h
Merged PRs (30d)
4

Description

Describe the bug

10-16 03:43:28.315 23563 23672 W DGFallback: create(yt_player_ias)
10-16 03:43:28.315 23563 23672 W DGFallback: kotlin.NotImplementedError: An operation is not implemented: Not yet implemented
10-16 03:43:28.315 23563 23672 W DGFallback:    at org.microg.gms.droidguard.core.FallbackCreator.create(FallbackCreator.kt:31)
10-16 03:43:28.315 23563 23672 W DGFallback:    at org.microg.gms.droidguard.core.FallbackCreator.create(FallbackCreator.kt:21)
10-16 03:43:28.315 23563 23672 W DGFallback:    at org.microg.gms.droidguard.core.DroidGuardHandleImpl.snapshot(DroidGuardHandleImpl.kt:86)
10-16 03:43:28.315 23563 23672 W DGFallback:    at com.google.android.gms.droidguard.internal.IDroidGuardHandle$Stub.onTransact(IDroidGuardHandle.java:84)
10-16 03:43:28.315 23563 23672 W DGFallback:    at android.os.Binder.execTransactInternal(Binder.java:1280)
10-16 03:43:28.315 23563 23672 W DGFallback:    at android.os.Binder.execTransact(Binder.java:1244)

I am also seeing these logs:

10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl: Error during handle init
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl: org.microg.gms.droidguard.core.BytesException: java.lang.reflect.InvocationTargetException
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at org.microg.gms.droidguard.core.HandleProxy.<init>(HandleProxy.kt:26)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at org.microg.gms.droidguard.core.HandleProxyFactory.createHandleProxy(HandleProxyFactory.kt:178)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at org.microg.gms.droidguard.core.HandleProxyFactory.createHandle(HandleProxyFactory.kt:40)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at org.microg.gms.droidguard.core.DroidGuardHandleImpl.initWithRequest(DroidGuardHandleImpl.kt:50)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at com.google.android.gms.droidguard.internal.IDroidGuardHandle$Stub.onTransact(IDroidGuardHandle.java:100)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at android.os.Binder.execTransactInternal(Binder.java:1280)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at android.os.Binder.execTransact(Binder.java:1244)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl: Caused by: java.lang.reflect.InvocationTargetException
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at java.lang.reflect.Constructor.newInstance0(Native Method)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at org.microg.gms.droidguard.core.HandleProxy.<init>(HandleProxy.kt:24)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    ... 6 more
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl: Caused by: java.lang.RuntimeException: Stored in static init
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at com.google.ccc.abuse.droidguard.DroidGuard.<init>(PG:21)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at com.google.ccc.abuse.droidguard.DroidGuard.<init>(PG:14)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    ... 9 more
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl: Caused by: java.lang.RuntimeException: During static init
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at com.google.ccc.abuse.droidguard.DroidGuard.<clinit>(PG:10)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    ... 9 more
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl: Caused by: java.lang.UnsatisfiedLinkError: Shared library "/data/user/0/com.google.android.gms/app_cache_dg/df99409f14f4904f83f90980b54acda69ae1261e/libd2AB9C144820C.so" already opened by ClassLoader 0x6a7(dalvik.system.DexClassLoader[DexPathList[[zip file "/data/user/0/com.google.android.gms/app_cache_dg/df99409f14f4904f83f90980b54acda69ae1261e/the.apk"],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64]]]); can't open in ClassLoader 0x7ff853b7386c(dalvik.system.DexClassLoader[DexPathList[[zip file "/data/user/0/com.google.android.gms/app_cache_dg/df99409f14f4904f83f90980b54acda69ae1261e/the.apk"],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64]]])
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at java.lang.Runtime.load0(Runtime.java:929)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at java.lang.System.load(System.java:1625)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at com.google.ccc.abuse.droidguard.DroidGuard.d(PG:193)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    at com.google.ccc.abuse.droidguard.DroidGuard.<clinit>(PG:1)
10-16 03:43:28.314 23563 23672 W GmsGuardHandleImpl:    ... 9 more
10-16 03:43:28.315 23563 23672 D GmsGuardHandleImpl: snapshot({challenge=a=6&a2=1&b=<string>&c=<number>&d=3&e=<string>&c5a=1&c5b=yt_player_ias&hh=<string>})

To Reproduce
Steps to reproduce the behavior:

  1. Play a video on YouTube
  2. YouTube expects a PoToken
  3. GmsCore replies performs a request to get the DroidGuard program when it should cache it instead

Expected behavior

GmsCore should cache the program.

Screenshots

Note that I am running a specific environment where I have modified YouTube for debugging purposes. The issue may originate from that, but it is highly likely not the cause of the problem:

https://github.com/user-attachments/assets/92254840-e836-4084-b6f9-5decbbb9c948

System
Android Version: 13

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with FallbackCreator.kt, HandleProxy.kt, HandleProxyFactory.kt, and DroidGuardHandleImpl.kt from the reported stack traces, then reproduce the YouTube playback flow. Trace why the DroidGuard program is fetched again and why the native library is opened through another class loader. Done means the program is cached without repeated /androidantiabuse requests or the unimplemented-operation error.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java, kotlin
Domain
api, mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.