记一个frida调试瑞幸的过程

0x00 准备

  1. 通过pip安装frida
  2. 下载对应的frida-server到安卓端,进去运行server

    0x01 基本操作

  3. adb shell dumpsys activity top即可查看该app的包名
  4. frida-trace -U -i open com.lucky.luckyclient 调用ptrace附着在进程上进行调试,-p指定pid
  5. Frida-ps -U 列出安卓机器上运行的进程

    0x02 尝试使用Frida-unpack

  6. Frida-unpack,先将安卓机器里的libart.so拉出来到Mac上,一般目录是在/system/lib64下,然后通过nm libart.so| grep OpenMemory命令查看函数名,我这边看了是和脚本里一样的就不改了。
  7. clone过来后,修改openmemory.js里的路径改为对应的包名路径,这里要注意的是不要随意修改路径,可能会导致没权限写入,修改对应包名就行。

    1
    var file = new File("/data/data/com.lucky.luckyclient/dumps" + dex_size + ".dex", "wb")

    这里改成这样

  8. 执行命令:

    1
    frida -U -f com.lucky.luckyclient -l OpenMemory.js
  9. 可以看到hook在进行了,但是由于壳比较新,中途被检测到后强制中断失败了

    0x03 试试别的思路

  10. 尝试下载了历史版本2.6.0,发现是腾讯加固,使用上面的方式可以进行dumps
  11. 但是由于版本低,登录时获取不了短信,先不管他,试着用dex2jar逆向dex试试,发现成功转成jar
  12. 通过jd-gui一个个翻翻看在文件“dumps5046568-dex2jar.jar”中的com.lucky.lib.http2.c.class中找到了AES加密算法