某搬家App _sign签名算法解析
2021-04-25 21:04:21 Author: 91fans.com.cn(查看原文) 阅读量:149 收藏

一、目标

一、目标

今天我们的目标是这个 _sign

main
1:main

二、步骤

Jadx搜索 _sign"

这种带特殊字符前后缀的签名,基本上就是挥舞着双臂在召唤,来找我要,来找我呀,通常都是一找一个准。

s1
1:s1

轻松就定位到了 hashMap.put(KEY__SIGN, AppUtils.getSignParam(hashMap));

啥也别说了,搞他……

objection -g com.lxxx.hxxx.client explore
android hooking watch class 'com.hxx.pushsdk.push.util.AppUtils'

然后再左点点,右点点,等它触发签名函数。

一分钟过去了, 木反应?

难道没有触发页面,不对呀,前方传来 Charles 的呼喊,有新的签名数据出现。

但是objection木有打印信息。

这个App太狡猾呀,居然还设置了假函数来干扰我们。

但是 _sign 的字符串只有这一处呀。

再仔细观察下:

public static final String KEY__SIGN = "_sign";

Jadx搜索 KEY__SIGN

大家都是同行,何必这么搞,这下现形了

s2
1:s2

鼠标点点,最后进入到 com.lxx.hxx.utils.HllJni 这个类

拦住它

android hooking watch class 'com.lxx.hxx.utils.HllJni'
(agent) Registering job 576062. Type: watch-class for: com.lxx.hxx.utils.HllJni
# 逮住了,调用了getMD5函数
com.lxx.hxx.client on (google: 10) [usb] # (agent) [576062] Called com.lxx.hxx.utils.HllJni.getMD5(java.lang.String)
# 把getMd5 的入参和返回值打印下
com.lxx.hxx.client on (google: 10) [usb] # android hooking watch class_method 'com.lxx.hxx.utils.HllJni.getMD5' --
dump-args --dump-return
(agent) Attempting to watch class com.lxx.hxx.utils.HllJni and method getMD5.
(agent) Hooking com.lxx.hxx.utils.HllJni.getMD5(java.lang.String)
(agent) [364807] Arguments com.lxx.hxx.utils.HllJni.getMD5(k12rbm8$AKhbuAz$c0jtQ&ru0s3lGW87_su21042519544179910000001177643065_t1619351681app_revision6506client_type32token7d0a1248c1d244ac8cc53027a7e4e013kZErbmP$AKhbuAz$c0jtQ&ru0s3l3387)
(agent) [364807] Return Value: 3abaecabe9a8af7d37cbcfd41b077982

真相只有一个,请求里面的_su _t 等等参数拼接一下,然后前后加上固定字符。再做个MD5。

可以收工了……

三、总结

出来混,不要太明显了,该藏的还是藏起来。特别不要加一些特殊的字符,否则就是指路明灯。

ffshow
1:ffshow

其实不必羡慕那些积极的人,你想模仿他也不可能,如何做到的答案在你心里,很多人会问,我就是不知道自己想要什么,怎么办?找到自己想要的,这句话第一个字是找,每当你找的累了,都告诉自己:我这是在给自己一个机会。

100

关注微信公众号,最新技术干货实时推送

100

文章作者 奋飞

上次更新 2021-04-25

许可协议 奋飞安全原创,转载请注明出处。


文章来源: http://91fans.com.cn/post/banjiasignone/
如有侵权请联系:admin#unsafe.sh