Android Viber 协议注册机 Google Play Integrity 风控分析

Viber 版本 27.1.1.0

直入主题,下面是注册 Viber 账号时接口所提交的数据:

POST https://secure.viber.com/viber/viber.php?function=RegisterUser HTTP/1.1
User-Agent: Android
x-client-type: android
x-client-os: Android_10
x-client-version: 27.1.1.0
x-client-device: google
x-request-id: 1e7a3e2d-e741-46d2-b121-01a9ac91ee4a
x-client-language: zh
x-client-phone-cc: HK
Content-Type: application/x-www-form-urlencoded
Content-Length: 4994
Host: secure.viber.com
Connection: Keep-Alive
Accept-Encoding: gzip

XMLDOC=<RegisterUserRequest>
   <EUDID>
      <Signature></Signature>
      <Timestamp>10</Timestamp>
   </EUDID>
   <PreRegisterId>NjA1NTAwMTU2MDI2MzQ0MzkxOA==</PreRegisterId>
   <PhoneInputMethod>1</PhoneInputMethod>
   <PreRegCode></PreRegCode>
   <BuildType>1</BuildType>
   <Integrity>
      <Signature>CtUBARCnMGtcnGOtj5jBiIS4leZrDMNaDA7R8vvyGQVX7Ia27zbKAfM7DYIA0LL61wUqhcnievrFPgmPWOTGwJ_lsJWlzcUFiFU7hhN55Bz_148o-RU4wDStGYBU5QinZx6pJNIJWSg3sX89VrxSIYbNgVB_Dh6Uff8Lu7lPlvT7CCCaaoTIWSkZFy_cputTlaHJv4CwLnA73w5b8tQKHFCWDrJDi5CT54pmSFlVmflF6MZFtqbrIazxipevX2RPPnR8oQpSF9Y7ttk5mQnrijEc8bH2KskAGn8B9HXE2kkIwuAI9N0TQzN5ZHVHum3QsMfR-AW5jqp4b4YUSRQLyxVLjHgZSAbJv5x6hZv5k0dqX1shZ8behjxwb-9G1goZqgPzHuD3vjmsts14DeHo0uSOUOrs8lhhSnjCP4gdz24Fuc-yXdmv1pot15n6D1EsSronKev7xXvf</Signature>
      <Timestamp>1772093960274</Timestamp>
   </Integrity>
   <ConsentsData>{&quot;consents&quot;:[{&quot;type&quot;:1,&quot;status_code&quot;:1,&quot;extra_data&quot;:{&quot;consent_extra_data&quot;:[{&quot;number_of_received_calls&quot;:0,&quot;number_of_dialed_calls&quot;:0}]}},{&quot;type&quot;:2,&quot;status_code&quot;:1,&quot;extra_data&quot;:{&quot;consent_extra_data&quot;:[{&quot;number_of_users_as_numbers&quot;:2,&quot;total_ab_size&quot;:5}]}},{&quot;type&quot;:3,&quot;status_code&quot;:1,&quot;extra_data&quot;:{&quot;consent_extra_data&quot;:[{&quot;flag&quot;:&quot;Activate_System_Message_sendCodeSMS_Timer&quot;},{&quot;flag&quot;:&quot;Incomplete_Notification_1h&quot;},{&quot;flag&quot;:&quot;DeviceProperties&quot;},{&quot;flag&quot;:&quot;ResendSMS_Threshold_NewScreen&quot;},{&quot;flag&quot;:&quot;emailsCollectingConsent&quot;},{&quot;flag&quot;:&quot;permissionsFF&quot;},{&quot;flag&quot;:&quot;SayHi_Disclamer&quot;},{&quot;flag&quot;:&quot;countryFlag&quot;}]}}]}</ConsentsData>
   <ContinueAfterSmsExceed>0</ContinueAfterSmsExceed>
   <AdjustSource>{&quot;adjust_tracker&quot;:&quot;Google Ads ACI&quot;,&quot;adjust_campaign&quot;:&quot;Viber_ViberDating_PH_GA_Acquisition_FProfileCreation_F_28012026 (23502923199)&quot;}</AdjustSource>
   <DeviceProperties>{&quot;versionCode&quot;:1271010,&quot;manufacturer&quot;:&quot;Google&quot;,&quot;model&quot;:&quot;Pixel 4&quot;,&quot;fingerprint&quot;:&quot;google/flame/flame:10/QD1A.190821.007/5831595:user/release-keys&quot;,&quot;brand&quot;:&quot;google&quot;,&quot;supportedAbi&quot;:&quot;arm64-v8a, armeabi-v7a, armeabi&quot;,&quot;device&quot;:&quot;flame&quot;,&quot;hardware&quot;:&quot;flame&quot;,&quot;product&quot;:&quot;flame&quot;,&quot;networkConnectionType&quot;:&quot;Wifi&quot;,&quot;sensorAccelerometer&quot;:true,&quot;sensorGyroscope&quot;:true,&quot;sensorProximity&quot;:true,&quot;batteryLevel&quot;:100}</DeviceProperties>
   <OutboundSms>0</OutboundSms>
   <PhoneNumber>96587459</PhoneNumber>
   <PushToken>GCM:d_H_Lu3FSO6f-isLprudjT:APA91bH_Vl8Akj4z_mdoPKl3MQZqcoXpI57q6kP0bD4nDFQWy8glT0-FoHgOUwpo0K2fQH9q3-NSoJmcR204YkuUDpA9JXQ28Yp3nAQ7YZkPgpDqgpVP9AI</PushToken>
   <CountryIDDCode>852</CountryIDDCode>
   <UDID>b880b9477e6e64b143439cbe7a09cd6ca039b0e7</UDID>
   <DeviceType>Pixel 4</DeviceType>
   <Device>phone</Device>
   <DeviceManuf>google</DeviceManuf>
   <SystemVersion>10</SystemVersion>
   <System>Android</System>
   <Language>zh</Language>
   <ViberVersion>27.1.1.0</ViberVersion>
   <CC>cn</CC>
   <MCC></MCC>
   <MNC></MNC>
   <VoIP>1</VoIP>
   <MCCSim></MCCSim>
   <MNCSim></MNCSim>
   <MCCNetwork></MCCNetwork>
   <MNCNetwork></MNCNetwork>
   <NoHangup>0</NoHangup>
   <ReRegisterState>0</ReRegisterState>
</RegisterUserRequest>
字段名生成方式
PreRegisterId 随机生成(必须)
ConsentsData 通讯录统计信息(必须)
Integrity Google play integrity token(必须)
PushToken Google FCM 推送 token(实测非必须)
UDID 客户端生成的设备指纹,随机生成即可(必须)

整个注册过程中第一步就要过掉谷歌的完整性校验,确保手机能获得谷歌的 MEETS_DEVICE_INTEGRITY 等级,否则注册接口将返回 “Registration can’t be completed. Please try again later or contact [email protected]” 也就是 “激活失败”

只需获得 MEETS_DEVICE_INTEGRITY 等级即可,像下面这样就可以了:

什么是 Google play integrity ?

Play Integrity 是 Google 提供的一套设备与应用安全校验机制,属于 Google Play 服务的一部分。

它用于验证:

设备是否为官方认证设备、系统是否被篡改(如 Root、刷机、解锁)、应用是否来自官方渠道且未被修改、当前环境是否为真实设备而非模拟器或虚拟环境

Play integrity 完整性等级介绍:

1. MEETS_BASIC_INTEGRITY(基础级)
表示设备仅满足最基本的系统完整性要求。
可能是未通过 Google 认证的设备,或系统被修改、解锁、刷机。
安全等级最低,只能说明系统基本可运行。

2. MEETS_DEVICE_INTEGRITY(设备级)
表示设备为 Google 认证设备,通过 Android 兼容性测试(CTS),未 Root,系统未被篡改。
属于正常官方系统手机的标准状态。
安全等级中等,满足大多数应用需求。

3. MEETS_STRONG_INTEGRITY(强完整性,最高级)
在满足 DEVICE 要求的基础上,还具备硬件级安全支持(如 TEE、硬件加密密钥存储)。
Bootloader 未解锁,系统完整性最高。
安全等级最高,常用于银行、支付、DRM 等高安全场景。

参考文章:

https://developer.android.com/google/play/integrity/verdicts?hl=zh-cn

https://hackmd.io/@tom54699/SyKhT6VTgl/https%3A%2F%2Fhackmd.io%2F%40tom54699%2FHJ8bkn46ee

另外,这个 google play integrity token 生成接口不能频繁调用,viber 在后台是能看见每台设备近期调用次数的,短时间大量调用所注册出来的账号基本上都会被冻结,具体规则如下:

Android Viber 协议注册机 Google Play Integrity 风控分析》有2个想法

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注