免责声明:本篇文章仅用来学习交流,请勿用于商业用途,如因违反规定产生任何法律纠纷,本人概不负责。假如本文影响到官方任何利益,请联系我告知,我会在第一时间将文章删除,感谢~
#
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 的名称
parameterTypes
:method
的参数类型的列表(参数顺序需按声明 method 时的参数列表排列)
返回:符合method
名称和参数的method
对象原型:
Object invoke(Object obj,Object...args)
参数解释:
obj
:实例化后的对象
args
:用于方法调用的参数
返回:根据obj
和args
调用的方法的返回值上面逻辑很清晰,
clazz
和object
为空就执行initInstance
;gsMethod
为空,就执行gsmethod
生成一个,最后通过调用object
里的gs
,传入context, map,str, boolean
获取最终结果# 跟进
initInstance
,发现object
是这个类com.vip.vcsp.KeyInfo
# 到
keyinfo
类中看gs
实现,最后逻辑在native
层
#
ida
分析so
文件