安卓逆向解密-IDEA调试百姓网协议头加密分析
安装app到模拟器打开登录界面,账号密码登录 先抓包.......数据包:
POST http://www.baixing.com/api/mobile/user.login/ HTTP/1.1
Accept: text/xml,text/javascript,text/html
User-Agent: BaixingMobileApi
Content-Type: application/x-www-form-urlencoded
Accept-Language: zh-CN, en-us, en
Accept-Encoding: gzip
APP_VERSION: 6.0.1
UDID: 2b5a0e6907d8286a
User-Agent: com.quanleimu.activity/6.0.1;meizu;meizu;m2 note;5.1.1;720x1280;
BAPI-NONCE: 2b5a0e6907d8286a
BAPI-HASH: 65401c2efd81d0e6ffad1de12e01e1ed
BAPI-APP-KEY: api_androidbaixing
Host: www.baixing.com
Connection: Keep-Alive
Content-Length: 62
{"type":"mobile","password":"123456","identity":"15845454545"}
加密数据为:BAPI-HASH: 65401c2efd81d0e6ffad1de12e01e1ed
我们就要分析 BAPI-HASH加密 为签名算法,以往我们用jeb(逆向神器)进行反编译app调试,可这个app忒简单,jeb的话5分钟讲完了没了
在一方面,带大家(初学者,老鸟请绕路)认识另一款工具:IDEA,有一款插件为samli百度自行下载安装即可
首先我们用APPIDE或者Android Killer 进行反编译,效果如下......
反编译完成 我们进行关键字搜索,搜索完成发现就一处包含
双击进入来到这里
代码为:
const-string v7, "BAPI-HASH"
invoke-static {v0}, Lcom/baixing/tools/NetworkUtil;->getMD5(
这种代码第一次见的人可能比较懵逼,这就是samli语句,我们来理解下
const-string v7, "BAPI-HASH" const常量值为:"BAPI-HASH" 放到v7
invoke-static {v0}, Lcom/baixing/tools/NetworkUtil;->getMD5(
调用名为getMD5的静态方法,该方法在com/baixing/tools/NetworkUtil;类中getMD5(
getMD5 这个就是他的加密函数 我们在这里下段进行调试查看传递的值,打开IDEA
导入用appide反编译的项目 根据APPIDE的路径在IDEA中跟随到相同位置
在getMD5函数所在行下段进行调试 同时打开ddms
找到我们要调试的进程 选中 并查看端口8700
回到IDEA,工具栏-运行-Debug
依次选择
点击调试自动出现调试窗口,然后模拟器点击登录发现成功断下
此时停在当前处
当前数据就是将要进行md5的数据,但我们看他的数据类型是byte ,易语言就是字节集 那么他是以字节集类型传递进去的 只需要把这些数据已字节集形式拼接起来到文本就是明文,我们在进入到md5函数里看
发现他们的值是一样的,那么我们来转换一下
明文出现保存一下进行md5 IDEA恢复进程查看fd抓到的包进行对比
发现数据相同,ok,分析完毕
文中提到的工具可百度自行下载
本人已与百度达成战略合作关系,请任意使用百度搜索下载,不收取一分钱,23333333333.......
吾爱汇编论坛目前安卓内容较少,鼓励安卓分析,精华走一走~
与百度达成战略合作,厉害厉害厉害。。 果然厉害哦 楼主文章写的很好 我有个小疑问 能加下扣扣聊一下吗 感谢分享
楼主文章写的很好 多谢大佬分享 十分感谢大佬 积极评分,从我做起。感谢分享! 谢谢分享
页:
[1]
2