记一次搜狐邮箱App登录签名获取
折腾这个东西源于登录搜狐邮箱APP得10000积分;然后秉着瞎搞的精神折腾了一番!
手机抓包
手机上抓包得知,登录需要两个步骤:
- post请求
https://m.mail.sohu.com/app-auth/pre
,获取authToken
- 得到
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未签名的缘故!
APK签名
签名涉及到JAVA的keytool
和jarsigner
的使用;参考文章:APK签名
在线调试
电脑在线调试安卓应用参考文章:电脑在线调试安卓应用
在线调试后,发现所有的业务逻辑都在bundle.umd.js
上!!
签名过程
//签名的四个关键函数
authSign() // 签名,函数内需要两个常量,APPID = "1001", APPCODE = "1744dfedebae44d1b8d58ae246bf16b4"
SecurityService.getInstance().computeHash() //MD5加密
CommonAuthService.prototype.login // 登陆
CommonAuthService.prototype.signIn // 登陆签名前获取参数准备
最终按流程走了一番,成功获得了签名,再测试登录也通过!