记一次搜狐邮箱App登录签名获取

折腾这个东西源于登录搜狐邮箱APP得10000积分;然后秉着瞎搞的精神折腾了一番!

手机抓包

手机上抓包得知,登录需要两个步骤:

  1. post请求https://m.mail.sohu.com/app-auth/pre,获取authToken
  2. 得到authToken后,再post请求https://m.mail.sohu.com/app-auth/login登录

login接口的请求中,各提交参数里唯独一个签名不知道怎么得到的!原本以为签名实在源码内能找到,就用dex2jar获取源码文件,再查找签名的流程!怎知怎么查都查不出一点东西来!

无意间从下载软件网站中得知搜狐邮箱的应用包名为:com.sohu.mail.client.cordova;原来是一个用Cordova打包的Webview网站!!那么要获取到签名逻辑,就得在线调试App!

apktool获取资源文件修改属性

先使用apktool获取到app的资源文件,在AndroidManifest.xml<application>中添加允许在线调试android:debuggable="true"属性;添加完后大概是这样的!

<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:name="com.adobe.phonegap.push.PushApplication" android:supportsRtl="true">

然后再用apktool重打包回APK;安装到手机后,提示解析包错误!

搜索一番,原来是APK未签名的缘故!

dex2jar、apktool使用教程

APK签名

签名涉及到JAVA的keytooljarsigner的使用;参考文章:APK签名

在线调试

电脑在线调试安卓应用参考文章:电脑在线调试安卓应用
在线调试后,发现所有的业务逻辑都在bundle.umd.js上!!

签名过程

//签名的四个关键函数
authSign() // 签名,函数内需要两个常量,APPID = "1001", APPCODE = "1744dfedebae44d1b8d58ae246bf16b4"
SecurityService.getInstance().computeHash() //MD5加密
CommonAuthService.prototype.login // 登陆
CommonAuthService.prototype.signIn // 登陆签名前获取参数准备

最终按流程走了一番,成功获得了签名,再测试登录也通过!

标签: none

添加新评论