开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4820|回复: 8
收起左侧

[技术专题] 看郑州signature分析教程

[复制链接]

结帖率:100% (34/34)
发表于 2018-9-12 21:39:32 | 显示全部楼层 |阅读模式   江苏省泰州市
本帖最后由 lazy心宿 于 2018-9-12 21:51 编辑

拿到apk,国陆惯例,抓取请求

  1. POST http://mobile.xxxx.tv/kapp/m_login.php?appid=39&appkey=O5PaX031BTwDbY6H6b5KuSxYFVygui89&client_id_android=a891d3737aa370941af5988e059e98be&device_token=7f886d67b630fd32139daf28130862ae&_member_id=&version=1.0.4&app_version=1.0.4&app_version=1.0.4&package_name=com.hoge.android.kanzhengzhou&system_version=6.0&phone_models=Nexus5HTTP/1.1
复制代码
  1. X-API-TIMESTAMP: 1536742899112asJQht
  2. X-API-SIGNATURE:Y2Y2MWE2N2MxNTYxYzM5ZjJjZjVmZDZlMTRhMjc3MzliYzY2Y2EzYQ==
  3. User-Agent: Dalvik/2.1.0 (Linux; U; Android6.0; Nexus 5 Build/MRA58K) m2oSmartCity_266 1.0.0
  4. X-API-VERSION: 1.0.4
  5. X-AUTH-TYPE: sha1
  6. X-API-KEY: f7664060cc52bc6f3d620bcedc94a4b6
  7. Content-Type:application/x-www-form-urlencoded
  8. Content-Length: 129
  9. Host: mobile.xxx.tv
  10. Connection: Keep-Alive
  11. Accept-Encoding: gzip
  12. Cookie: SERVERID=fcbf3d63324e16d517214e160848ff32|1536742868|1536742798

  13. client_secret=111111&password=a123456&client_id=111111&client_id_android=a891d3737aa370941af5988e059e98be&member_name=18816645888
复制代码

使用jadx反编译apk,搜索X-API-SIGNATURE

1.png

看到协议头中的时间戳X-API-TIMESTAMP,使用的方法

  1. SecurityUtil.getRandomData(6);
  2.     public static String[] chars_array = newString[]{"0", "1", "2", "3","4", "5", Constants.VIA_SHARE_TYPE_INFO, "7",Constants.VIA_SHARE_TYPE_PUBLISHVIDEO, "9", g.al, "b","c", g.am, "e", "f", "g","h", g.aq, "j", "k", "l","m", "n", "o", "p", "q","r", g.ap, "t", "u",MttTokenProvider.URL_PARAM_ENCRYPT_VERSION, "w", "x","y", "z", "A", "B", "C",QLog.TAG_REPORTLEVEL_DEVELOPER, QLog.TAG_REPORTLEVEL_USER, "F","G", "H", "I", "J", "K", "L", "M","N", "O", "P", "Q", "R","S", NDEFRecord.TEXT_WELL_KNOWN_TYPE, NDEFRecord.URI_WELL_KNOWN_TYPE,"V", QLog.TAG_REPORTLEVEL_COLORUSER, "X", "Y","Z"};
  3.   public static String getRandomData(int num) {
  4.        long microsecond = System.currentTimeMillis();
  5.        StringBuilder charsbuilder = new StringBuilder();
  6.        for (int i = 0; i < num; i++) {
  7.            charsbuilder.append(chars_array[(int) (Math.random() * ((double)chars_array.length))]);
  8.        }
  9.        return microsecond + charsbuilder.toString();
  10.     }
复制代码

可以看出时间戳是在后面加上了6位的随机字符串

OK,回过头继续看协议头中的sign
2.png
可以看到,它是反射调用了com.xxx.android.jni.Utils类中的signature方法,OK,去类中看一看
3.png
可以看到signature是native方法,在m2o_jni这个so文件中
好,使用ida看看这个so

在ida中,查看导出函数表,搜索java
4.png
看到它是静态注册的verify方法,跟过去,并F5转换伪C看看
5.png
可以看到,它使用了sprintf函数进行了数据的拼装,再调用了sha1方法

但在函数的顶部,还有一条判断语句

if ( !is_initialised )

exit(1);

下面并没有用到这个初始化的值,为了方便自己写个同包名apk调用测试这个so,还是把这个判断干掉吧
6.png
OK,改掉之后,自己写个同包名的apk,进行调用调试,查看它sha1之前的数据拼装,对了,通过分析,可以知道它带入signature的两个参数是,版本号和协议头中的时间戳
那么本次带入的两个参数就是1.0.41536742899112asJQht
写apk调用修改过的so
7.png

打包apk,把修改过的so推送到这个包下的lib目标下

8.png
把抓取请求中的sign进行base64解码
  1. Y2Y2MWE2N2MxNTYxYzM5ZjJjZjVmZDZlMTRhMjc3MzliYzY2Y2EzYQ==
复制代码
解码得到

  1. cf61a67c1561c39f2cf5fd6e14a27739bc66ca3a
复制代码


可以看到与Toast弹出的结果一致
好了,数据对上,现在就开始调试
Ida调试so的过程就不写了,省略过程ing,直接看结果;

9.png

可以看到带入sha1的原文就是
  1. f7664060cc52bc6f3d620bcedc94a4b6&MkdtZXpoRU56NkRmSXFjNTlkdmV3MHpoT1UwbHFZbkc=&1.0.4&1536742899112asJQht
复制代码


本篇文章分析仅供学习交流,请勿用作违法用途,后果自负, 若有侵犯权益 联系我或论坛删除
长期接APP算法 脱壳 SO算法 等 手游/直播类/敏感违法类不碰.联系QQ:46660816




本帖被以下淘专辑推荐:

  • · 666|主题: 11, 订阅: 0
结帖率:32% (6/19)

签到天数: 5 天

发表于 2024-3-8 09:23:25 | 显示全部楼层   贵州省黔东南苗族侗族自治州
好东西。厉害厉害
回复 支持 反对

使用道具 举报

结帖率:67% (4/6)
发表于 2018-9-18 22:19:35 | 显示全部楼层   江西省南昌市
写得很仔细  不过还是看不懂
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)
发表于 2018-9-18 10:08:26 | 显示全部楼层   海南省乐东黎族自治县
单子是我接 so easy
回复 支持 反对

使用道具 举报

结帖率:94% (58/62)
发表于 2018-9-17 11:13:46 | 显示全部楼层   广东省佛山市
谢谢分享,感谢!
回复 支持 反对

使用道具 举报

结帖率:14% (1/7)
发表于 2018-9-13 09:44:56 | 显示全部楼层   天津市天津市
大神可以出一套教程啦
回复 支持 反对

使用道具 举报

签到天数: 24 天

发表于 2018-9-12 22:03:12 高大上手机用户 | 显示全部楼层   广东省揭阳市
分分钟
回复 支持 反对

使用道具 举报

签到天数: 6 天

发表于 2018-9-12 21:53:36 | 显示全部楼层   广东省河源市
666 学习了
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2018-9-12 21:45:24 | 显示全部楼层   河南省新乡市
用e4a调用so 做成 服务端还是不错的  !!!            
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表