首页
社区
课程
招聘
第十二题 白云苍狗
发表于: 2020-5-13 10:28 5571

第十二题 白云苍狗

2020-5-13 10:28
5571

拖进ida反编译
发现核心在于sub_ED13E0 函数
这个函数太大了 在F5里是看不了的 直接看汇编代码
发现全是not and操作
大概知道设计的用意了,因为只用NAND操作就可以实现cpu,所以应该是相当于作者用NAND实现了某个函数

 

把汇编代码导出来用python分析,总的有三十多万个NAND操作,看了两眼毫无头绪
这个地方只有两种方案

  1. 分析出这些操作干啥的
  2. 通过输入不同的数据 看输出猜结论

经过一顿瞎试 发现有个地方跟输入的平方有关,但是还是猜不出来,但是心中有了平方这样的印象

 

只能硬着头皮看那一堆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编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//