- 博客(13)
- 收藏
- 关注
原创 b站danmu 逆向还原
摘要:本文分析了B站弹幕接口返回的protobuf二进制数据结构,重点解析了DmSegMobileReply结构体及其嵌套的DanmakuElem和DmColorful子结构体。通过解码函数还原出各字段信息,包括弹幕发送时间(stime)、显示模式(mode)、字体大小(size)、颜色(color)、用户哈希(uhash)和文本内容(text)等。最后根据分析结果编写了对应的protobuf文件(bilibili.proto),实现了二进制数据到明文的完整转换过程。
2025-11-14 18:08:51
837
原创 微信小程序偏移量查找
摘要:通过IDA Pro分析flue.dll文件(版本16815),成功定位三个关键hook地址:1)LoadStartHookOffset位于0x2509690,通过查找AppletIndexContainer::OnLoadStart引用获得,其结构体偏移量为[1416,1360,16,488];2)CDPFilterHookOffset位于0x2E768D0,通过搜索SendToClientFilter交叉引用找到;3)ResourceCachePolicyHookOffset位于0x256A010,
2025-11-10 09:19:24
366
原创 fiddler 替换目标js文件
本文介绍了如何编写Fiddler匹配规则来替换易盾网站的核心JS文件。规则使用正则表达式匹配核心JS文件URL(http/https均可),包含不区分大小写等标记选项。匹配成功后,Fiddler会自动将请求重定向到替换文件路径。操作步骤包括设置匹配规则、测试验证以及刷新页面使规则生效。这种替换方法可用于前端调试或补丁开发等场景。
2025-11-07 16:15:01
294
原创 快手dm逆向
这个位置就是对数据protobuf 序列化操作了,同理d.decode()方法就是反序列化操作了。通过查找send 关键词找到如下位置,在当前位置断点后,可以拦截到第一次发送的content。可以看到,s 就是websocket的 send方法,一直跟栈下去。建立连接后客户端需要发送一条消息给服务器,后续才能收到弹幕消息。此时返回的数据是二进制的,需要反序列化成明文数据,继续跟栈下去。这个位置对返回的弹幕消息反序列化操作。不同消息类型对应相应的反序列化方法。先分析到这里,后续有时间再更新一下。
2025-11-07 16:13:22
112
原创 douyin 直播链接wss signature 签名加密
而a 是由字符串 ',live_id=1,aid=6383,version_code=180800,webcast_sdk_version=1.0.12,room_id=7356017459909888777,sub_room_id=,sub_channel_id=,did_rule=3,user_unique_id=7273342946015118860,device_platform=web,device_type=,ac=,identity=audience'
2024-04-10 16:08:19
3449
15
原创 iOS 和charles 抓包
6. 在手机设置--》通用--》关于手机--》证书信任设置, 勾选信任刚才安装的证书。4. 手机wifi连上局域网,wifi 设置手动代理,填写下面的ip 和端口。路径 proxy >> ssl proxying setting。地址下载证书,然后安装好证书,并到手机设置中信任证书。3.设置 ssl proxying setting。1. 安装charles后, 在本地先安装好证书。2. 配置charles 监听端口。路径 proxy >>7. 最终可以抓包了。
2024-02-29 11:36:41
1273
原创 模拟器+charles 抓包
4.3 移动到系统目录:cp /mnt/shared/Pictures/c4db6958.0 system/etc/security/cacerts。4.4 赋予权限:chmod 644 system/etc/security/cacerts/c4db6958.0。4.1 连接上安卓手机: adb shell, su 进入root用户(模拟器要开启root权限)安卓6.0 版本以上证书安装到用户凭据上抓不了包,需要安装到系统凭据上。工具:雷电模拟器9.0(安卓7.0), charles。
2024-01-03 14:39:47
2676
3
原创 android app beike 头部签名 authorization 逆向
objaction hook com.bk.base.router.ModuleRouterApi$MainRouterApi.getHttpAppSecret 这个方法,得到httpAppSecret 的值是"d5e343d453aecca8b14b2dc687c381ca"hook com.bk.base.util.bk.DeviceUtil.SHA1ToString方法 得知入参是上面的httpAppSecret 拼接接口参数进行sha1 加密的。4.2. 分析HttpAppId 的值。
2023-12-29 10:02:10
1208
1
原创 steam 接口的参数 protobuf 序列化与反序列化
这里的t 是个数组,是每一个没有数据的空结构加上game_id 组成的, this.k_nMaxBatchSize=250 是固定值,是取出数组的前250 位。(0,m.pA)(t, this.m_bUsePartnerAPI) 此代码是在 t.m_body.array 增加了语言和地区信息。t.Body().set_ids(i) ,上面分析的 t 是空的数据结构,i 是游戏的id 结构。首先看 t 的值是 s.gA.Init(l.eK) 生成的,生成一个还没有数据的空结构,包含m_bValid,
2023-11-20 18:22:16
653
1
原创 某多头部 Anti-Content 参数逆向
1.2 往上看e 值是回调函数传进来的值, Promise.resove().then() 这个是异步函数,.then()方法接收异步执行后的结果,分析 Promise.resove() 里面的方法 l, 进入L函数内部。2.1 看到 n(284) 猜到这个n 是加载器,是webpack 打包的代码, 进入n函数找到加载器位置。进入284 模块发现又调用了285 模块, 控制台输入 n.m[285],继续进入285 模块。找到加载器位置如下,发现这个js 文件是个执行函数,把整个js复制下来。
2023-09-06 10:22:51
2682
3
原创 某乎 头部“X-Zse-96“ 逆向
可以看到X-Zse-96 的值是 t2 + "_" + tO,t2 的值是固定的:2.0;tO 是 tT.signaturn 来的, 而tT 是由ed 函数生成的,te 是去除域名后的接口地址, tb 是固定值:'101_3_3.0', TE 是cookie d_c0的值:'AEDZztKUmhaPTmec9D8qO_3TWjL3a6xOB9c=|1681110900' 也是固定的。进入加载器后,此时的 l 函数就是加载器了,这个文件是自执行函数,整个文件复制下来。继续进入加密函数:此时是最终加密位置。
2023-08-11 09:00:43
1024
3
原创 某音直播弹幕数据爬取
发现s.toObject() 的数据是明文数据 ,此时我们可以此位置上方写一个websocket 的客户端,把明文数据发送到本地的websocket 服务端,这样服务端就可以源源不断地接收到弹幕消息了。进入bindClientMessage 方法后发现 r.toObject()的数据是服务端发送过来的,payload 数据是密文格式的,继续进入this.emit 方法找到明文数据。1. 分析:弹幕消息连接是websocket 协议的。开启服务端后,再打开直播,服务端就可以不断收到数据了。
2023-05-26 10:39:50
4434
9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅