-
-
[原创]看雪CTF2017 第十题 CM逆向分析
-
发表于: 2017-6-20 21:34 4430
-
又是大数运算,IDA打开:
F5,好直观:
查找字符串:
有PEID和上边的字符串信息可知,是用GMP实现的大数运算,接着就是猜每个函数的意义了。
有MPN的官方文档可知:
1.所有对象使用前要初始化,通过调用函数 mpz_init来完成
2.一般的函数,第一个参数为输出函数,后边的为输入参数
刚开始,使用的默认值来计算,进展缓慢,后来把mpn_set_str_140007990 处的大数改成0x10之后,进展飞快。
完整函数如上,流程如下:
结构体定义:
初始化前6个字符的例子:
内存中,rcx地址的值:
运行之后:
6.判断是否为素数
这里花了点时间,后来通过连续测试0-0x10基本可以确定是判断素数。
跟官方文档似乎不太一样。
7.初始化几个值
8.用大数0x62..... 模上我们输入的64位然后与0比较:
9.用大数0x62..... 除以我们输入的64位然后与商做比较,商大于我们输入的数:
10.最后一段,p=input[6:64] 商q=big_1/p v8=(p-1)(q-1)
有了以上信息,结合上一题的坑,基本猜到是RSA,不然还能有啥。。。。。。。。
RSA 算法:
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: