长久以来,佣兵辗转于不同主人之间,用血肉之躯为自己赢得一席之地。朝不保夕,危险,背叛和死亡都是家常便饭。今天的朋友可能是明日的敌人,过去的对手也能摇身一变成为如今的同盟。但仍有杰出者脱颖而出,人称他为“龙”。龙不仅是收钱杀人,更以强烈的领袖气质将亡命之徒们团结起来,发展为强大的佣兵组织。曹操多次雇佣龙为自己效命,此后,曹操巧妙撩拨着龙的野心。龙产生了摆脱佣兵身份,成为人上之人的渴望。杀死战神吕布,则是实现这个梦想的第一步。数年后,曹操的大军席卷了三国,却在长坂坡遭遇前所未有的重挫。惊天动地的雷霆涤荡着曹军引以自豪的名将——赵子龙。
攻破此题的战队排名一览:
这道题是一系列连载题中的一道题。和上一次的题相比,加入了反调试,而且虚拟执行的部分强化了很多。CPU指令更是增加了多种混淆,让题目的难度更上一层楼!
野生程序猿,临床医学专业转行,现在北京某网络安全研究院工作,研究分析内核,对黑科技以及产品架构有很大兴趣,在编写分析内核的同时设计出一款恶意代码分析神器,适合安服和人员使用,欢迎找我索取内测版,kctf中的战神伽罗系列题目某种程度上反应了本猿平时的工作特征,本系列赛题将会和你一起不断进化,成长,欢迎继续关注,感谢看雪!感谢有你参与!
realSnCheck调用477778与之前类似
1.0 ---dephi+jscrypt 内存中暴露了key
2.0--- dephi+代码重定位 +VMP;虽然有vmp但是主要算法在代码重定位部分
3.0--- dephi+代码重定位 +VMP:所有代码都在vmp
4.0---dephi+代码重定位 +VMP:算法复杂化
合作伙伴
原文链接:https://mp.weixin.qq.com/s/fFBKE4IHV7BRjoCyCXEnUQ
长久以来,佣兵辗转于不同主人之间,用血肉之躯为自己赢得一席之地。朝不保夕,危险,背叛和死亡都是家常便饭。今天的朋友可能是明日的敌人,过去的对手也能摇身一变成为如今的同盟。但仍有杰出者脱颖而出,人称他为“龙”。龙不仅是收钱杀人,更以强烈的领袖气质将亡命之徒们团结起来,发展为强大的佣兵组织。曹操多次雇佣龙为自己效命,此后,曹操巧妙撩拨着龙的野心。龙产生了摆脱佣兵身份,成为人上之人的渴望。杀死战神吕布,则是实现这个梦想的第一步。数年后,曹操的大军席卷了三国,却在长坂坡遭遇前所未有的重挫。惊天动地的雷霆涤荡着曹军引以自豪的名将——赵子龙。
题目简介
本题共有1490人围观,最终只有9支团队攻破成功。其中金左手战队一马当先,在开赛当天就以最快的速度破解此题。
攻破此题的战队排名一览:
不知道这道题有没有让你苦思冥想呢?接下来我们一起来看一下这道题的点评和详细解析吧。
看雪评委crownless点评
这道题是一系列连载题中的一道题。和上一次的题相比,加入了反调试,而且虚拟执行的部分强化了很多。CPU指令更是增加了多种混淆,让题目的难度更上一层楼!
出题团队简介
本题出题战队 战神伽罗 :
战神伽罗团队成员只有simpower一个人,但依然出了难度很高的题,下面是相关简介:
野生程序猿,临床医学专业转行,现在北京某网络安全研究院工作,研究分析内核,对黑科技以及产品架构有很大兴趣,在编写分析内核的同时设计出一款恶意代码分析神器,适合安服和人员使用,欢迎找我索取内测版,kctf中的战神伽罗系列题目某种程度上反应了本猿平时的工作特征,本系列赛题将会和你一起不断进化,成长,欢迎继续关注,感谢看雪!感谢有你参与!
设计思路
1、首先将一部分密码封装在javascript中,通过javascript将自身进行加密。
2、通过简单的汇编代码变形算法 (加减固定数值) ,将一部分密码代码编译到可执行区域,通过指令跳转和对硬编码的变形对这部分密码进行恢复比对。 3、将恢复的代码注入到IE内核当中,并显示出来。
4、增加了一些反调试。
5、密码部分增加了混淆。
6、CPU指令增加了多种混淆。
破解思路:
1、有多种反调试机制,破解方法网上有,反调对抗过试之后,搜索内存可以搜到javascript代码,并将代码中的一部分密码获取出来。
2、解密后代码,密码为:simpower91
function ckpswd() {
key="Simpower91";
a = document.all.pswd.value;
if (a.indexOf(key) ==0) {
l=a.length;
i=key.length;
sptWBCallback(a.substring(i,l));
} else {
alert("wrong!<" + a + "> is not my GUID ;-)");
return "1234";
}
}
function ok(){
alert("congratulations!");
}
3、剩下4位很容易就可以跟踪到比对代码的那个call处,有多个很怪异的指令被跳过,将 每个字节-7F就是剩余的ascii码 。
由于有多个这样的字节,因此需要尝试一下,经过尝试后,得到如下密码:
其中E0-7F='a'B2-7F='3'
B1-7F='2'B0-7F='1'
界面如下所示(注册成功后):
解题思路
本题解题思路由看雪论坛oooAooo提供:
概述
1、依然是dephi+脚本形式。
2、与前版相比加入了反调试。
3、与前版相比解密部分全部用虚拟机实现,不会用代码执行非虚拟机指令。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-10-10 13:35
被Editor编辑
,原因: