开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 3793|回复: 6
收起左侧

[技术专题] 玩吧APP 主要算法分析

[复制链接]
结帖率:100% (1/1)
发表于 2018-8-20 22:52:07 | 显示全部楼层 |阅读模式   上海市上海市
PS:APP 提供来源
app 下载 地址:
http://sj.qq.com/myapp/detail.htm?apkName=com.wodi.who

app 提供来源:
https://bbs.125.la/forum.php?mod=viewthread&tid=14219509&highlight=APP

第一步 抓登陆抓包:


  1. POST /v3/account/register HTTP/1.1
  2. User-Agent: sswdOnline/Android 80907 (oppo a59m; 5.1.1; 540*960; 3)
  3. Content-Type: application/x-www-form-urlencoded
  4. Content-Length: 666
  5. Host: api.wodidashi.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip

  8. p_=GloQxKW7Gx3kOpVkPQu4gy30FaFUaadmyEe%2BDsxIMWGZZhEuLUCv4TqgOD6QWVcx%2FJU1BLFl0SLzyj0aeDu9VuNs2R84EZR%2F4n4cJRkLu4dzXLMA6idNrAn4yqw9GwC%2F93Vi8u%2B8ATeLI5i0h13qkbfrS4rMcALsKhpU3401ztoVqno2P6OGJweqGtK0LY0o9GBwFCysAUkX1HMsVQCWmsk2yRH5SAK%2BDbSAWxrscqPbmn2VXtAg1tWGakdkGC89bm4ANhpGAfTX3wM2Wi1Ysrx7MIz6M9RV3H9B6cF46hqcUb%2FuIfIU05lBCTNKjBXtNgvS5c3Y5xvQ7xEWfWkjmfp8fFZlMrPDqssu6ICZ1ddDGP%2BXi3esPmDxu0eALxm76Z8lQFj%2BIMrid7b%2F1obgvu23lOPL42OznKZGuElHaiJ2TX4Ht6pV1wWnc3Wt4%2FbVaXtaLFkoW53sVz84w5E3jkSWOFwyPE%2BXjDXTNC0%2BWMhElQ4632vUYqOU6Lt7ruH7DNeV08PXIwEi3N%2BdSymHtX2CySlFd2T2p2omcFOZccepzM%2F6KKAqV0V6g1x%2BmSbekG2FFEpOrc4JFs3%2BoGPz5vYRe3EFib7I8ovJipXEgYw%3D&__z_=2
复制代码


第二步 分析加密主要参数:
1 p_=GloQxKW7Gx3kOpVkPQu4gy30FaFUaadmyEe%2BDsxIMWGZZhEuLUCv4TqgOD6QWVcx%2FJU1BLFl0SLzyj0aeDu9VuNs2R84EZR%2F4n4cJRkLu4dzXLMA6idNrAn4yqw9GwC%2F93Vi8u%2B8ATeLI5i0h13qkbfrS4rMcALsKhpU3401ztoVqno2P6OGJweqGtK0LY0o9GBwFCysAUkX1HMsVQCWmsk2yRH5SAK%2BDbSAWxrscqPbmn2VXtAg1tWGakdkGC89bm4ANhpGAfTX3wM2Wi1Ysrx7MIz6M9RV3H9B6cF46hqcUb%2FuIfIU05lBCTNKjBXtNgvS5c3Y5xvQ7xEWfWkjmfp8fFZlMrPDqssu6ICZ1ddDGP%2BXi3esPmDxu0eALxm76Z8lQFj%2BIMrid7b%2F1obgvu23lOPL42OznKZGuElHaiJ2TX4Ht6pV1wWnc3Wt4%2FbVaXtaLFkoW53sVz84w5E3jkSWOFwyPE%2BXjDXTNC0%2BWMhElQ4632vUYqOU6Lt7ruH7DNeV08PXIwEi3N%2BdSymHtX2CySlFd2T2p2omcFOZccepzM%2F6KKAqV0V6g1x%2BmSbekG2FFEpOrc4JFs3%2BoGPz5vYRe3EFib7I8ovJipXEgYw%3D



第三步 逆向找到其主要算法


  1. ------------------------------------------------------------------------------------------------------------------------
  2. package com.wodi.protocol.network.interceptor;
  3. public class BasicInterceptor implements Interceptor {
  4.      public Response intercept(Interceptor$Chain arg6) throws IOException {
  5.                 Request v0 = arg6.a();
  6.                 Request$Builder v1 = v0.f();
  7.                 RequestBody v2 = v0.d();
  8.                 v1.b("User-Agent", AppRuntimeManager.a().p());
  9.                 return arg6.a(v1.a(new FormBody$Builder().a("p_", this.a(v0.a().toString(), BasicInterceptor.a(v2))).a("__z_", "2").a()).d());
  10.     }
  11. ---------------------------------------------------------------------------------------------------------------------------------------------------------------
  12. package com.wodi.protocol.network.interceptor;
  13. public class BasicInterceptor implements Interceptor {

  14.     private String a(String arg7, String arg8) {
  15.         String v0;
  16.         Map v1 = this.a(arg8);
  17.         v1.put("__v_", "1.0");
  18.         v1.put("__appid_", "10002");
  19.         v1.put("__callid_", String.valueOf(System.currentTimeMillis()) + String.valueOf(new Random().nextInt(BasicInterceptor.a) % (BasicInterceptor.a - BasicInterceptor.b + 1) + BasicInterceptor.b));
  20.         v1.put("__appVersion_", AppRuntimeManager.a().q());
  21.         v1.put("__appVersionName_", "8.9.7");
  22.         v1.put("__deviceId_", AppRuntimeManager.a().d());
  23.         v1.put("__channelId_", ChannelUtils.f());
  24.         v1.put("__deviceInfo_", AppRuntimeManager.a().g());
  25.         v1.put("__imei_", App.getIMEI());
  26.         if(this.b(arg7)) {
  27.             if(arg7.contains("checkOnline")) {
  28.                 v1.put("__t_", UserInfoSPManager.a().J());
  29.             }

  30.             v0 = Tool.a(v1, Tool.d(), "", false);
  31.         }
  32.         else {
  33.             v1.put("__t_", UserInfoSPManager.a().J());
  34.             v0 = Tool.a(v1, Tool.c(), App.timestamp, true);
  35.         }

  36.         v1.put("__sig_", v0);
  37.         v0 = this.c.toJson(v1);
  38.         return this.b(arg7) ? Tool.a(v0, Tool.e()) : Tool.a(v0, Tool.b());
  39.     }
  40. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  41. package com.huacai;
  42. public class Tool {
  43. public static String a(String arg4, String arg5) {
  44.         try {
  45.             SecretKeySpec v0_6 = new SecretKeySpec(arg5.getBytes("utf-8"), "AES");
  46.             Cipher v1 = Cipher.getInstance("AES/ECB/PKCS5Padding");
  47.             byte[] v2 = arg4.getBytes("utf-8");
  48.             v1.init(1, ((Key)v0_6));
  49.             String v0_7 = Base64.a(v1.doFinal(v2));
  50.             return v0_7;
  51.         }
  52.         catch(BadPaddingException v0) {
  53.             v0.printStackTrace();
  54.         }
  55.         catch(IllegalBlockSizeException v0_1) {
  56.             v0_1.printStackTrace();
  57.         }
  58.         catch(UnsupportedEncodingException v0_2) {
  59.             v0_2.printStackTrace();
  60.         }
  61.         catch(InvalidKeyException v0_3) {
  62.             v0_3.printStackTrace();
  63.         }
  64.         catch(NoSuchPaddingException v0_4) {
  65.             v0_4.printStackTrace();
  66.         }
  67.         catch(NoSuchAlgorithmException v0_5) {
  68.             v0_5.printStackTrace();
  69.         }

  70.         return null;
  71.     }
复制代码


第四步 总结
p_= AES/ECB/PKCS5Padding("{"__imei_":"358640473966373","__callid_":"15347738611578366","phoneNumber":"+8613888888888","__deviceId_":"4f1b22e8-d3b5-46b8-a40b-2e0d62cebc95","__appid_":"10002","__v_":"1.0","spds":"201807242353235148fcec88d81155d295e68028072f7b01b837179a0802f4","smsCode":"147258","__sig_":"69370c6ec810a1e80f23af4b3603c5fe","__appVersionName_":"8.9.7","__appVersion_":"80907","__deviceInfo_":"oppo a59m(540*960)","bundleName":"com.wodi.who","__channelId_":"3","type":"celln"}");


其中 key = ,;*q12NV>PO)/'](

评分

参与人数 1好评 +1 精币 +1 收起 理由
jinwang + 1 + 1 新技能已get√

查看全部评分


发表于 2019-6-6 07:04:07 | 显示全部楼层   湖北省武汉市
666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 4 天

发表于 2018-10-22 02:12:21 | 显示全部楼层   广西壮族自治区南宁市

兄弟,多谢了
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)
发表于 2018-10-15 20:38:37 | 显示全部楼层   河南省周口市
he630041228 发表于 2018-9-9 02:01
想问问是怎么抓APP安装在手机里的包

fiddler可以
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2018-10-15 10:41:44 | 显示全部楼层   广东省广州市
#在这里快速回其中 key = ,;*q12NV>PO)/'](复#
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 4 天

发表于 2018-9-9 02:01:31 | 显示全部楼层   广西壮族自治区南宁市
想问问是怎么抓APP安装在手机里的包
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2018-9-8 10:36:02 | 显示全部楼层   广西壮族自治区贵港市
别吵别吵别吵别吵别吵别吵别吵别吵别吵
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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