1.抓包,可以看到密码是被加密过的2.ida打开对应so,发现没有被混淆,但是算法应该是有很大问题3.转换一下16进制的公钥, 我这里使用py的cryptography转换的,发现正好是1024size的共钥模数,指数对应的是65537。然后点进去encrypt_one_group后继续分析4.进去第一反应就是很懵圈,为什么会有一个init和crypt,并且上面已经encrypt了,而且看这个init多半跟rsa没多大关系,看这个s是被填充了128个无符号的0,之后在初始化这个s的数组,这就更加确定下面两个函数的操作是加密之后的,因为rsa加密长度过长会进行切分,每一轮不大于117,等于117输出的位数就是128(不了解的可以去了解一下)5.用frida 直接hook一下ch_crypt的入参和最后a7的返回值,可以看到s init之后的128位数组 crypt前sa7 正好是128位,说明已经被rsa加密好了 crypt后a76.先用c还原一下crypt这个函数, 这里就不贴代码了,大致看一下这个函数的内容是在做异或运算重点是这句代码,在c里面打印一下每轮 (result + ((v6 + (result + v5)) & 0x7F)) 的值这个ch_hex_map才是最终异或的映射表,打印一下结果这不完全对应上了吗7.现在就差这个rsa不知道啥情况了,去里面大概瞟一眼,然后先把流程走通,这都是很明显的pkcs1v5的填充了PKCS1-v1_5 编码a) 生成一个 伪随机非零串PS , 长度为 k – mLen – 3, 所以至少为8, 因为 k-mLen>11b) 将PS, M,以及其他填充串 一起编码为 EM, 长度为 k, 即:EM = 0×00 || 0×02 || PS || 0×00 || M(抄的)重点来了: 1.正常base64编码字符串 A-Za-z0-9+/=,而它这个一看很像但又不像,如果拿下面这个顺序的编码加密出来的话差别又很大,这是因为它自己的base64函数把这个编码又重新拆分成A-Za-z0-9-_=。 2.开头第一张图片有一个占位0x1,这也是一个很重要的坑,最后一位永远是0x1。
总结: 1.计算明文加密好的长度+1填充0x1 2.分组rsa pkcs1v5加密 之后并与128位码表异或 3.base64,注意编码顺序 后面也是登陆成功了
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
feng504x 楼主能提供一下样本吗, 也想还原一下
mb_oowzftna 某同城吗,楼主
maple_0828 楼主我下载了,但是不能抓包,而且里面so很多,这个怎么弄呢?求大神讲解
寻求付费帮助 跪求大神出手 联系方式在个人资料里 谢谢 或者私信我蝙蝠号我加您