[Discussion] Google Pay Magisk Discussion Thread

Search This thread
Oct 12, 2014
11
0
I
Please confirm that you are actually using a @Displax USNF mod build... It's still not clear although it's usually needed for deviceIntegrity w/ A11+...

Next, consider and say what changes you made between having and loosing deviceIntegrity... Nb. Even when nothing is wrong with a setup any longer, clearing Google Play Services data is sometimes (often?) needed to restore deviceIntegrity etc... Some users have even needed to disable USNF module (official or forked), reboot, enable and boot again to fix...

Seems you did tick Google Play Services (gms) processes... See discussion above... Perhaps screenshot w/ MEETS_DEVICE_INTEGRITY missing was taken before rebooting (ie gms in denylist not yet removed and still breaking the PI fix)?... Could be an added module etc too... PW
I am now using a @Displax USNF mod build and also I think I lost device integrity when I went to add a card in Google Pay/Google Wallet maybe when it went to contacting your bank or when I clicked on set up payment card.
 

pndwal

Senior Member
That is one of the reasons I wrote it the way I did. 🙃
To try and prevent conficts.
Since USNF is not affected when the denylist is not enforced, just ignore it.
Let what ever the user adds to the list stay there, do not mess with it.

Before Allow modifying denylist without enforcement, the denylist was only accessible when enforcing.
To be precise, Enforce DenyList needed to be disabled to edit/modify it... I think it was accessible as Shamiko was already using it as a hidelist when not enforced...
The original command would only run when enforcing and error out when not enforcing.
Once the denylist was accessible when not enforcing, the command would run regardless of denylist status.
Ah... So no modifications were allowed before Allow modifying denylist without enforcement even at boot-time! (ie magisk --denylist DenyList Config CLI rm PKG [PROC] wouldn't work when not enforced?)... I hadn't understood this; thanks!
"Since there is no need or reason to remove gms from the Denylist when not enforcing, why remove it?​
Use a scalpel instead of a machete."​
Fair enough... I was considering having dual root hiding methods (Shamiko + inbuilt USNF) applied to gms could cause issues and be a reason... If removal was 'erroring out' as you state below, we would have had dual hiding occuring w/ Shamiko before Allow modifying denylist without enforcement without issues anyway...
The magisk --denylist status command returns true (0) when enforcing.
When not enforcing, the command returns an error (1).
Is second case really an error or just status?
In terminal at least now I don't see 'true (0)' or 'error (1)', only 'Denylist is enforced' and 'Denylist is not enforced' respectively...
The USNF module will load and run just fine even if you are enforcing the denylist and include gms.
The module will just be unloaded every time gms is called. 🙃
Ah, @kdrag0ns statement 'never load' needed qualifying... Thanks... Seems means 'never load in processes in (enforced) denylist' in reality... (dev speak / user speak?)

FWIW, I think denylist entries mean Magisk "reverts all changes it had done" (as you cite below) immediately, and also "denies further modifications" in these processes, ie it does 'never load' as he says in listed processes rather than needing to be "unloaded every time gms is called"... Praps I'm missing something here to... another fine point anyway...

So guess this still means CTS Profile Match should have been failing w/ gms in denylist... How did I miss this?(!)... Wait... I'll test again...

Yup, I'd missed it previously! 😬... w/ droidguard (attestation) process (com.google.android.gms.unstable) in denylist and DenyList enforced i get this:
IMG_20221211_150153.jpg
Nb. Selecting main gms process (com.google.android.gms) does not affect the result on my device... Unless droidguard process is added RN8T w/ A10 MIUI passes deviceIntegrity... Guess on A11+ devices where Magisk is not in /sbin com.google.android.gms in denylist may also break USNF...
When enforcing the denylist, every time a process in the list is called..
Magisk tries to "get out of the way" by unloading and reverting as much of itself as possible.
No modules will be active to the process while it is called.
Yup... But perhaps enforcing denylist means Magisk modifications 'are never loaded' in called/spawned processes rather than needing unloading as @kdrag0n parlance suggests...

This seems to be what John was implying by "Magisk denies further modifications [after a process is added to denylist] and reverts all changes it had done [before it was added]" also... - Insertions are mine, but I think I'm interpreting this correctly(?).
When not enforcing the denylist, Magisk has no use for the denylist.
It is about as important to Magisk as your grocery shopping list. 😝
Quite. 😁
Took me a little bit to find where I read the "get out of the way" part. 🙂
Seems like mine, your photographic memory needs developing... (😝)

... More to follow... PW
 
Last edited:
  • Like
Reactions: ipdev

pndwal

Senior Member
Continued...
State of Magisk: 2021
That being said, I strongly value the ability for apps to fully “opt-out” of modding, and it is important to me that Magisk is able to “get out of the way”, so a minor subset of the MagiskHide infrastructure will remain. Users will be able to assign a denylist of processes where Magisk denies further modifications and reverts all changes it had done. Magisk will not spoof/alter/manipulate any non-Magisk related signals or traces to circumvent any device state detection.
And this really sums up the whole need for
"magisk: Remove Play Services from DenyList
The Zygisk module will never load if GMS is in the DenyList..."

I did envisage issues with multiple hiding solutions operating on one process as covered above, but these haven't been demonstrated anywhere...

However while denylist does hide by virtue of 'Magisk getting out of the way', it actually prevents Magisk modifications from affecting selected processes at all, unlike. hiding solutions, so any Zygisk based injection of code into a forked zygote process that loads and runs a new app's code cannot occur for instance.

Since USNF's key function works this way it must fail when gms droidguard process is in (enforced) denylist:
This module uses Zygisk to inject code into the Play Services process and register a fake keystore provider that overrides the real one. When Play Services attempts to use key attestation, it throws an exception and pretends that the device lacks support for key attestation. This causes SafetyNet to fall back to basic attestation...
I believe that the various targeted prop changes needed to trigger hardware based verdict enforcement bypasses in S/N and PI also use Zygisk, so these functions will fail also...

I have to agree that it's the nature of denylist that necessitates the removal of at least the gms droidguard process from denylist (although I still think merely instructing users is to do this manually where needed is all that is needed and would actually cause less confusion)... 🙂

Anyway, thanks for helping me properly connect modification denial with the reason for magisk: Remove Play Services from DenyList commit. 👍
Only after..
  1. They make a post claiming they followed the instructions and it does not work.
    Normally adamant that it is the module's fault not their own. 🙃
😂

  1. Someone points out they are enforcing the denylist.
    Even though Shamiko notes that it is not working because denylist is enforcing. 🙃
🤣

I didn't mean to suggest that Shamiko users were dumb enough to enforce denylist... USNF would remove gms processes on next boot anyway...

Shamiko should really note somewhere that hijacked denylist really = hidelist, if only to create an excuse to fall about laughing at the confused gringo-user posts suddenly appearing in LSP TG threads everywhere...


  1. Someone points out they are enforcing the denylist and include gms in the denylist.
    "I have the USNF module installed and I still fail SafetyNet." 🙃
😭


dumb-and-dumber-mouth-spray-kxz9j7zat7o1u8s0.gif

😋PW
 
Last edited:
  • Like
Reactions: ipdev

pndwal

Senior Member
I am now using a @Displax USNF mod build and also I think I lost device integrity when I went to add a card in Google Pay/Google Wallet maybe when it went to contacting your bank or when I clicked on set up payment card.
That would be strange...

Did you do the wipe and try again?... disable USNF, reboots?... Removed all gms processes from denylist?...

Try the above again with ALL modules other than USNF_mod disabled... Ensure Zygisk = Yes in Magisk App home screen... PW
 
Last edited:
  • Like
Reactions: ipdev and 73sydney

ipdev

Recognized Contributor
Feb 14, 2016
2,546
1
5,159
Google Nexus 10
Nexus 7 (2013)
To be precise, Enforce DenyList needed to be disabled to edit/modify it... I think it was accessible as Shamiko was already using it as a hidelist when not enforced...

Ah... So no modifications were allowed before Allow modifying denylist without enforcement even at boot-time! (ie magisk --denylist DenyList Config CLI rm PKG [PROC] wouldn't work when not enforced?)... I hadn't understood this; thanks!
You originally had it backwards but, looks like you figured it out. 😁
Denylist had to be enabled (enforced) before you could edit/modify it.

Not sure when Shamiko actually became to be in existence. 🤔
or when I started using Shamiko. 🙃
The oldest release on GitHub is v0.3.0 and that is dated a few days after John committed the change for Magisk's denylist.
The Shamiko release notes make note of working around it. 🙃
3. Request Magisk 23017+, which allows us to strip Java daemon and change denylist regardless of enforcement status​

Is second case really an error or just status?
It is an error. 🙂
To complicate the answer.
The "status" in magisk's database when enforcing the denylist is 1.🙃

In terminal at least now I don't see 'true (0)' or 'error (1)', only 'Denylist is enforced' and 'Denylist is not enforced' respectively...
$? is the return (exit) value of the last command.
Code:
bonito:/ $ su
bonito:/ # 
bonito:/ # magisk --denylist status
Denylist is enforced
bonito:/ # echo $?
0
bonito:/ # magisk --denylist status
Denylist is not enforced
1|bonito:/ # echo $?
1
bonito:/ #
Notice the command line changes after checking when not enforcing.
It includes the exit value 1|bonito:/ # because the command did not return 0 (successful).


This is the reason why the if/then statement works.
if magisk --denylist status; then
Enforcing will return as true because the command exits with 0 (success).
Not enforcing will return as false because the command exits with 1 (error).
Otherwise this would have had to been more complicated. 🙃

Ah, @kdrag0ns statement 'never load' needed qualifying... Thanks... Seems means 'never load in processes in (enforced) denylist' in reality... (dev speak / user speak?)

FWIW, I think denylist entries mean Magisk "reverts all changes it had done" (as you cite below) immediately, and also "denies further modifications" in these processes, ie it does 'never load' as he says in listed processes rather than needing to be "unloaded every time gms is called"... Praps I'm missing something here to... another fine point anyway...

So guess this still means CTS Profile Match should have been failing w/ gms in denylist... How did I miss this?(!)... Wait... I'll test again...

Yup, I'd missed it previously! 😬... w/ droidguard (attestation) process (com.google.android.gms.unstable) in denylist and DenyList enforced i get this:
View attachment 5782191
Nb. Selecting main gms process (com.google.android.gms) does not affect the result on my device... Unless droidguard process is added RN8T w/ A10 MIUI passes deviceIntegrity... Guess on A11+ devices where Magisk is not in /sbin com.google.android.gms in denylist may also break USNF...
When enforcing the denylist, I use what was MagiskHide for gms.
This only works for devices that do not suport hardware Attesatation.
Code:
#define SNET_PROC    "com.google.android.gms.unstable"
#define GMS_PKG      "com.google.android.gms"

Code:
    // Add SafetyNet by default
    add_hide_set(GMS_PKG, SNET_PROC);

    // We also need to hide the default GMS process if MAGISKTMP != /sbin
    // The snet process communicates with the main process and get additional info
    if (MAGISKTMP != "/sbin")
        add_hide_set(GMS_PKG, GMS_PKG);

I set this as a function in my scripts if I need it.
Code:
set_default_list() {
    magisk --denylist add com.google.android.gms com.google.android.gms.unstable
    if [[ $(magisk --path) != /sbin ]]; then
        magisk --denylist add com.google.android.gms com.google.android.gms
    fi
}

Yup... But perhaps enforcing denylist means Magisk modifications 'are never loaded' in called/spawned processes rather than needing unloading as @kdrag0n parlance suggests...

This seems to be what John was implying by "Magisk denies further modifications [after a process is added to denylist] and reverts all changes it had done [before it was added]" also... - Insertions are mine, but I think I'm interpreting this correctly(?).
👍
Somethings still exist.
Seems boot-time changes like prop values and such are global and not reverted when a process on the denylist is called.
Devices that do not support Hadrware Attestation, you can pass SN/PI with prop changes during boot while including gms in the enforcing denylist.

Cheers. :cowboy:
 
Oct 12, 2014
11
0
That would be strange...

Did you do the wipe and try again?... disable USNF, reboots?... Removed all gms processes from denylist?...

Try the above again with ALL modules other than USNF_mod disabled... Ensure Zygisk = Yes in Magisk App home screen... PW
nvm i got past that stage
unfortunately i got the Couldn't finish card setup for pay contactless
to resolve this, you'll need to contact your bank
 

pndwal

Senior Member
You originally had it backwards but, looks like you figured it out. 😁
Denylist had to be enabled (enforced) before you could edit/modify it.
Nah... Didn't... I did simplify the overly complex sentence, but said the same thing. 😉 Knew this well as had to disable enforcement to configure denylist (now really hidelist) for Shamiko for a while...
Not sure when Shamiko actually became to be in existence. 🤔
I posted about Shamiko POC from a post by @nu11ptr in Alpha TG discussion (now hidden as "街角LycoReco的處刑之吻", and recently purged) on Dec 2, 2021:
https://xdaforums.com/t/magisk-general-support-discussion.3432382/post-86032113
... Posted re. first public release on Dec 4 here:
https://xdaforums.com/t/magisk-general-support-discussion.3432382/post-86042643
Originally needed to build Magisk with Shana's XHook clear commit or use Shana / Canyie Metagisk build... TJW merged this commit on Dec 14 2021 here:
https://github.com/topjohnwu/Magisk/pull/5010
making official Magisk compatible w/ Shamiko in Canary 23016 on Dec 15 2021... Essentially only Zygisk hiding then... (Of course there was likely discussion about this, and Shana was most likely already in John's Magisk Slack group; she certainly is now)... We can only speculate...

The Allow modifying denylist without enforcement commit was built in Canary 23017 on Jan 20 this year... vvb2060 made the PR: https://github.com/topjohnwu/Magisk/pull/5235/commits/e44a875345e1265a8455df85093208e746280147
...
or when I started using Shamiko. 🙃
Can't help you here... 😁
The oldest release on GitHub is v0.3.0 and that is dated a few days after John committed the change for Magisk's denylist.
The Shamiko release notes make note of working around it. 🙃
3. Request Magisk 23017+, which allows us to strip Java daemon and change denylist regardless of enforcement status​
... There was no GitHub release page till it was added to LSPosed public repos by Shana on 20 Jan this year, same date as Canary 23017 release... ; Earlier releases were all passed on from TG... GitHub page made things much easier in the face of XDA policing no TG as file source policy (we couldn't post proper links till then)...

So yes, Shamiko (a Canyie initiative) became mature for most users from 23017 but was compatible from 23016 (some tried it w/ 23015 before this too, but didn't succeed of course), so a number of members here were using it some 6 weeks before Allow modifying denylist without enforcement...
It is an error. 🙂
To complicate the answer.
The "status" in magisk's database when enforcing the denylist is 1.🙃


$? is the return (exit) value of the last command.
Code:
bonito:/ $ su
bonito:/ #
bonito:/ # magisk --denylist status
Denylist is enforced
bonito:/ # echo $?
0
bonito:/ # magisk --denylist status
Denylist is not enforced
1|bonito:/ # echo $?
1
bonito:/ #
Notice the command line changes after checking when not enforcing.
It includes the exit value 1|bonito:/ # because the command did not return 0 (successful).


This is the reason why the if/then statement works.
if magisk --denylist status; then
Enforcing will return as true because the command exits with 0 (success).
Not enforcing will return as false because the command exits with 1 (error).
Otherwise this would have had to been more complicated. 🙃
Thanks for clarifying / covering this.. I think I've got it now! 😝 ... It's complex enough all right...
When enforcing the denylist, I use what was MagiskHide for gms.
This only works for devices that do not suport hardware Attesatation.
Code:
#define SNET_PROC    "com.google.android.gms.unstable"
#define GMS_PKG      "com.google.android.gms"

Code:
    // Add SafetyNet by default
    add_hide_set(GMS_PKG, SNET_PROC);

    // We also need to hide the default GMS process if MAGISKTMP != /sbin
    // The snet process communicates with the main process and get additional info
    if (MAGISKTMP != "/sbin")
        add_hide_set(GMS_PKG, GMS_PKG);

I set this as a function in my scripts if I need it.
Code:
set_default_list() {
    magisk --denylist add com.google.android.gms com.google.android.gms.unstable
    if [[ $(magisk --path) != /sbin ]]; then
        magisk --denylist add com.google.android.gms com.google.android.gms
    fi
}
... Good stuff!...
👍
Somethings still exist.
Seems boot-time changes like prop values and such are global and not reverted when a process on the denylist is called.
You mean these still exist?... But the point is they're not 'unloaded' for a process/when a process is called either!

...But Zygisk modules that run code in a process's zygote (and other modifications?) must never load (as @kdrag0n states) for processes in the list...

Just saying I don't think this meant
The USNF module ... will just be unloaded every time gms is called. 🙃
or
... every time a process in the list is called..
Magisk tries to "get out of the way" by unloading and reverting as much of itself as possible...
... Rather, it seems @kdrag0n's statement that the module will 'never load' is correct for processes in (enforced) denylist'...

I think the statement that Magisk "reverts all changes it had done" applies immediately after a process is added to denylist (since it takes effect immediately, without reboot) rather than to unloading 'every time a process in the list is called'... 😶

Devices that do not support Hadrware Attestation, you can pass SN/PI with prop changes during boot while including gms in the enforcing denylist.
Yup...

... You don't need a good memory anyway... just a keen nose...

blind-mice.gif... Regards, PW
 
  • Haha
Reactions: ipdev

pndwal

Senior Member
Same issue with me? Did any solution found yet?
Of course... Read back here a bit...

SafetyNet is depreciated and Google Pay/Wallet has migrated to new Play Integrity API ... You'll need to be passing deviceIntegrity verdict...

Also, Play Protect certification remains dependant on old S/N API at least for devices w/o new separated Google Play Protect Service, so that doesn't indicate that PI deviceIntegrity is passing for these devices... Latest USNF module has just added fixes for devices that need bypasses for the extra prop based hardware attestation enforcement the Play Integrity API adds however...

🙂 PW
 

AndrzejDwo

Senior Member
May 26, 2018
1,179
932
Samsung Galaxy Note 3
Samsung Galaxy S5
I did tried to use it - Displax v2.3.1-MOD_2.1. With it, the message box 'device does not meet security requirements...' does not appear anymore. However, in menu -> Tap to pay setup, there is still a message "Phone does not meet security requirements'
you would have to describe your full setup if you want people to be able to help you. which magisk you use, if deny list is enforced and gpay added into the list, if your device meets basic integrity etc etc etc
 

BesoC

Senior Member
Dec 29, 2007
205
39
Tbilisi
you would have to describe your full setup if you want people to be able to help you. which magisk you use, if deny list is enforced and gpay added into the list, if your device meets basic integrity etc etc etc
By all means.
  • Phone is OnePlus 6T, RiceDroid 10.1, build date: January 17th, Android 13.
  • Magisk 25.2, hidden and renamed with following modules:
Screenshot_20230122-200938_Magman.png
Screenshot_20230122-200922_Magman.png

  • Zygisk with enforced DenyList of all google apps and services installed on the phone:
    Screenshot_20230122-200613_Magman.png
  • SE policy set to permissive
Anything else I've missed?
 
Last edited:

AndrzejDwo

Senior Member
May 26, 2018
1,179
932
Samsung Galaxy Note 3
Samsung Galaxy S5
Anything else I've missed?
you missed play integrity check result. the other thing is that you have too many apps on deny list imo, this might result with the opposite result than expected, also you don't need magisk hide props when you use usnf mod by displax, and the last but not least - would be good to switch to ENFORCING SE LINUX if possible, i never tried to setup Gwallet on permissive tbh.

cheers
 
  • Like
Reactions: pndwal and zgfg

pndwal

Senior Member
By all means.
  • Phone is OnePlus 6T, RiceDroid 10.1, build date: January 17th, Android 13.
  • Magisk 25.2, hidden and renamed with following modules:
View attachment 5817067View attachment 5817073
  • Zygisk with enforced DenyList of all google apps and services installed on the phone:
    View attachment 5817055
  • SE policy set to permissive
Anything else I've missed?
Yup... Try standard setup; remove ALL things Google from denylist other than G Pay/Wallet and try official 2.4.0 again... remove MHPC also...

AFAIK, PI deviceIntegrity cannot pass w/ selinix set to permissive.. Just don't do that!!! (At least say why you want/have that.)

Or is permissive selinux set by ROM?... Nb. permissive allows Devs to troubleshoot/fix major issues with a ROM and bypasses many of them... ROMs released w/ permissive set should be considered insecure, experimental and unsuitable for daily use...

Check have PI deviceIntegrity in Play Integrity API Checker; if so it's job done... Or move back to @Displax mod/fork...

Nb. Even when nothing is wrong with a setup any longer, clearing Google Play Services data is sometimes (often?) needed to restore deviceIntegrity etc... Some users have even needed to disable USNF module (official or forked), reboot, enable and boot again to fix...

Clearing Play Store data and/or Play Protect Services data if it exists (A12+?) may also be needed to restore Play Protect 'Device is certified' in Play Store Settings, About... This will affect whether Google Pay and other apps calling S/N or PI APIs appear in the Store

Once PI deviceIntegrity is restored / passing, Google Pay/Wallet security requirements may pass again after some days (could take a week!) if simply left... Clearing Google Play Services and Google Pay/Wallet data will fix this immediately but you will need to set up cards again... Nb. Be sure to reboot immediately after clearing Google Pay/Wallet data (before opening app for first time) to avoid issues persisting (eg. app works but Activity list fails to populate)...

🤠 PW
 
Last edited:

BesoC

Senior Member
Dec 29, 2007
205
39
Tbilisi
Yup... Try standard setup; remove ALL things Google from denylist other than G Pay/Wallet and try official 2.4.0 again... remove MHPC also...

AFAIK, PI deviceIntegrity cannot pass w/ selinix set to permissive.. Just don't do that!!! (At least say why you want/have that.)

Or is permissive selinux set by ROM?... Nb. permissive allows Devs to troubleshoot/fix major issues with a ROM and bypasses many of them... ROMs released w/ permissive set should be considered insecure, experimental and unsuitable for daily use...

Check have PI deviceIntegrity in Play Integrity API Checker; if so it's job done... Or move back to @Displax mod/fork...

Nb. Even when nothing is wrong with a setup any longer, clearing Google Play Services data is sometimes (often?) needed to restore deviceIntegrity etc... Some users have even needed to disable USNF module (official or forked), reboot, enable and boot again to fix...

Clearing Play Store data and/or Play Protect Services data if it exists (A12+?) may also be needed to restore Play Protect 'Device is certified' in Play Store Settings, About... This will affect whether Google Pay and other apps calling S/N or PI APIs appear in the Store

Once PI deviceIntegrity is restored / passing, Google Pay/Wallet security requirements may pass again after some days (could take a week!) if simply left... Clearing Google Play Services and Google Pay/Wallet data will fix this immediately but you will need to set up cards again... Nb. Be sure to reboot immediately after clearing Google Pay/Wallet data (before opening app for first time) to avoid issues persisting (eg. app works but Activity list fails to populate)...

🤠 PW
you missed play integrity check result. the other thing is that you have too many apps on deny list imo, this might result with the opposite result than expected, also you don't need magisk hide props when you use usnf mod by displax, and the last but not least - would be good to switch to ENFORCING SE LINUX if possible, i never tried to setup Gwallet on permissive tbh.

cheers
OK.
  • Removed MHPC from magisk modules
  • Removed everything from denylist except Google Wallet
  • Set SELinux to enforcing - I set it to permissive earlier because of Viper4AndroidFX
  • Reboot
Still PI checker shows red cross for MEETS_STRONG_INTEGRITY
 

AndrzejDwo

Senior Member
May 26, 2018
1,179
932
Samsung Galaxy Note 3
Samsung Galaxy S5
OK.
  • Removed MHPC from magisk modules
  • Removed everything from denylist except Google Wallet
  • Set SELinux to enforcing - I set it to permissive earlier because of Viper4AndroidFX
  • Reboot
Still PI checker shows red cross for MEETS_STRONG_INTEGRITY
that's normal and gwallet should work
 

Attachments

  • Screenshot_20230122_184125_Play Integrity API Checker.jpg
    Screenshot_20230122_184125_Play Integrity API Checker.jpg
    135.9 KB · Views: 24
  • IMG_20230122_184407_944.jpg
    IMG_20230122_184407_944.jpg
    62.7 KB · Views: 27
  • Like
Reactions: ipdev and BesoC

pndwal

Senior Member
OK.
  • Removed MHPC from magisk modules
  • Removed everything from denylist except Google Wallet
  • Set SELinux to enforcing - I set it to permissive earlier because of Viper4AndroidFX
  • Reboot
Still PI checker shows red cross for MEETS_STRONG_INTEGRITY
Perfect!...

I didn't say you need strongIntegrity... When Google/banks start enforcing that it'll be a sad day for modders... Also, customers using any device w/ A7 or less + many modern OnePlus etc w/ broken keymaster will be collateral damage... deviceIntegrity is what you need ATM as stated... PW
 
  • Like
Reactions: ipdev and BesoC

Top Liked Posts

  • There are no posts matching your filters.
  • 63
    The new Google Play services update caused this.

    Temporary workaround:

    1. Disable Google Pay/Find My Device as Device Administrators in Settings > Security & location > Device Administrators.

    2. Search "Google Play services" in the Settings search bar.

    3. Press the three dots and press "Uninstall previous updates".

    4. Download this update - https://www.apkmirror.com/apk/google-inc/google-play-services/google-play-services-14-7-99-release/
    Pick your needed edition (arm or arm64, etc.), download it and install it.

    5. Disable Background data access for Google Play Services and Google Play in their respective App Info pages.

    6. Download Google Pay from the Play Store.

    7. Set up your cards. Enjoy!

    Never EVER update Google Play services manually, until a Magisk update is available that bypasses the upgraded SafetyNet. Note that Google Play services is responsible for adding/verifying the card, not the Google Pay app! Hence why there seems to be an overlay when adding a card/verifying an existing one.

    Tested Google Pay versions:

    2.79.x-2.83.235070858 - working

    Tested Google Play services versions:

    14.7.99, 16.0.86 - working with Magisk 18.1

    14.8.49-16.x- working with Magisk 18.2 Canary
    34
    This thread is inspired by the PoGo Magisk discussion thread. It's meant to keep the clutter of "Google Pay doesn't work" posts out of the main Magisk threads.

    Please use this to discuss issues with Google Pay and possible solutions.


    There's a working solution here:
    https://xdaforums.com/t/magisk-module-universal-safetynet-fix-2-3-1.4217823/post-87198517


    For general tips on first getting SafetyNet to pass fully, check here:
    https://www.didgeridoohan.com/magisk/MagiskHide#hn_SafetyNet
    29
    Ok. I tried this and it worked on gms 17.1.22, allowing one to add cards and pay in store. Warning YMMV, but this is the process I did to get this working. One caveat is that Google pay does not register the "recent transactions" on the Google pay app. Another caveat is that I suspect users will have to reverse some step if gms is updated and then reapply, but this still needs to be confirmed

    Without further ado, here is my process:

    1) download a SQL database editor. I used

    https://play.google.com/store/apps/details?id=com.tomminosoftware.sqliteeditor&hl=en_US

    2) download a terminal emulator program. I used terminus but any terminal emulator should work.

    3) make sure Google pay is forced close, if it is open.

    4) open SQL editor. Navigate to /data/data/com.google.android.gms/databases

    5) open dg.db

    6) change any value that lists "attest" in the name (first column) to 0 in the third column. Mine was showing a value of 10 in the third column for each of these values. (Column c for sqlite databse editor I used)

    7) open the terminal emulator.

    8) get root access (su)

    9) cd /data/data/com.google.android.gms/databases

    10) type: chmod 440 dg.db
    This makes dg.db read only (for owner and group, and no access for world.)

    11) reboot

    I suspect when gms is updated, one will have to go back to steps 10 and 11 and chmod 660 dg.db to allow new keys to be written to the database, and then go back and redo all these steps to reset the attestation values back to 0.

    If there is still an error, verify in sqlite database editor that all attest release keys values in dg.db are 0 when dg.db is read only (owner and group).

    Again, YMMV but this worked for me, so I give it back to the community now.

    Edit: recent activities did show up soon afterwards for the payment method.

    Cheers,
    B.D.
    28
    The app is finally public! (thanks Google for taking a week to approve this 🤦)
    I made it beta testing since I haven't tested it on much devices. If you find any problem, please open an issue here and I'll take a look at them once I return from vacation.


    Source code:

    If you are curious, the possible outcomes I've seen are:
    • 3 ticks (unrooted samsung)
    • tick/tick/x (unrooted redmi note 4 with unlocked bootloader)
    • x/tick/x (my rooted a11 op7t)
    23
    UPDATE 1/8/2022
    This app is officially discontinued in favor of a new app I published on Play Store. Read more here:

    ====================
    ORIGINAL MESSAGE:

    I just made this simple app which tells you if your device passes the new Play Integrity API (which is presumably what Google Pay and Play Store use to detect root now). If you don't trust random apks from the internet feel free not to use this. I'll upload the source code at a later time since it's very junk now (probably on github).
    You can use it to play around and see if you manage to get it to pass without having to mess with Google Pay. There are screenshots of the 2 possible outputs (pass screenshot is from an online emulator).
    Also I didn't test it much since I don't have many devices that can pass. Hope it works fine 🤞

    Hope this helps someone find a solution :)

    EDIT:
    Here is a quote from Google of what exactly "Does not meet device integrity" mean:
    The app is running on a device that has signs of attack (such as API hooking) or system compromise (such as being rooted), or the app is not running on a physical device (such as an emulator that does not pass Google Play integrity checks).
    ...
    If you are having problems with your testing device meeting device integrity, make sure the factory ROM is installed (for example, by resetting the device) and that the bootloader is locked.