-
-
[原创] 安卓协议逆向 mtxx 分析与实现
-
发表于: 2023-1-10 14:36 10096
-
app 版本:9.5.3.0
设备:K40 刷 piexl 11 rom
抓包工具:Charles
反汇编工具:JEB、JADX
inject:frida
GET /v2/search/feeds.json?client_timestamp=1671885699194&client_timezone=GMT%2B8&is_gdpr=0&client_channel_id=taobao&client_model=M2012K11AC&local_abtest=%5B%5D&cpuModel=qcom-SM8250&client_brand=Redmi&resolution=1080*2278&client_id=1089867602&sigVersion=1.3&runtimeMaxMemory=512&ad_sdk_version=5.10.20&feed_sort=normal&is_test=0&keyword=%E7%BE%8E%E7%94%B2&client_network=wifi&ram=7611&cpuVendor=%E9%AB%98%E9%80%9A&count=12&version=9.5.3.0&search_type=0&is_basic=0&country_code=CN&app_hot_start_times=1&attachFlag=409&client_session=36454fcbf949454cd2afa56c6d22a166&is64Bit=0&client_is_root=1&client_operator=&gid=2863613419&is_close_global_ad=0&client_language=zh_CN&cn_switch_on=0&sig=2c49ce7212100885736aa5e79ac70dd8&sigTime=1671885699194&client_os=11&lang=1&is_privacy=0&user_agent=mtxx-9530-Xiaomi-M2012K11AC-android-11-285d5ace&is_ohos=0&sigEnv=0&appAreaType=1&personality_not_recommend=0&community_version=2.0.0&android_sdk_int=30&ad_personality_not_recommend=0&is_device_support_64=1 HTTP/1.1
ab_info: {"ab_codes":[{"code":15619,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":19219,"count":0,"experiment_type":3,"status":1,"lr":0},{"code":16412,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":16928,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":19495,"count":0,"experiment_type":3,"status":1,"lr":0},{"code":19533,"count":4,"experiment_type":3,"status":1,"lr":1671885085070},{"code":10109,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":16805,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":12454,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":19133,"count":0,"experiment_type":3,"status":1,"lr":0},{"code":12230,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":17615,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":17623,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":13797,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":12009,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":13301,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":14838,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":15353,"count":0,"experiment_type":3,"status":5,"lr":0},{"code":14844,"count":0,"experiment_type":3,"status":5,"lr":0}],"last_access":1671885695251,"timeout":2047483000,"version":"5.6.1"}
User-Agent: mtxx-9530-Xiaomi-M2012K11AC-android-11-285d5ace
Host: api.xiuxiu.meitu.com
Connection: Keep-Alive
Accept-Encoding: gzip
traceIdHigh: 2863613419
traceIdLow: 1753099219224232333
一个个分析下来仅 sig、sigTime、client_session、client_timestamp 几个参数是会变动的,其余都应该是固定的
拖入 jadx 先搜索 client_session 得到两个结果,非常好确认,定位到 com.meitu.meitupic.framework.util.g 类中:
大致判断 client_session 应该就是个时间戳,跟进 k 方法中看看:
上 frida hook 直接看结果:
输入烧烤 hook 结果:
args1: 1671893086682
result: 8479b44135cab6f54bf0c0a0f0274daa
对照其抓包结果 client_session 值校验无误,其中 arg1 就是 client_timestamp 值,一下解决两。
继续分析 sig。
通过上面分析的 com.meitu.meitupic.framework.util.g 查找 sig 得到了相关引用位置,最终定位到 com.meitu.secret.SigEntity 下的 generatorSig 方法:
查看其参数:
参数一:String str, 参数二: String[] strArr, 参数三: String str2, 参数四: Object obj
看其上层调用:
SigEntity generatorSig = SigEntity.generatorSig(A2, (String[]) arrayList.toArray(new String[arrayList.size()]), com.meitu.meitupic.framework.common.c.a, BaseApplication.getApplication());
参数一、二为形参先放着,跟进参数三可得:
可见参数三是一个固定值,再跟进看参数四:
一个对象,返回的是 obj ,Java 中可通过对象的实例获取到对象的属性值,猜测其中藏有 sig 及 sigTime。
遇事不决,frida 最是直接:
输入烧烤 hook 结果:
arg1: search/feeds.json
arg2: 1671898697836,,GMT+8,0,2863613419,taobao,M2012K11AC,[],qcom-SM8250,0,Redmi,1080*2278,zh_CN,1089867602,0,512,5.10.20,11,normal,0,烧烤,1,0,wifi,mtxx-9530-Xiaomi-M2012K11AC-android-11-285d5ace,7611,高通,12,0,0,1,0,9.5.3.0,0,0,2.0.0,CN,1,409,30,0,9b2dc941affe929a86ca97227211d55b,0,1,1
arg3: 6184556633574670337
arg4: com.meitu.remote.hotfix.app.RemoteHotfixApplication@2d01c1
result_sig: 4e3a4cecec59b439a636ba7c01154225
result_sigTime: 1671898697866
对照其抓包结果 sig、sigTime值校验无误,其中参数一为固定值:search/feeds.json,参数二为查找的内容加一些手机相关字段。
参数都解决了,剩下就是批量抓包了,构建 frida rpc 脚本:
上 py 调用 rpc 脚本:
结果如下,完美实现:
ret_dict: ff5a6e7b2fbfc04d8bccde169c4f6436
client_session: ff5a6e7b2fbfc04d8bccde169c4f6436
[] sig: d8e113b90ef5b440f8de162f4db41470
[] sigTime: d8e113b90ef5b440f8de162f4db41470
d8e113b90ef5b440f8de162f4db41470
{"degrade":0,"ret":0,"error_code":0,"error":"Ok","msg":"成功","data":{"next_cursor":"j4cjTo","items":[{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6693892116056133887||1||453||29||13||125||21||-1||-1||6693892115863195733||1671897700491||0||-1||-1||-1||-1||-1||19||7||102||1555939137||0","color_number":"#715A54","feed_id":6693892116056133887,"user":{"uid":1555939137,"screen_name":"夏小沫wendy","avatar_url":"http://maavatar1.meitudata.com/603a7042e9f8a6335.jpg","friendship_status":0,"identity_type":2,"identity_status":1},"medias":[{"media_id":6693892116169380187,"type":2,"url":"https://xiuxiu.video.xiuxiustatic.com/DVvzmNzujjde8L8vaZkfmDXvaZlo3_H264_1_219e9da90156b2.mp4?k=022a1103e61d528cccad388f53ce4bea&t=63a7cb24","duration":15.628000259399414,"dispatch_video":"{\"sourceUrl\":\"http://xiuxiu.video.xiuxiustatic.com/DVvzmNzujjde8L8vaZkfmDXvaZlo3.mp4?k=63d07a91fd880947db833f14dff6133c&t=63a7cb24\",\"paramUrl\":\"http://xx1.video.xiuxiustatic.com/DVvzmNzujjde8L8vaZkfmDXvaZlo3.mp4\",\"264\":{\"720\":\"http://xiuxiu.video.xiuxiustatic.com/DVvzmNzujjde8L8vaZkfmDXvaZlo3_H264_1_219e9da90156b2.mp4?k=022a1103e61d528cccad388f53ce4bea&t=63a7cb24\"},\"mid\":6857394548345161264}","template":{"id":6693892115863195733,"user":{"uid":1555939137,"type":0,"screen_name":"夏小沫wendy","avatar_url":"http://maavatar1.meitudata.com/603a7042e9f8a6335.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":7,"bt_text":"使用配方","origin_pic":""}],"type":0,"is_liked":0,"is_favorited":0,"like_count":453,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/QzPRdQRfGYxJDg99xj3Tdz9n65zZV.jpg","commend":{"width":1080,"height":1080,"dx":0,"dy":420,"ori_width":1080,"ori_height":1920},"commend_cover":{"width":1080,"height":1080,"dx":0,"dy":407,"ori_width":1080,"ori_height":1920},"comment":1,"width":1080,"height":1920,"caption":"有烧烤串串的夏天才完整\uD83C\uDF62","music":{"music_id":250103423},"tag_text":"使用量:1079","comment_count":29,"pic_comment_count":13,"stream_type":3,"from":"jdFz","template_use_count":1079,"clip_count":3,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6800673325448190623||0||353||131||111||4546||4||-1||-1||6800672948862612910||1671897700491||0||-1||-1||-1||-1||-1||19||9||0||1702418669||0","color_number":"#8A622F","feed_id":6800673325448190623,"user":{"uid":1702418669,"screen_name":"是云纤呀","avatar_url":"http://maavatar1.meitudata.com/6321d8b9399fc8513.jpg","friendship_status":0,"identity_type":2,"identity_status":1},"medias":[{"media_id":6800673325745986380,"type":1,"template":{"id":6800672948862612910,"user":{"uid":1702418669,"type":0,"screen_name":"是云纤呀","avatar_url":"http://maavatar1.meitudata.com/6321d8b9399fc8513.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":9,"bt_text":"使用配方","cover_color":"#B39779FF","gif":"http://xiuxiu.video.xiuxiustatic.com/68202471094904701691626073624.mp4?k=2360df466721770fab454ab510e6abc2&t=63a7cb24","origin_pic":"http://xximg1.meitudata.com/llp4jnwunb91o4LeovNCRxlJDmn3g.jpg"}],"type":0,"is_liked":0,"is_favorited":0,"like_count":353,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/nwpQJKGTN0Y4qQp0XJ36H2je5DlGdo.jpg","commend":{"width":1030,"height":1030,"dx":5,"dy":0,"ori_width":1080,"ori_height":1030},"commend_cover":{"width":1030,"height":1030,"dx":5,"dy":0,"ori_width":1080,"ori_height":1030},"comment":1,"width":1080,"height":1030,"caption":"烧烤局|暖色调|美味时刻\n(图片来自网络)\n✨ 文案:希望我可以成为你生活的一部分\n✨ 一件导入图片即可\n@MT小助手 @MT情报局 @美图秀秀","tag_text":"使用量:15.1万","comment_count":131,"pic_comment_count":111,"stream_type":1,"from":"BNcD","template_use_count":150770,"clip_count":0,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6734816817566209843||0||668||36||32||3874||6||-1||-1||6734816543292288045||1671897700491||0||-1||-1||-1||-1||-1||19||9||7817||1470392151||0","color_number":"#795729","feed_id":6734816817566209843,"user":{"uid":1470392151,"screen_name":"April清","avatar_url":"http://maavatar1.meitudata.com/5af6ec6600ecd6608.jpg","friendship_status":0,"identity_type":0,"identity_status":0},"medias":[{"media_id":6734816817674481546,"type":1,"template":{"id":6734816543292288045,"user":{"uid":1470392151,"type":0,"screen_name":"April清","avatar_url":"http://maavatar1.meitudata.com/5af6ec6600ecd6608.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":9,"bt_text":"使用配方","cover_color":"#B39979FF","origin_pic":""}],"type":0,"is_liked":0,"is_favorited":0,"like_count":668,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/bZKa8nzSzodjp33wLdLTaRwVgLz4Y.jpg","commend":{"width":1280,"height":1280,"dx":0,"dy":0,"ori_width":1280,"ori_height":1280},"commend_cover":{"width":1280,"height":1280,"dx":0,"dy":0,"ori_width":1280,"ori_height":1280},"comment":1,"width":1280,"height":1280,"caption":"\uD83E\uDD0E深夜食堂 | 烧烤撸串 | 美食滤镜\uD83E\uDD0E","tag_text":"使用量:5.4万","comment_count":36,"pic_comment_count":32,"stream_type":1,"from":"Jnfz","template_use_count":53973,"clip_count":0,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6736200990377143287||1||743||13||0||150||0||-1||-1||6736200990221953863||1671897700491||0||-1||-1||-1||-1||-1||19||7||1||1051671670||0","color_number":"#4A6180","feed_id":6736200990377143287,"user":{"uid":1051671670,"screen_name":"寻味雅安(队长)","avatar_url":"http://maavatar1.meitudata.com/5f413c1419a4f1654.jpg","friendship_status":0,"identity_type":0,"identity_status":0},"medias":[{"media_id":6736200990482000990,"type":2,"url":"https://xiuxiu.video.xiuxiustatic.com/15qD6e6SaQwYBkRe05jsPa9DB0p4Z_H264_1_4576478cf7d39e.mp4?k=536c38a1adb2908d278ea446dce9042d&t=63a7cb24","duration":18.183332443237305,"dispatch_video":"{\"sourceUrl\":\"http://xiuxiu.video.xiuxiustatic.com/15qD6e6SaQwYBkRe05jsPa9DB0p4Z.mp4?k=b89e66ad20e6836c3c2d27a5ea08dc8a&t=63a7cb24\",\"paramUrl\":\"http://xx1.video.xiuxiustatic.com/15qD6e6SaQwYBkRe05jsPa9DB0p4Z.mp4\",\"264\":{\"720\":\"http://xiuxiu.video.xiuxiustatic.com/15qD6e6SaQwYBkRe05jsPa9DB0p4Z_H264_1_4576478cf7d39e.mp4?k=536c38a1adb2908d278ea446dce9042d&t=63a7cb24\"},\"mid\":6857567044931451349}","template":{"id":6736200990221953863,"user":{"uid":1051671670,"type":0,"screen_name":"寻味雅安(队长)","avatar_url":"http://maavatar1.meitudata.com/5f413c1419a4f1654.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":7,"bt_text":"使用配方","origin_pic":""}],"type":0,"is_liked":0,"is_favorited":0,"like_count":743,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/PRKzjdjH4qz9oDeD0XWu1bJp2949N.jpg","commend":{"width":1080,"height":1080,"dx":0,"dy":420,"ori_width":1080,"ori_height":1920},"commend_cover":{"width":1080,"height":1080,"dx":0,"dy":124,"ori_width":1080,"ori_height":1920},"comment":1,"width":1080,"height":1920,"caption":"不能错过的石棉烧烤,余生最想和谁去一次?","music":{"music_id":6736200990226148181},"tag_text":"使用量:17","comment_count":13,"pic_comment_count":0,"stream_type":3,"from":"WBi5","template_use_count":17,"clip_count":1,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6681055958636976227||1||597||25||0||121||10||-1||-1||6681055958431455187||1671897700491||0||-1||-1||-1||-1||-1||19||7||8||1537953244||0","color_number":"#A28623","feed_id":6681055958636976227,"user":{"uid":1537953244,"screen_name":"\uD83D\uDC97菲’Texas","avatar_url":"https://xximg1.meitudata.com/Cover6734846030955959165.jpg","friendship_status":0,"identity_type":0,"identity_status":0},"medias":[{"media_id":6681055958775388362,"type":2,"url":"https://xiuxiu.video.xiuxiustatic.com/a433p3yCeEJoQ9pya1JCWvDY5zXk6_H264_1_16c097c5f37beb.mp4?k=ee460339acd989d99a6859d4e1e7c4b1&t=63a7cb24","duration":93.53,"dispatch_video":"{\"sourceUrl\":\"http://xiuxiu.video.xiuxiustatic.com/a433p3yCeEJoQ9pya1JCWvDY5zXk6.mp4?k=ce602178a2b693716ad616783f925a97&t=63a7cb24\",\"paramUrl\":\"http://xx1.video.xiuxiustatic.com/a433p3yCeEJoQ9pya1JCWvDY5zXk6.mp4\",\"264\":{\"720\":\"http://xiuxiu.video.xiuxiustatic.com/a433p3yCeEJoQ9pya1JCWvDY5zXk6_H264_1_16c097c5f37beb.mp4?k=ee460339acd989d99a6859d4e1e7c4b1&t=63a7cb24\"},\"mid\":6858691739818947828}","template":{"id":6681055958431455187,"user":{"uid":1537953244,"type":0,"screen_name":"\uD83D\uDC97菲’Texas","avatar_url":"https://xximg1.meitudata.com/Cover6734846030955959165.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":7,"bt_text":"使用配方","origin_pic":""}],"type":0,"is_liked":0,"is_favorited":0,"like_count":597,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/8pDDZD9cXO2y9XbxvLaNsYd3GyJ1Ee.jpg","commend":{"width":1080,"height":1080,"dx":0,"dy":420,"ori_width":1080,"ori_height":1920},"comment":1,"width":1080,"height":1920,"caption":"香脆美味\uD83E\uDD91秘制酱香烤鱿鱼\uD83E\uDD42胜于烧烤店美味","music":{"music_id":250103276},"tag_text":"使用量:43","comment_count":25,"pic_comment_count":0,"stream_type":3,"from":"LYuX","template_use_count":43,"clip_count":12,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6699966838942483363||1||461||72||21||143||9||-1||-1||6699966838791488251||1671897700491||0||-1||-1||-1||-1||-1||19||7||469||1081313892||0","color_number":"#BBAB78","feed_id":6699966838942483363,"user":{"uid":1081313892,"screen_name":"70后缪姐","avatar_url":"http://maavatar1.meitudata.com/60e68fedcd6126786.jpg","friendship_status":0,"identity_type":2,"identity_status":0},"medias":[{"media_id":6699966839064118362,"type":2,"url":"https://xiuxiu.video.xiuxiustatic.com/Nx4PjOLUknaVKV1KqELtmZmq6DxlQ_H264_1_26c537abb8a53f.mp4?k=ec3c4850b3fa60d10efa6f42d3cefa77&t=63a7cb24","duration":18.716,"dispatch_video":"{\"sourceUrl\":\"http://xiuxiu.video.xiuxiustatic.com/Nx4PjOLUknaVKV1KqELtmZmq6DxlQ.mp4?k=51a064bafc27bb36bb6220adf5ee8f78&t=63a7cb24\",\"paramUrl\":\"http://xx1.video.xiuxiustatic.com/Nx4PjOLUknaVKV1KqELtmZmq6DxlQ.mp4\",\"264\":{\"720\":\"http://xiuxiu.video.xiuxiustatic.com/Nx4PjOLUknaVKV1KqELtmZmq6DxlQ_H264_1_26c537abb8a53f.mp4?k=ec3c4850b3fa60d10efa6f42d3cefa77&t=63a7cb24\"},\"mid\":6859061345255441389}","template":{"id":6699966838791488251,"user":{"uid":1081313892,"type":0,"screen_name":"70后缪姐","avatar_url":"http://maavatar1.meitudata.com/60e68fedcd6126786.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":7,"bt_text":"使用配方","origin_pic":""}],"type":0,"is_liked":0,"is_favorited":0,"like_count":461,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/l6zn3vJiJZgDNQyE639SRxR9E4GRz.jpg","commend":{"width":1080,"height":1080,"dx":0,"dy":420,"ori_width":1080,"ori_height":1920},"commend_cover":{"width":1080,"height":1080,"dx":0,"dy":166,"ori_width":1080,"ori_height":1920},"comment":1,"width":1080,"height":1920,"caption":"美食分享丨美食模板","music":{"music_id":6699966838938289058},"tag_text":"使用量:641","comment_count":72,"pic_comment_count":21,"stream_type":3,"from":"nNhJ","template_use_count":641,"clip_count":1,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6786216361695668648||0||257||20||16||2581||8||-1||-1||6786216113573226915||1671897700491||0||-1||-1||-1||-1||-1||19||9||0||1577229028||0","color_number":"#88602D","feed_id":6786216361695668648,"user":{"uid":1577229028,"screen_name":"TangCherish","avatar_url":"http://maavatar1.meitudata.com/606f27f1d96b97707.jpg","friendship_status":0,"identity_type":0,"identity_status":0},"medias":[{"media_id":6786216361955715671,"type":1,"template":{"id":6786216113573226915,"user":{"uid":1577229028,"type":0,"screen_name":"TangCherish","avatar_url":"http://maavatar1.meitudata.com/606f27f1d96b97707.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":9,"bt_text":"使用配方","cover_color":"#B39B79FF","gif":"http://xiuxiu.video.xiuxiustatic.com/67862163621067107271617960062.mp4?k=d4ebbb4dbd6a75b06d4a8e3cbaf773fc&t=63a7cb24","origin_pic":"http://xximg1.meitudata.com/zE2G2JWh1Pgg2ejm0lNfdY9oOya3z.jpg"}],"type":0,"is_liked":0,"is_favorited":0,"like_count":257,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/yE2Z2BJh50G6ba8VjNKtdwkNx1WZE.jpg","commend":{"width":1308,"height":1308,"dx":0,"dy":170,"ori_width":1308,"ori_height":1648},"commend_cover":{"width":1308,"height":1308,"dx":0,"dy":170,"ori_width":1308,"ori_height":1648},"comment":1,"width":1308,"height":1648,"caption":"没有啤酒饮料的烧烤~\n周末愉快\n图片来自微博,侵删","tag_text":"使用量:4.9万","comment_count":20,"pic_comment_count":16,"stream_type":1,"from":"6QHo","template_use_count":48730,"clip_count":0,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6973438690031860308||1||447||15||0||100||0||-1||-1||6973438689914419765||1671897700491||0||-1||-1||-1||-1||-1||19||7||0||1877722754||0","color_number":"#BE8D53","feed_id":6973438690031860308,"user":{"uid":1877722754,"screen_name":"TenieYoo","avatar_url":"http://maavatar1.meitudata.com/62810d327e7f89415.jpg","friendship_status":0,"identity_type":0,"identity_status":0},"medias":[{"media_id":6973438690535176995,"type":2,"url":"http://xiuxiu.video.xiuxiustatic.com/WR1jbabtJKbkz4RBVOfGvPEYPeGy_H264_1_22e46572e972e0.mp4?k=be7479f6e813642a12c3ef7daac45b64&t=63a7cb24","duration":40.233333587646484,"dispatch_video":"{\"sourceUrl\":\"http://xiuxiu.video.xiuxiustatic.com/WR1jbabtJKbkz4RBVOfGvPEYPeGy.mp4?k=5772b5f352066db78d2d97dcccd20e28&t=63a7cb24\",\"paramUrl\":\"http://xx1.video.xiuxiustatic.com/WR1jbabtJKbkz4RBVOfGvPEYPeGy.mp4\",\"264\":{\"720\":\"http://xiuxiu.video.xiuxiustatic.com/WR1jbabtJKbkz4RBVOfGvPEYPeGy_H264_1_22e46572e972e0.mp4?k=be7479f6e813642a12c3ef7daac45b64&t=63a7cb24\"},\"265\":{\"720\":\"http://xiuxiu.video.xiuxiustatic.com/WR1jbabtJKbkz4RBVOfGvPEYPeGy_H265_wz_22e46b5bb36e50.mp4?k=7138d3cf83359217bba942ee09c37721&t=63a7cb24\"},\"mid\":6973438687485916955}","template":{"id":6973438689914419765,"user":{"uid":1877722754,"type":0,"screen_name":"TenieYoo","avatar_url":"http://maavatar1.meitudata.com/62810d327e7f89415.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":7,"bt_text":"使用配方","origin_pic":""}],"type":0,"is_liked":0,"is_favorited":0,"like_count":447,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/lGL16E6Iq5NdNaQBaYEgtRX5m656N4.jpg","commend":{"width":1080,"height":1080,"dx":0,"dy":0,"ori_width":1080,"ori_height":1440},"commend_cover":{"width":1080,"height":1080,"dx":0,"dy":0,"ori_width":1080,"ori_height":1440},"comment":1,"width":1080,"height":1440,"caption":"Mini Vlog|这是什么破店⁉️这么好吃❤️\uD83D\uDD25","tag_text":"使用量:19","comment_count":15,"pic_comment_count":0,"stream_type":3,"from":"K5SX","template_use_count":19,"clip_count":17,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6706854659074578749||1||2153||69||37||663||35||-1||-1||6706854659003275526||1671897700491||0||-1||-1||-1||-1||-1||19||7||340||63829469||0","color_number":"#9E8447","feed_id":6706854659074578749,"user":{"uid":63829469,"screen_name":"热爱生活的小虾虾","avatar_url":"http://maavatar1.meitudata.com/5e9fb54e830b8683.jpg","friendship_status":0,"identity_type":2,"identity_status":1},"medias":[{"media_id":6706854659242351043,"type":2,"url":"https://xiuxiu.video.xiuxiustatic.com/j5dgWWizXqLz26NpqEWCx2PERXLXO_H264_1_18e07224e44ac.mp4?k=bbdcabbc0e9a2823e5f0bf81eb055a6a&t=63a7cb24","duration":20.634000778198242,"dispatch_video":"{\"sourceUrl\":\"http://xiuxiu.video.xiuxiustatic.com/j5dgWWizXqLz26NpqEWCx2PERXLXO.mp4?k=0fcd303e22600576a5835721445fb6e4&t=63a7cb24\",\"paramUrl\":\"http://xx1.video.xiuxiustatic.com/j5dgWWizXqLz26NpqEWCx2PERXLXO.mp4\",\"264\":{\"720\":\"http://xiuxiu.video.xiuxiustatic.com/j5dgWWizXqLz26NpqEWCx2PERXLXO_H264_1_18e07224e44ac.mp4?k=bbdcabbc0e9a2823e5f0bf81eb055a6a&t=63a7cb24\"},\"mid\":6856918188199797819}","template":{"id":6706854659003275526,"user":{"uid":63829469,"type":0,"screen_name":"热爱生活的小虾虾","avatar_url":"http://maavatar1.meitudata.com/5e9fb54e830b8683.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":7,"bt_text":"使用配方","origin_pic":""}],"type":0,"is_liked":0,"is_favorited":0,"like_count":2153,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/nGOg66Flvn5l6qQ9ljf2jlEWLGyx.jpg","commend":{"width":1080,"height":1080,"dx":0,"dy":337,"ori_width":1080,"ori_height":1920},"commend_cover":{"width":1080,"height":1080,"dx":0,"dy":334,"ori_width":1080,"ori_height":1920},"comment":1,"width":1080,"height":1920,"caption":"不要吃外卖了!自己动手做","music":{"music_id":250104997},"tag_text":"使用量:3749","comment_count":69,"pic_comment_count":37,"stream_type":3,"from":"qjtL","template_use_count":3749,"clip_count":7,"has_pic_collection":0,"has_material":0},{"item_type":1,"corner_mark":"","scm":"60006.1.0.0$$$6756951631085727414||0||1605||5715||5569||44942||52||-1||-1||6756951413598483623||1671897700491||0||-1||-1||-1||-1||-1||19||9||131175||1075134424||0","color_number":"#7A3B29","feed_id":6756951631085727414,"user":{"uid":1075134424,"screen_name":"可颂\uD83E\uDD50","avatar_url":"http://maavatar1.meitudata.com/60695d40f2f9a1541.jpg","friendship_status":0,"identity_type":2,"identity_status":0},"medias":[{"media_id":6756951631240128739,"type":1,"template":{"id":6756951413598483623,"user":{"uid":1075134424,"type":0,"screen_name":"可颂\uD83E\uDD50","avatar_url":"http://maavatar1.meitudata.com/60695d40f2f9a1541.jpg","country_id":0,"province_id":0,"city_id":0,"is_invited":0,"mt_num":0},"labels":[],"scheme":"","name":""},"bt_type":9,"bt_text":"使用配方","cover_color":"#B38F79FF","gif":"http://xiuxiu.video.xiuxiustatic.com/68202486135888485701626073983.mp4?k=43fbb57a62dfa83aa010a5f08ab4de29&t=63a7cb24","origin_pic":"http://xximg1.meitudata.com/jqP2ed1hzE5KaejXZz21Sx2pvKw3JJ.jpg"}],"type":0,"is_liked":0,"is_favorited":0,"like_count":1605,"text_link_params":[],"code":60006,"thumb":"https://xximg1.meitudata.com/DP2kaLYtmKXa5KoK5zmBcm6OxZPYGk.jpg","commend":{"width":1440,"height":1440,"dx":0,"dy":0,"ori_width":1440,"ori_height":1440},"commend_cover":{"width":1440,"height":1440,"dx":0,"dy":0,"ori_width":1440,"ori_height":1440},"comment":1,"width":1440,"height":1440,"caption":"美食综艺晒照,烧烤大作战\n闪闪发光的美味啊!","tag_text":"使用量:540.2万","comment_count":5715,"pic_comment_count":5569,"stream_type":1,"from":"84Ia","template_use
String k2
=
k(currentTimeMillis);
if
(!TextUtils.isEmpty(k2)) {
concurrentHashMap.put(
"client_session"
, k2);
}
String k2
=
k(currentTimeMillis);
if
(!TextUtils.isEmpty(k2)) {
concurrentHashMap.put(
"client_session"
, k2);
}
private static String k(
long
j2) {
com.meitu.library.appcia.trace.b.i(
184462
);
if
(!TextUtils.isEmpty(D) && D.length() >
=
10
) {
int
i2
=
(
int
) (j2
%
10
);
StringBuilder sb
=
new StringBuilder(D.substring(
0
,
10
));
sb.replace(i2, i2
+
1
, String.valueOf(i2));
String a2
=
com.meitu.library.util.a.a(sb.toString());
com.meitu.library.appcia.trace.b.b(
184462
);
return
a2;
}
com.meitu.library.appcia.trace.b.b(
184462
);
return
"";
}
private static String k(
long
j2) {
com.meitu.library.appcia.trace.b.i(
184462
);
if
(!TextUtils.isEmpty(D) && D.length() >
=
10
) {
int
i2
=
(
int
) (j2
%
10
);
StringBuilder sb
=
new StringBuilder(D.substring(
0
,
10
));
sb.replace(i2, i2
+
1
, String.valueOf(i2));
String a2
=
com.meitu.library.util.a.a(sb.toString());
com.meitu.library.appcia.trace.b.b(
184462
);
return
a2;
}
com.meitu.library.appcia.trace.b.b(
184462
);
return
"";
}
function main() {
Java.perform(function () {
var client_session
=
Java.use(
"com.meitu.meitupic.framework.util.g"
);
client_session.k.implementation
=
function (arg1) {
console.log(
"++++++++++++++++++++++++++++++++++++++++"
)
console.log(
"args1: "
+
arg1)
var result
=
this.k(arg1);
console.log(
"result: "
+
result)
console.log(
"++++++++++++++++++++++++++++++++++++++++"
)
return
result;
}
});
}
setImmediate(main)
function main() {
Java.perform(function () {
var client_session
=
Java.use(
"com.meitu.meitupic.framework.util.g"
);
client_session.k.implementation
=
function (arg1) {
console.log(
"++++++++++++++++++++++++++++++++++++++++"
)
console.log(
"args1: "
+
arg1)
var result
=
this.k(arg1);
console.log(
"result: "
+
result)
console.log(
"++++++++++++++++++++++++++++++++++++++++"
)
return
result;
}
});
}
setImmediate(main)
public static SigEntity generatorSig(@NonNull String
str
, @NonNull String[] strArr, @NonNull String str2, @NonNull
Object
obj) {
b.i(
101093
);
if
(!(obj instanceof Context)) {
AndroidRuntimeException androidRuntimeException
=
new AndroidRuntimeException(
"req ctx"
);
b.b(
101093
);
throw androidRuntimeException;
}
byte[][] bArr
=
new byte[strArr.length];
for
(
int
i2
=
0
; i2 < strArr.length; i2
+
+
) {
if
(strArr[i2]
=
=
null) {
strArr[i2]
=
"";
}
bArr[i2]
=
strArr[i2].getBytes();
}
SigEntity buildSigEntity
=
buildSigEntity(ElfReader.b(
str
, bArr, str2, (Context) obj));
b.b(
101093
);
return
buildSigEntity;
}
public static SigEntity generatorSig(@NonNull String
str
, @NonNull String[] strArr, @NonNull String str2, @NonNull
Object
obj) {
b.i(
101093
);
if
(!(obj instanceof Context)) {
AndroidRuntimeException androidRuntimeException
=
new AndroidRuntimeException(
"req ctx"
);
b.b(
101093
);
throw androidRuntimeException;
}
byte[][] bArr
=
new byte[strArr.length];
for
(
int
i2
=
0
; i2 < strArr.length; i2
+
+
) {
if
(strArr[i2]
=
=
null) {
strArr[i2]
=
"";
}
bArr[i2]
=
strArr[i2].getBytes();
}
SigEntity buildSigEntity
=
buildSigEntity(ElfReader.b(
str
, bArr, str2, (Context) obj));
b.b(
101093
);
return
buildSigEntity;
}
public
class
c {
public static String a;
static {
com.meitu.library.appcia.trace.b.i(
183635
);
a
=
"6184556633574670337"
;
com.meitu.library.appcia.trace.b.b(
183635
);
}
}
public
class
c {
public static String a;
static {
com.meitu.library.appcia.trace.b.i(
183635
);
a
=
"6184556633574670337"
;
com.meitu.library.appcia.trace.b.b(
183635
);
}
}
public static Application getApplication() {
b.i(
82595
);
Application application
=
mBaseApplication;
b.b(
82595
);
return
application;
}
public static Application getApplication() {
b.i(
82595
);
Application application
=
mBaseApplication;
b.b(
82595
);
return
application;
}
function main() {
Java.perform(function () {
var SigEntity
=
Java.use(
"com.meitu.secret.SigEntity"
);
SigEntity.generatorSig.overload(
'java.lang.String'
,
'[Ljava.lang.String;'
,
'java.lang.String'
,
'java.lang.Object'
).implementation
=
function (arg1, arg2, arg3, arg4) {
console.log(
"++++++++++++++++++++++++++++++++++++++++"
)
console.log(
"arg1: "
, arg1)
console.log(
"arg2: "
, arg2)
console.log(
"arg3: "
, arg3)
console.log(
"arg4: "
, arg4)
var result
=
this.generatorSig(arg1, arg2, arg3, arg4);
console.log(
"result_sig: "
, result.sig.value);
console.log(
"result_sigTime: "
, result.sigTime.value);
console.log(
"++++++++++++++++++++++++++++++++++++++++"
)
return
result;
}
});
}
setImmediate(main)
function main() {
Java.perform(function () {
var SigEntity
=
Java.use(
"com.meitu.secret.SigEntity"
);
SigEntity.generatorSig.overload(
'java.lang.String'
,
'[Ljava.lang.String;'
,
'java.lang.String'
,
'java.lang.Object'
).implementation
=
function (arg1, arg2, arg3, arg4) {
console.log(
"++++++++++++++++++++++++++++++++++++++++"
)
console.log(
"arg1: "
, arg1)
console.log(
"arg2: "
, arg2)
console.log(
"arg3: "
, arg3)
console.log(
"arg4: "
, arg4)
var result
=
this.generatorSig(arg1, arg2, arg3, arg4);
console.log(
"result_sig: "
, result.sig.value);
console.log(
"result_sigTime: "
, result.sigTime.value);
console.log(
"++++++++++++++++++++++++++++++++++++++++"
)
return
result;
}
});
}
setImmediate(main)
rpc.exports
=
{
"sig"
: function (params) {
var ret_dict
=
{};
Java.perform(function () {
var SigEntity
=
Java.use(
"com.meitu.secret.SigEntity"
);
var arg1
=
"search/feeds.json"
;
var arg2
=
params
var arg3
=
"6184556633574670337"
;
var BaseApplication
=
Java.use(
'com.meitu.library.application.BaseApplication'
);
var arg4
=
BaseApplication.getApplication();
var result
=
SigEntity.generatorSig(arg1, arg2, arg3, arg4);
ret_dict[
"sig"
]
=
result.sig.value;
ret_dict[
"sigTime"
]
=
result.sigTime.value;
console.log(
"[*] sig:"
, result.sig.value);
console.log(
"[*] sigTime:"
, result.sig.value);
});
return
ret_dict;
},
"cnt"
: function (timestamp) {
var ret_dict
=
null;
Java.perform(function () {
var client_session
=
Java.use(
"com.meitu.meitupic.framework.util.g"
);
ret_dict
=
client_session.k(timestamp);
console.log(
"ret_dict: "
, ret_dict);
});
return
ret_dict;
}
}
rpc.exports
=
{
"sig"
: function (params) {
var ret_dict
=
{};
Java.perform(function () {
var SigEntity
=
Java.use(
"com.meitu.secret.SigEntity"
);
var arg1
=
"search/feeds.json"
;
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)