method = “GET”
path = “/api/sns/v6/homefeed”
query = “client_volume=0.1875&geo=eyJsYXRpdHVkZSI6MCwibG9uZ2l0dWRlIjowfQ%3D%3D&known_signal=%7B%22session_id%22%3A%223488E49CE3114526B6756BC055561AC0-000%22%2C%22h_status%22%3A%7B%22h_ac%22%3A%22S%22%2C%22con%22%3A%221.0%22%2C%22time_away_from_now%22%3A%22205.60810112953186%22%7D%2C%22idfa%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22hp_con%22%3A0%2C%22g_speed_y%22%3A0%2C%22battery%22%3A%2275%22%2C%22ug_user%22%3A%7B%22user_types%22%3A%5B%5D%2C%22last_act_time%22%3A1767283200000%2C%22first_mf_time%22%3A0%2C%22reg_time%22%3A1756466302000%7D%2C%22m_active%22%3A0%2C%22hp_type%22%3A0%2C%22device_model%22%3A%22iPhone%2012%22%2C%22paid%22%3A%2255a94609043df0cfae7d02d861df5f78-08c0b3dd9c183c52e40b53ffa09237df-fe3a0836ecec07e18120ec336ed47735%22%2C%22brightness%22%3A%2241%22%2C%22nqe_level%22%3A6%2C%22device_level%22%3A1%2C%22ug_device%22%3A%7B%22device_types%22%3A%5B%5D%2C%22last_act_time%22%3A1767283200000%2C%22reg_time%22%3A1766933437000%7D%7D&last_card_position=-1&last_live_id=&last_live_position=-1&launch_scenario=1&loaded_ad=&num=20&oid=homefeed_recommend&orientation=portait&personalization=1&refresh_type=2&trace_id=6806A556-4096-44E6-8575-9A08CF95FC00&use_jpeg=1&user_action=0”
body = b’’
mua = “eyJhIjoiRUNGQUFGMDIiLCJjIjowLCJrIjoiNDFmMWU1Nzg5Y2UwNjc0MDAxMjMwZGE0YzlkZWQ5YTg5NjRiYzMzMzMzYjhjZTMxZjExYTI0NDMxMDBhZTUzZCIsInAiOiJpIiwicyI6IjFlNjJlOGI3NzUwZjUyY2ViNGQxY2FiZGNkMmZkNjk2IiwidSI6IjAwMDAwMDAwNjNmYzIxNWJmNjBjMDU2ZDU2ZmIxNjQ1NWM0ODdlNDQiLCJ2IjoiMi4xLjQ4In0.Cr2-zMs84CHts2CEMfYB3D8PG9mwhTphf3-aRQaiCo32jr3N8wZqmCG4k0iVlSq1dkNZNzoyLk7qix2Wtdyqlcf-5ZA5-7s4X_fdKfGCLDZs9sl3ikBCgP6iQ9sMVaqYSGb5iC7wpcVwhrnNUEmO7GNe9jHGRSVFmFEjbftlAA73FVYn0h0yTxwOph2yLO2gxc27H6jbTvdOGHDSxt0R3dnd5qN5Yh7mEY57Cg2onsJCYOcKoqS1anszzyZZT0Co88vPQYYK_GN5cOKHBTe0S8_jBTHFWvPS6ezKdZUwmOXF64To4E3n-m7g5IzLGnBWLy1drhZotyIGFpXLJ0TS-AiNFVdQpQussC0RVgi9cXxJeF0eA7sJXI-AUdc1k5itdC_dltsamJM8XBZlCCT3qpHQ_do5zwOpe54gWJ5Fm5ugewBOHPXlmdt98K4XMcHIwlRwWasWvehtn9UfCFtS8HF3H7KMUqToVPttpQDiCFYdstVf7SCXzyyRNAAQqQ-UqrM10e8hW1hTvU3ikcGMuruItvwP33lLnVQnnDiuO-uvbPUqvK7uWAwmziZtHc8c.”
这样排列计算出来的后32位匹配,前面的不是很了解
mini-sig 不是标准算法而且每个版本都有差异,你得 trace 去分析
大神能点播下吗?尝试用您的chomper去模拟能生成。但是trace不太会
模拟执行结果中的 mini-sig 是无法直接用的,因为 mini-sig 的签名对象包含 mini-mua,模拟过程中生成的 mini-mua 和你实际用的是不一致的。不过你只要找到 mini-sig 的入口,把入参替换掉,那么结果其实就是可用的。
分析的话,演示里面的调用的是一个比较外层的函数,包含多个参数的生成过程。所以首先得把不同参数的生成过程拆解出来,做到了这一步那你也差不多就知道了不同参数的入参是啥(那就可以想办法替换)。然后 trace 就是根据你拆解出来的加密过程,把起/止地址设置好,中间执行的汇编、寄存器变化全部记录下来,想还原算法就根据这些日志把汇编改写为你用的编程语言。