背景动机

某社交应用的AI助手近期更新后,我一直对其对话逻辑的提示词机制充满好奇。趁着版本更新的机会,决定通过逆向工程探究其底层实现逻辑,特别是系统提示词(prompt)的生成机制。


技术尝试路径

一、网络抓包分析

1. Windows + Fiddler + Android 组合

  • 环境搭建
    通过Fiddler设置8888端口进行局域网监听,将安卓设备代理指向本机IP,成功完成HTTPS证书安装(需在系统设置-加密与凭证中手动安装CA证书)

  • 发现异常
    浏览器可正常抓包,但目标App始终提示网络连接异常,初步推测存在SSL Pinning等证书锁定机制

2. macOS + Wireshark + iOS 组合

  • 方案转换
    为简化操作改用Mac设备运行iOS版App,尝试通过Wireshark进行流量监控

  • 技术瓶颈
    HTTPS流量解密未果,常规SSLKEYLOGFILE配置方案未能生效,抓包结果均为加密数据

二、逆向工程突破

1. APK反编译

  • 工具选择
    使用jadx反编译工具进行逆向分析

  • 关键发现

    • 对话开场白基于用户标签动态生成
    • 上下文应答机制深度依赖聊天记录
    • 核心提示词未固化在客户端代码中

2. 框架解析

  • 混合架构
    发现ReactNative组件痕迹,通过修改.bundle文件后缀为.js可查看前端逻辑代码

三、对话注入尝试

  • 直接注入
    在对话框输入特殊指令尝试破解提示词模板

  • 防御机制
    后端存在严格的输入校验系统,在生成最终回复前会对异常内容进行过滤


经验总结

本次逆向工程虽未能完全破解提示词模板,但梳理出若干关键技术特征:

  1. 系统采用服务端动态生成模式,避免提示词本地暴露
  2. 客户端部署双重防御机制(SSL Pinning+输入过滤)
  3. 技术架构呈现混合开发特征(Native+ReactNative)

未来可考虑通过Hook框架绕过SSL证书锁定,或针对ReactNative bundle文件进行深度逆向分析,或许能发现新的突破口。