当前位置: 首页 > news >正文

高端电子商务网站建设/b2b平台网站

高端电子商务网站建设,b2b平台网站,用凡科做的网站打不开,手机网站怎么优化使用frida破解native层算法(原文) 使用frida破解native层算法 案例:就不放了 抓包分析 这里抓包分析的过程不详细说了 可以看到主要有两个参数 sign和signV1 反编译 1、 sign破解 搜索关键词定位以及跳转到声明之后,最后…

使用frida破解native层算法(原文)

使用frida破解native层算法

案例:就不放了

抓包分析

这里抓包分析的过程不详细说了
可以看到主要有两个参数
sign和signV1
file
file

反编译

1、 sign破解

搜索关键词定位以及跳转到声明之后,最后就是一个md5,用objection看看就完事了
file
file
file
file
这是java层的sign破解,完事。

2、*-sign-v1破解

这个算法主要是在native层,这里借助了frida进行破解,最后换成cpp代码。
这里定位到这个,刚开始我也不知道这里,就瞎找,分析到这里。
file
最后确定到这两个方法,用objection确定下,最后native走的那个方法
file
可以看到最后走的是getSignRequest这个方法,并且根据上图,就可以看到so是libsalt.so。
file

2.1 分析so
  • 导入jni头文件,这里没有jni_onload,就是静态注册的。
    Java_com_*_main_helpers_utils_*SignUtils_getSignRequest找到一个加密的函数,追下去看看。
    file
    看到这么多函数,根据名字就猜测一下了,md5操作,看看是不是导出函数。
    file
    file
    file
    果然是导出函数,直接frida就去Hook一下导出函数。
Interceptor.attach(Module.findExportByName("libsalt.so", "*_md5"), {onEnter: function (args) {console.log("*_md5 onEnter", Memory.readCString(args[0]))},onLeave: function (retvalue) {console.log("*_md5 onLeave", Memory.readCString(retvalue))}
})

Hook之后得到这么多
file
其实a4698cf0eea7a9b92a0194618079aba9是did2a0194618079aba9a4698cf0eea7a9b9
中间进行切割,然后交换位置。
5nhrec75lf3drenb09a349366a5b7eda4ee99d7a104fb38b8a5f746c1c9c99c0b458e1ed510845e5
是随机字符串+md5(a4698cf0eea7a9b92a0194618079aba9)+8a5f746c1c9c99c0b458e1ed510845e5的结果
8a5f746c1c9c99c0b458e1ed510845e5是固定值,随机字符串是java层算法。
python这一部分的实现

   did = '2a0194618079aba9a4698cf0eea7a9b9'rstr = 'yqkdfs6y4d2ci8wm'  # 随机字did[:符串new_did = did[len(did) // 2:] + len(did) // 2]did_md5 = get_md5(new_did)sss = rstr + did_md5 + '8a5f746c1c9c99c0b458e1ed510845e5'dest = get_md5(sss)

cpp实现:

    string did = "2a0194618079aba9a4698cf0eea7a9b9";string ranstr = "28npqz4cpmw6ifpc";string new_did = getStringSubs(did);string did_md5 = getMd5(new_did);string sss = ranstr + did_md5 + "8a5f746c1c9c99c0b458e1ed510845e5";string dest = getStringSubs(getMd5(sss));

上边的dest是新字符串拼接需要的
file
这里有一个json的操作,其实刚开始我也不知道干了什么,最后我用frida-trac 就轻松解决了。

frida-trace -FU -i "strlen"

file

array[i] = buffer[2 * i] & 0xF0 | buffer[2 * i + 1] & 0xF;

这个是对字符串进行了高低位的操作,也就是这个app的signV3唯一个非标准算法。
拿到高低位操作之后的字符串之后,拼接了之前的dest(我自己写的那个),然后进行sha1操作。
sha1之后取了第8位到最后的字符串,然后又中间进行切割,然后交换位置,最后生成的就是signV3的结果。
cpp最后实现的算法:

string getMd5(const string &message) {return MD5(message).toStr();
}
string getSha1(const string &message) {SHA1 checksum;checksum.update(message);const string hash = checksum.final();return hash;
}
string getStringSubs(const string &message) {string string1 = message.substr(0, message.length() / 2);string string2 = message.substr(message.length() / 2);return string2 + string1;
}
void SignV3() {string did = "2a0194618079aba9a4698cf0eea7a9b9";string ranstr = "28npqz4cpmw6ifpc";string new_did = getStringSubs(did);string did_md5 = getMd5(new_did);string sss = ranstr + did_md5 + "8a5f746c1c9c99c0b458e1ed510845e5";string dest = getStringSubs(getMd5(sss));string arr = "aid=fbef33334c2388ccee5757dc2dbb0b45&comments_sort=asc&isnewsession=false&mark_read_sid=361595316249559936&mcc=&mnc=&nextkey=&timestamp=1592463682&ua=Mozilla/5.0 (Linux; Android 8.1.0; AOSP on msm8996 Build/OPM4.171019.021.D1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36";
    const char *buffer = "aid=fbef33334c2388ccee5757dc2dbb0b45&comments_sort=asc&isnewsession=false&mark_read_sid=361595316249559936&mcc=&mnc=&nextkey=&timestamp=1592463682&ua=Mozilla/5.0 (Linux; Android 8.1.0; AOSP on msm8996 Build/OPM4.171019.021.D1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36";int i = 0;
//这里的算法可以看看ida的图 自己实现呐string new_sss = arr.substr(0, i) + dest;string sha1Res = getSha1(new_sss).substr(8);string sign_v3 = getStringSubs(sha1Res);cout << "_sign_v3=" << sign_v3;
}
int main() {SignV3();return 0;
}

算法检验

file
至于为什么最后不放python算法,实在是因为,还原成python之后,高低位操作的时候,部分数据不对了。。就只有cpp了
此文章仅用于学习交流,请勿商业用途和传播。

使用frida破解native层算法(原文)

http://www.lbrq.cn/news/1108225.html

相关文章:

  • 扁平化中文网站模板下载/搜索引擎推广的关键词
  • 怎样用电脑和网訨自己做网站/南宁网络优化seo费用
  • 石家庄做网站wsjz/7个湖北seo网站推广策略
  • 学做网站看那个网/搜索关键词的工具
  • 娄底网站建设建站/百度seo排名优化价格
  • 网站建设的目标人群是什么/商丘关键词优化推广
  • 外国人学做中国菜的网站/搜全网的浏览器
  • 百度搜索排名查询/seo网站优化推广
  • 北京建网站软件/网站点击量查询
  • 吉林省建设招标网站/深圳市网络seo推广平台
  • 企业做营销型网站/山东百度推广代理商
  • 做一个购物网站价格/东营优化公司
  • 网站连接怎么做/企业网站建设门户
  • 最便宜的购物app/枫林seo工具
  • 沈阳唐朝网站建设/网络营销公司排行榜
  • 老外做汉字网站/品牌互动营销案例
  • 揭阳seo快速排名/新网站 seo
  • dz插件网站和自己做的网站区别/网站制作多少钱
  • 网站建设开发方式/广告文案
  • 服装网站建设目的作用是什么/代写文章多少钱
  • 网站程序是什么意思/自媒体是什么
  • 沈阳优化网站关键词/竞价托管外包代运营
  • 人事代理网站建设/百度企业推广怎么收费
  • 手绘教学网站/windows优化大师会员兑换码
  • 男女做那个的网站/3分钟搞定网站seo优化外链建设
  • 有个专门做gif的网站/网络营销职业规划300字
  • 一个网站一年多少钱/广告传媒公司经营范围
  • 福州免费做网站/百度指数搜索热度大学
  • 政府网站建设管理情况总结/服务营销策划方案
  • 沈阳网站seo优化哪家好/百度竞价广告
  • 滤波电路Multisim电路仿真实验汇总——硬件工程师笔记
  • 板子 5.29--7.19
  • 医疗AI与融合数据库的整合:挑战、架构与未来展望(下)
  • simulink系列之汽车应用层信号处理
  • 基于单片机病床呼叫系统/床位呼叫系统
  • Python高级数据类型:字典(Dictionary)