更多>>关于我们
西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。
您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。
数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。
更多>>技术文章
发布时间:2020-03-29 来源:西安鲲之鹏官微
【经验分享】记录使用"静态分析+动态插桩"还原“永辉超市某版本APP的HTTP签名算法”过程
背景:永辉超市某版本APP的HTTP请求使用了签名参数保护机制,下面是分析该签名算法的过程:
1. Jadx反编译APK,通过Java代码可以定位到加密函数位于cn.yonghui.hyd.lib.utils.http.httpmiddware.HttpSecurity类的signParamsNative()方法。如附图1所示。
2. signParamsNative()是一个native方法,实现过程在libYHJni.so中。根据经验,直接还原算法可能有难度。通过Frida对HttpSecurity.signParams()动态插桩,插装代码如下:
Java.perform(function() {
var HttpSecurity = Java.use('cn.yonghui.hyd.lib.utils.http.httpmiddware.HttpSecurity');
HttpSecurity.signParams.implementation = function(arg1){
var md5 = this.signParams(arg1);
console.log("##### In HttpSecurity.signParams(): #####");
console.log('Input param:');
console.log(arg1)
console.log('Sign result:');
console.log(md5);
console.log("###########################################");
return md5;
}
}
成功拦截到某次函数调用,输出如下:
##### In HttpSecurity.signParams(): #####
Input param:
channelofficialdeviceidc7f00557-f9e8-4c59-8207-1da0909e9130distinctId66c626d274e42556isfirstopen0lat39.008006lng103.572384platformAndroidtimestamp1585469368166v5.28.0.10
Sign result:
baec2be68929009758ed7de29c331fdf
###########################################
3. 如上输出。“channelofficialdeviceidc7f00557-f9e8-4c59-8207-1da0909e9130distinctId66c626d274e42556isfirstopen0lat39.008006lng103.572384platformAndroidtimestamp1585469368166v5.28.0.10”参数串,经过某个算法之后得到一个的结果是一个32位的串"baec2be68929009758ed7de29c331fdf"。试了一下直接md5,结果不对。猜测可能是加salt了。
4. 用IDA静态分析libYHJni.so,很容易找到Java_cn_yonghui_hyd_lib_utils_http_httpmiddware_HttpSecurity_signParamsNative()的实现,按F5将汇编代码转换为C语言语法。如附图2所示。从代码可以看出,计算输入串MD5值之前,先在前面加上了"YONGHUI601933",也就是md5("YONGHUI601933" + 输入串)。
5. 知道算法了,我们来验证一下:
>>>import hashlib
>>>param = 'channelofficialdeviceidc7f00557-f9e8-4c59-8207-1da0909e9130distinctId66c626d274e42556isfirstopen0lat39.008006lng103.572384platformAndroidtimestamp1585469368166v5.28.0.10'
>>>hashlib.md5('YONGHUI601933' + param).hexdigest()
'baec2be68929009758ed7de29c331fdf'
结果吻合。
背景:永辉超市某版本APP的HTTP请求使用了签名参数保护机制,下面是分析该签名算法的过程:
1. Jadx反编译APK,通过Java代码可以定位到加密函数位于cn.yonghui.hyd.lib.utils.http.httpmiddware.HttpSecurity类的signParamsNative()方法。如附图1所示。
2. signParamsNative()是一个native方法,实现过程在libYHJni.so中。根据经验,直接还原算法可能有难度。通过Frida对HttpSecurity.signParams()动态插桩,插装代码如下:
Java.perform(function() {
var HttpSecurity = Java.use('cn.yonghui.hyd.lib.utils.http.httpmiddware.HttpSecurity');
HttpSecurity.signParams.implementation = function(arg1){
var md5 = this.signParams(arg1);
console.log("##### In HttpSecurity.signParams(): #####");
console.log('Input param:');
console.log(arg1)
console.log('Sign result:');
console.log(md5);
console.log("###########################################");
return md5;
}
}
成功拦截到某次函数调用,输出如下:
##### In HttpSecurity.signParams(): #####
Input param:
channelofficialdeviceidc7f00557-f9e8-4c59-8207-1da0909e9130distinctId66c626d274e42556isfirstopen0lat39.008006lng103.572384platformAndroidtimestamp1585469368166v5.28.0.10
Sign result:
baec2be68929009758ed7de29c331fdf
###########################################
3. 如上输出。“channelofficialdeviceidc7f00557-f9e8-4c59-8207-1da0909e9130distinctId66c626d274e42556isfirstopen0lat39.008006lng103.572384platformAndroidtimestamp1585469368166v5.28.0.10”参数串,经过某个算法之后得到一个的结果是一个32位的串"baec2be68929009758ed7de29c331fdf"。试了一下直接md5,结果不对。猜测可能是加salt了。
4. 用IDA静态分析libYHJni.so,很容易找到Java_cn_yonghui_hyd_lib_utils_http_httpmiddware_HttpSecurity_signParamsNative()的实现,按F5将汇编代码转换为C语言语法。如附图2所示。从代码可以看出,计算输入串MD5值之前,先在前面加上了"YONGHUI601933",也就是md5("YONGHUI601933" + 输入串)。
5. 知道算法了,我们来验证一下:
>>>import hashlib
>>>param = 'channelofficialdeviceidc7f00557-f9e8-4c59-8207-1da0909e9130distinctId66c626d274e42556isfirstopen0lat39.008006lng103.572384platformAndroidtimestamp1585469368166v5.28.0.10'
>>>hashlib.md5('YONGHUI601933' + param).hexdigest()
'baec2be68929009758ed7de29c331fdf'
结果吻合。
特别说明:该文章为鲲鹏数据原创内容 ,您除了可以发表评论外,还可以转载到别的网站,但是请保留源地址,谢谢!!(尊重他人劳动,我们共同努力)
☹ Disqus被Qiang了,之前的评论内容都没了。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/