知乎以及得到手机App与Server端的认证机制分析

抓包

采用Charles进行抓包

在分析得到App与Server端的交互时发现,几乎每个链接都会带一个sign参数,如果不传递这个参数的话,Server端会返回错误,那么这个sign参数是从哪里来的呢?这个时候就需要反编译一下APK来分析一下了。

逆向APK

逆向APK所用到的工具主要是Jadx,有时可能还需要Hopper Dissembler,下面会详细介绍

  • Jadx

    来自GitHub首页的介绍:Command line and GUI tools for produce Java source code from Android Dex and Apk files,非常简单易用,反编译的时候记得在配置里把反混淆勾上。

    反编译完成后,可以直接在jadx-gui里浏览源代码,也可以导入Android Studio里查看,再配合一些关键字用grep在命令行定位代码不要太爽啊~~~

在分析反编译出来的代码过程中发现,某个关键的函数找不到定义的地方,样子如下:

    public static native String keyBaseFromJNI();

一番搜索后发现,这种写法是调用了C或者C++写的底层库文件(比如so或者dll文件),这样做的原因显然是:1. 效率更高;2. 增加破解难度。下面就该反汇编大神出场了。

分析知乎客户端与Server认证机制时遇到一个签名算法HMAC,顺便把各种签名算法学习一下

签名算法

  • hmac-sha1
  • md5
  • sha1
  • 各种算法的优缺点

to be continued