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

第十二题 白云苍狗

2020-5-13 10:28
5130

拖进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)


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2020-5-13 13:02 被gannicusx编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回