第284章 江寒的操作

“CrackMe”是很多逆向论坛里十分流行的玩法。

一些人为了测试自己的软件保护技术,就会制作一些CrackMe程序,让别人来尝试破解。

网上也经常会有一些CM(CrackMe)竞赛。

根据设计者的意图和加密技术水平,不同的CrackMe,破解难度天差地远。

江寒点击了一下下载链接,题目给出的CrackMe,很快就下载了下来。

然后,先将其运行了起来,观察一下程序的外在表现。

这是个Windows PE文件,界面十分朴素,只提供了两个输入框。

一个用来输入UserName(用户名),另一个用来输入SN(serial number,序列号),下面还有个【Login】按钮,用来检测UserName和SN是否匹配。

看完了这些内容,对程序的结构心里有数之后,江寒就将窗口关掉了。

随后,他就打开了著名的调试工具OllyICE,并在调试器中加载了这个CrackMe。

开始调试之前,先设置个断点。

断点是调试器的一种功能,可以让程序中断在需要的地方,以方便分析。

常用的断点有INT3断点、硬件断点、内存断点、消息断点、条件断点等。

例如LBUTTON_UP,就是很常用的消息断点,功能是当鼠标左键抬起时,中断程序运行。

又如GetDlgItemText断点,当程序试图调用Windows的对应API,获取输入框里的文本内容时,就会被拦下。

江寒先试着设置了GetDlgItemText和GetDlgItemTextA断点,然后按了下F9,让程序跑了起来。

CrackMe的窗口出现后,先随便输入一组UserName和SN,然后用鼠标点击了一下【Login】按钮。

结果……

程序直接弹出了一个MsgBOX(消息框),提示【用户名和序列号不匹配】。

很遗憾,在这次尝试中,断点并没有发挥作用。

这说明在这个CrackMe里,并没有使用GetDlgItemText或者GetDlgItemTextA来读取字符串。

否则的话,就会被调试器拦截下来,而不会执行关键Call了。

所谓关键Call,是指程序中用来计算用户名和序列号的函数,通常执行完关键Call,很快就能找到一个条件跳转语句。

如果序列号与用户名匹配,就会继续往下执行,否则就弹出出错提示……

接下来,江寒又试了一下LBUTTON_UP断点。

这次终于成功断了下来。

接下来就很简单了,交替使用F7(步入)、F8(步过)两个快捷键,单步跟踪即可。

这个程序是那种很老实的程序。

意思就是没有什么乱七八糟迷惑人的东西,也没有刻意增加难度,为难挑战者。

以江寒的调试功力,跟踪这么老实的程序,自然是易如反掌。

他只花了3分钟,就找到了关键Call。

随后,将这个Call语句,设为断点,然后Ctrl+F2,重新运行。

再次填写序列号、用户名,点【Login】……

很快,程序中断在了关键Call上。

江寒按了一下F7,进入了函数体内部,这样就看到了一段以Ret结尾的反汇编代码。

这段代码的功能,就是根据UserName计算SN(序列号)。

到了这里,就比较考验基本功了,必须读懂反汇编指令。

当然,这对于训练有素的人来说,也是So easy的一件事。

江寒花了十分钟,将算法分析了出来。

看得出来,设计者的确没有故意难为人,算法设计得十分简明。

首先,把UserName进行BASE64变换,然后对新串中的字符,做ASCII码值累加操作,再经过一番算不上十分复杂的数学运算后,就得到了一个新的字符串。

此字符串就是与UserName对应的SN,其允许包含大小写字母和数字,以及一些特殊字符,算法保证其与UserName对应的唯一性……

这道题可以说是白给,只要稍微懂点逆向调试,基本功别太差,一般都能轻松搞定。

江寒估计,官方第一关弄得这么简单,可能只是打算过滤一下参赛者,将那些没事儿来凑热闹的人排除掉。

接下来是第二题。

仍然是CrackMe,但和第一题比起来,难度就突然提高了十倍不止。

什么花指令、虚拟机、静态反汇编、动态反调试……

凡是当前流行的保护手段,几乎一应俱全。

而其核心算法,更是动用了SHA1和Md5。

也就是主办方还算有点良心,没用出RSA2048这种大杀器,否则大家比的就不是逆向水平,而是计算机的性能了……

江寒足足用了二十分钟,才计算出了正确的SN,通过了这一关。

随后,他就一道题、一道题,连续挑战了下去。

越往后,题目的难度越高,花费的时间自然也会稍微长一些。

不光只有CrackMe,还有一些别的玩法,比如破解个虚拟账号系统的密码之类的。

最有趣的是第5题。

目标数据在内存中构成了一个虚拟魔方,并根据UserName随机打乱。

要求构建一个字符串,用此字符串的二进制序列,作为操作指令,让这个魔方复原。

令人发指的是,这个魔方不但高达11阶,还有随机生成的“块坏”!

坏块的意思是,你看不到它的“颜色”,但如果不能放在正确的位置,就不能通过最后的检测……

江寒还得额外写个魔方通解程序,将这个虚拟魔方转放进去,用穷举法求解出复原过程,然后才能根据要求,构造出对应的字符串……

就这样,直到下午3点,江寒才终于解决掉了前6道题,来到了最终关门前。

奖金也顺利地到手了1.5万美元。

为什么是1.5万?

第四题做完之后,江寒才发现,原来那道题的奖金,只有前1000位破解者,才能认领……

好在后面的题目越来越难,过关的人也越来越少,才没被其他人把奖金全都抢走。

最终关。

江寒满怀期待地点了进去。

题目是一个单片机ROM,要求破解其加密机制,去掉防复制模块,并提交Dump出来的无加密ROM。

江寒按照要求,下载了目标ROM。

然后祭出调试工具,加载进来一看……

江寒顿时就傻眼了。

我了个去,这不就是自己的坏苹果吗?

KAGGLE也算世界知名平台了,居然用坏苹果作为压轴。

怪不得奖金那么高呢,主办方没准根本就没打算掏这笔钱。

不过,千不该、万不该,你们不该一声不吭地,就用了咱的坏苹果。

更不应该的,居然还邀请了我这个“发明人”,参加了这次的锦标赛!

江寒偷笑了两声,然后果断从硬盘中,翻出了一个文件,上传到了答题区。

不是别的,正是坏苹果的原始ROM文件!

这是他能想到的,最简单的拿到500万的方法。

想到KAGGLE里负责这个比赛的人,看到了这个文件之后,种种可能的精彩表情……

江寒忍不住嘿嘿一笑。

接下来,就要看KAGGLE官方,到底舍不舍得那500万了……

感觉已经有点饿了,江寒他就关掉了电脑。

打算先去做个饭,解决一下温饱问题,然后,又饱又暖的时候……

然而,江寒刚走到厨房门口,就忽然顿住了身形。

有点不对!

今天又是在“HackMe”里闯关,又是玩CrackMe,大脑持续高强度运转了整整一天。

可是,居然一点疲倦的感觉都没有?!

按照以往的经验,像是这种用脑强度,不吃个十条、八条冰岛红极参,只怕很长时间都缓不过来。

然而,今天的状态却好得有点出奇。

这到底是怎么回事?

难道……小媳妇不但能帮咱充灵感,还能给咱的大脑充能?

这有点不太科学吧?

类似那种喜闻乐见的活动,不增加能量消耗就不错了……

江寒思索了一下,忽然心中一动,连忙打开了系统UI。

看着龙飞凤舞的【学者】二字,以及紧随其后的一串小星星,如同呼吸灯一般,一闪一闪……

江寒不禁若有所悟。

第315章 故伎重施第195章 二八佳人体如酥第123章 BT小鸟第249章 胸有成竹,根本不慌第81章 不是好人第92章 《激光雕刻机》第157章 找个清静的地方第281章 当场抢人第278章 Root Me,Hack Me第192章 许文强和冯程程第92章 《激光雕刻机》第330章 小孔成像和PNP问题第246章 Vigenère密码和国王游戏第159章 想怎么看,就怎么看?第32章 借MacBook一用第418章 阿法狗不出,谁与争锋?第393章 男人不能没有事业第94章 水论文的正确姿势第418章 阿法狗不出,谁与争锋?第231章 水漫金山第156章 你高兴的太早了第260章 这可是B5啊!第427章 诡异的附加关卡第265章 羡慕使人质壁分离第310章 唯一的破绽第224章 上瘾了怎么办?第103章 风口第172章 谁是谁的小糖人?第142章 哪舍得叫你叠被铺床?第201章 组内学习竞赛第33章 苹果开发者账号第121章 还有谁会对自己这么好?第409章 晨曦III巨型计算机第144章 时序逻辑电路和寄存器第211章 就当帮他们改进一下服务质量了第60章 费曼学习法第268章 最终版本第151章 那就别走了第194章 睡不着怎么办?第141章 金装四大才子第343章 差之毫厘,谬以千里第175章 一亿一个第179章 马尔可夫随机场第114章 收音机,以及1:10?第118章 《如何高效判断数据是否线性可分》第144章 时序逻辑电路和寄存器第354章 迷你3D打印机第390章 两份DNA检测报告单第279章 一举成名天下知第107章 附加条件第380章 买猪头不要肉第50章 可能整大发了第72章 玩不起第100章 谈判第40章 好朋友来了第301章 人间喜剧,喜闻乐见第78章 土豆和男朋友第297章 Py大法威力无穷第71章 凭什么是江寒?第131章 夏雨菲的小秘密第105章 宝藏男孩第241章 学习改变命运第230章 万物皆可“坏苹果”第345章 意外连连第402章 读书之乐,临行之前第365章 一套接着一套第60章 费曼学习法第139章 野猪!?第331章 背着妈妈偷吃第217章 超级粉丝第384章 把知识“安装”到大脑里第191章 好像只能挤一挤了第187章 床下的小画册第91章 这么忙吗?第87章 夜话第61章 记忆和遗忘的生物学原理第27章 买书偶遇第29章 王璐有点自闭第27章 买书偶遇第181章 无监督学习和SOM第104章 鲜花与牛粪第257章 NOIP中最难的题型第48章 《如果时间能倒退》第215章 仪表堂堂,器宇轩昂第19章 一切为了押韵第171章 苏婉莹的秘密第36章 家宴第293章 精诚所致,金石为开?第226章 还能剩下几个?请假,存稿丢失一章,正在想办法重写第10章 给老江打个电话第301章 人间喜剧,喜闻乐见第242章 搞出问题怎么办?第424章 又一个冠军到手第190章 现在的高中生啊……第21章 《琵琶行》公开第352章 有了一个小助手第229章 从源头上防仿制?第256章 扩展欧几里得算法,以及增强线段树第96章 暂时保管?