-
-
第十二题 白云苍狗
-
发表于: 2020-5-13 10:28 5571
-
拖进ida反编译
发现核心在于sub_ED13E0 函数
这个函数太大了 在F5里是看不了的 直接看汇编代码
发现全是not and操作
大概知道设计的用意了,因为只用NAND操作就可以实现cpu,所以应该是相当于作者用NAND实现了某个函数
把汇编代码导出来用python分析,总的有三十多万个NAND操作,看了两眼毫无头绪
这个地方只有两种方案
- 分析出这些操作干啥的
- 通过输入不同的数据 看输出猜结论
经过一顿瞎试 发现有个地方跟输入的平方有关,但是还是猜不出来,但是心中有了平方这样的印象
只能硬着头皮看那一堆NAND了
因为有了平方的印象,很轻松就发现开头就是求x^2
往下读发现做了减法,最后得出是做了取模操作
模数是 m = 4321040810422309623323
在最后又做了一次乘法
所以这个函数就是 f = x^3 % m
这里作者加了个限制, x < 2^64的话结果就是0, 增加了直接通过试数据猜出结论的难度
那么剩下就是求x 使得 x^27 = 556372 (mod m)
用一下欧拉定理 (x^27)^y = x^(27 * y % phi(m)) (mod m)
令 27*y = 1 (mod phi(m))
(x^27)^y = x = 556372^y (mod m)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2020-5-13 13:02
被gannicusx编辑
,原因:
赞赏
看原图
赞赏
雪币:
留言: