免责声明:本篇文章仅用来学习交流,请勿用于商业用途,如因违反规定产生任何法律纠纷,本人概不负责。假如本文影响到官方任何利益,请联系我告知,我会在第一时间将文章删除,感谢~

  1. # jadx 分析 + objection 快速定位

    • # jadx 轻松定位到赋值位置

    • # objection hook 确认,确实和抓包结果一致,后面的步骤省略 objection 操作,验证方式一样,不做记录了。
      android hooking watch class_method com.achievo.vipshop.commons.h.b.b --dump-args --dump-backtrace --dump-return

    • # 继续追踪加密逻辑,省略部分步骤,可以看到是 java 反射调用

      原型Method getMethod(String name,Class...parameterTypes)
      参数解释

      name : method 的名称
      parameterTypesmethod 的参数类型的列表(参数顺序需按声明 method 时的参数列表排列)
      返回:符合 method 名称和参数的 method 对象

      原型Object invoke(Object obj,Object...args)
      参数解释

      obj :实例化后的对象

      args :用于方法调用的参数
      返回:根据 objargs 调用的方法的返回值

      上面逻辑很清晰, clazzobject 为空就执行 initInstancegsMethod 为空,就执行 gsmethod 生成一个,最后通过调用 object 里的 gs ,传入 context, map,str, boolean 获取最终结果

    • # 跟进 initInstance ,发现 object 是这个类 com.vip.vcsp.KeyInfo

    • #keyinfo 类中看 gs 实现,最后逻辑在 native

  2. # ida 分析 so 文件

    • # 导出函数搜一下,还好是静态的,省掉不少麻烦

    • # 点进去看伪代码

    • # 经过几次 inlinehook ,最终确定加密逻辑,参数经过下图函数最后生成,看内部实现,猜测是 sha1 hash 算法

    • # 通过打印参数和返回值,并通过 sha1 算法验证,确认是 sha1 加密

      ① 盐值 + 参数拼接的字符串 进行 sha1 运算得到密文

      ② 盐值 + 密文 再进行 sha1 运算得到最终结果

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

渣渣文 微信支付

微信支付

渣渣文 支付宝

支付宝