← 资料库索引 ← 个人博客 原始链接 ↗ 🔍
个人博客

某SDK注册风控逆向 原文标题:[原创]某SDK注册风控逆向

发表时间:(页面未标注)采集时间:2026-10-09 11:53:06来源:bbs.kanxue.com原文语言:zh状态:完整

内容概要总结

本文逆向某 APP 注册环节的风控。作者发现注册口风控严格:必须携带后台下发的设备 id(该下发协议必须请求成功才能继续注册),相关逻辑定位在 libdu.so 中。借助 AI 辅助,作者找到加密前的关键函数,其明文是一段包含大量混淆键名的 JSON 设备指纹(如 ubF 为设备 id,还有机型、网络、adb._tcp、WIFI、IP 等字段)。

核心结论:注册风控以「后台下发设备 id」为门槛,SDK 在 native 层把设备指纹序列化为 JSON 后加密上报。评论区有人指出这是某盟的 SDK,加密方式为 xor(zlib(设备指纹)),每个请求的 xor 秘钥不同但对同一请求固定,返回数据也用相同秘钥 xor;字段加密采用换位形式,并根据设备指纹中某数据的后三位 / 100 选择具体加密形式。

原文内容(原文即中文)

⚠ 说明:⚠ 逆向分析来源,仅作资料存档,其结论未经官方确认;文中字段名/算法为实现细节,可能随版本变化。

问答
CTF

排行榜
知识库
工具下载
峰会
看雪商城
证书查询

发表于:
2026-4-8 18:50

32295

[[原创]某SDK注册风控逆向](https://bbs.kanxue.com/thread-290710.htm)

CCTV果冻爽

最近分析某个 app时,发现注册口的风控特别严格。

  1. google注册必须是 @gmail.com后缀

注册时,携带了一个后台下发的设备 id,这个设备 id必须带上。也就是这个下发设备 id的协议必须请求成功,才能进行后续的注册。

直接搜索相关字符串,最后定位在了这个 sdk的代码中:

没错,就是 libdu.so. 至于这是哪个 sdk,懂的都懂。

现在 AI 这么先进了,我就直接让 AI 告诉我,最终加密前的函数是哪个:

很明显这是一个 json字符串,也就是加密前请求的关键参数,字符串形式如下:

{
"nAt": "2",
"ubF": "这里是设备 id",
"AYk": "CA305B:D678CB:120F1C",
"P1J": "CA305B:D678CB:120F1C",
"R37": "Xiaomi",
"R3d": "XXXX",
"DUv": "xxxx.xxxx.xxx",
"SAN": 30,
"Zrs": 341,
"EV2": "app版本字符串",
"AAA": "v1.0",
"BBB": "v1.0",
"3mS": "v8.8.0",
"2cO": "时间戳",
"GVp": "Organic",
"mIS": "<n?1>B9pm==8nn?CD;>oaAp;?k8o?m<8<?#!",
"sfOo": "ED71279",
"foO": ";O@Ao?m;Bq=l;m>",
"4VP": 5,
"bf7": "41007",
"JPd": "41007",
"J7w": 0,
"NoH": 1,
"wSK": "IP",
"DVp": "?=B<A0B@9>8<=>",
"9N2": ";;7",
"Bn2": "BD!=ABB@=<?7=@<",
"IPz": "agMgzXYY5A==",
"sj5K": "61EF187",
"jK5": ";Q!!;E;=;;AA;;Q;",
"JYD": 4,
"02P": "86,-1",
"7S2": {
"0": {
"txo": ".k#yy",
"Zne": "h!A9>9<=<7ABOE=qqCEOoECq?:?A<D!B+?:lo@pEBBp;E<pf",
"MCN": "i889<fBBC;:"
}
},
"iYB": {
"txo": ".k#yy",
"Zne": "h!A9>9<=<7ABOE=qqCEOoECq?:?A<D!B+?:lo@pEBBp;E<pf",
"MCN": "i889<fBBC;:",
"mch": "TTQb",
"AWo": ";;;;;<;;;;",
"8tS": 63959,
"Hsz": 63959
},
"z4e": 3,
"zpA": "WIFI",
"QQW": 1,
"2Lp": 0,
"B7G": {
},
"vuS": "A@n@o?8nm>m8n;mB!o?=AQ<?pp8@?>@8Bm@n",
"9be": 14,
"6yY": "1c0c42eda039a179b3b619b671b0c0c83a43b6d44d26a8951c167aa76e6fe7af",
"vG9": 0,
"gaR": ";",
"Nue": "=9DC=CBD9?9@",
"T5u": {
"_adb._tcp.": {
"0": "adb-ba20125,f:3",
"1": "adb-ba20125,IP:PORT"
},
"wrs": "-2",
"i": "0,58.248.99.72;"
},
"Kvk": "73D2D0E56AC213AC2731AF49C328769C",
"NAB": 1,
"UOv": ">B@A0D@;A<?<!=A=<@B",
"sCc": 1,
"uCM": {
"pnb": 2,
"I2Y": 1,
"LzC": 54,
"nF5": 100,
"fgm": 4003,
"YXM": 330
},
"Db2": -1,
"box": {
},
"h6Z": "APP名",
"cxX": 1
}

这个协议的返回内容包含设备 id,同样问了大模型后,我知道了解密后的数据:

传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

最后于 2026-4-8 20:07
被CCTV果冻爽编辑

,原因:

赞赏

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV12,RANK:550 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV3,RANK:20 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV4,RANK:40 )

在线值:

能力值:

( LV7,RANK:110 )

在线值:

能力值:

( LV1,RANK:0 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

能力值:

( LV2,RANK:10 )

在线值:

这个是某盟的SDK,我搞过,加密方式很简单的,xor加密(zlib压缩(设备指纹)),每个请求的xor秘钥都是不一样的,但是对应请求是固定的,返回的数据也是xor加密的,使用的xor秘钥是跟加密时一样的,至于设备指纹中的字段加密也很简单,好像是某种换位形式的不太记得了,不过字段加密有很多种形式,根据设备指纹中某个数据的后三位 / 100 来判断使用的字段加密形式

能力值:

( LV2,RANK:10 )

在线值:

  • [[原创]通过抢茅台学习 IOS 逆向分析](https://bbs.kanxue.com/thread-289881.htm)

26860

  • [[原创]某SDK搜集设备信息的快速逆向分析](https://bbs.kanxue.com/thread-289356.htm)

13468

  • [[原创]某APP设备风控分析及绕过](https://bbs.kanxue.com/thread-288034.htm)

38107

专注于PC、移动、智能设备安全研究及逆向工程的开发者社区

赞赏
验证码背景
验证码背景
验证码滑块
验证码滑块

我已同意
《看雪服务条款》
《看雪课程免责声明》

《看雪隐私政策》

验证码背景
(原页此图无独立图注)
验证码滑块
(原页此图无独立图注)

首次使用微信验证码登录,请绑定已有帐号。绑定后可一键登录,无需手机号和密码。

验证码背景
(原页此图无独立图注)
验证码滑块
(原页此图无独立图注)

首次使用微信验证码登录,请绑定已有帐号。绑定后可一键登录,无需手机号和密码。

求助问答申诉

举报此帖

申请推荐此帖

游客下载提示

文中图片(共 7 张)

原页未提供可定位位置的图片,按原页顺序附于文末;点击任意图片放大,再次点击或按 Esc 关闭。
验证码背景
(原页此图无独立图注)
验证码滑块
(原页此图无独立图注)
验证码背景
(原页此图无独立图注)
验证码滑块
(原页此图无独立图注)
放大预览