首页
社区
课程
招聘
[讨论]看雪CTF2016第二题分析讨论
发表于: 2016-11-6 13:34 4930

[讨论]看雪CTF2016第二题分析讨论

2016-11-6 13:34
4930
从作者提供的设计文档可以看出,作者非常认真,并且下了很大功夫。

该题目是一道算法题,作者为了提高难度将算法验证过程放在了LUA脚本里,另外用RC6把所有字符串进行了加密。

要想破解此题,首先得找到算法验证部分,并且得到注册码加密后的密文;然后要对算法有一定了解,能够识别出作者改写过的AES算法,接着就是找到crackme里AES解密的接口进行解密,在AES解密后,再进行一次RC6解密即可还原出注册码,

看得出作者技术扎实,对软件保护和破解有自己独到的认识!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 10914
活跃值: (3288)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
2
欢迎大家来讨论 交流技术!
2016-11-6 13:34
0
雪    币: 16468
活跃值: (2493)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
3
嗯. 希望比赛结束以后, 可以放出源码, 我看第一题第二题写的程序都挺有意思的..下面还有一大堆. 估计还有各式各样的方式, 学习下.
2016-11-6 13:40
0
雪    币: 13095
活跃值: (4092)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
4
第二题用LUA文件也算是够狠的了,好在只是简单的改了文件头,没有变态到改pcode。
LUA中的验证代码也很简单,不知道有没有人没分析LUA脚本就做出来了?应该还是有可能吧?
2016-11-7 07:47
0
雪    币: 1355
活跃值: (339)
能力值: ( LV13,RANK:920 )
在线值:
发帖
回帖
粉丝
5
我说句实在话,如果不是嵌入LUA脚本虚拟引擎,什么RC6等其他算法根本不足为惧,如果对LUA反编译和破解没有研究过的话,很难找到最终的校验代码。

所以该CrackMe真正倚仗的不是什么算法,而是脚本虚拟引擎。前面的算法都是漂亮的、协调的,到了最后反倒没有自信将关键 CHECK隐藏到了LUA,让人感觉到作品出现了“不协调”。

难点就是LUA,作品的缺憾也在LUA,如果没有嵌入LUA脚本,整体协调、平衡将会是很棒的。
2016-11-7 08:18
0
雪    币: 134
活跃值: (11)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
以前没接触过Lua的我,做了第二题后让我对lua有了深刻的认识...没有找到能解析Lua字节码的luadec,也不熟悉字节结构只好在luaV_execute里对每个指令下断看他跑了些什么(已经一个case一个case跟Lua源码大致比较过,确认没有修改指令序列),后来发现里面关键的只有一个OP_EQ,主要的还是在外面fnGetRegSnToVerify和fnCalcUserInputRegSnAfterEnc,对算法了解太少,最后只找到正确序列号AES后的值,不会还原...花在熟悉lua上太多时间了

看大神们根据加密算法写出逆运算和自己手工还原lua字节码,大写的!!!
2016-11-7 10:38
0
雪    币: 13095
活跃值: (4092)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
7
luadec网上有哦,偶也是临时下载了一个能解5.3的,不过要改文件头才能反编译出来
2016-11-7 10:40
0
雪    币: 134
活跃值: (11)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
我找到的只有那个5.1的...而且lua各版本差异太大了,我一开始还没体会到,自己编译了一个是5.2的字节码,跟crackme里解出来的头差距蛮大,到后面我断luaV_execute对比指令的时候我才发现指令数不对,5.2只有30多个,5.3才是40多,到这会儿我才知道版本... 到这一步我也就没打算再把lua字节码解出来了,只想知道他都执行些什么也就差不多了,因为这会我已经对Lua执行栈比较眼熟了,取参数,放参数,返回,这些值我都能在内存里找到,下次再遇到Lua的应该能很快上手了
2016-11-7 10:55
0
雪    币: 289
活跃值: (83)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
9
其实加解密的函数程序里都有,只要替换下参数运行下就可以解出来了

luadec github上有5.3的
2016-11-7 11:23
0
雪    币: 134
活跃值: (11)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
是的解密函数我找到了,但是我没想到也能用来解序列号...我只把他当做解密提示字符串的了
还是功力不够,得多跟大神们学习
2016-11-7 12:32
0
雪    币: 223
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
请教下大牛在做题的时候要如何识别加密算法如rc6那些呢?每次看到一长串的函数就不知道如何下手了...
2016-11-16 10:40
0
游客
登录 | 注册 方可回帖
返回
//