160个CrackMe—第一个:“You have to kill me”

从前有160个CreakMe,后来….

不积跬步,怎么能至千里之外呢?所以我们从第一个开始破解

160个CrackMe—第一个:“You have to kill me”_第1张图片

从最后修改时间可以看出来,是一个在1997年被前辈写出来的一个程序。然而20年过去了,我才开始膜拜前人的作品。惭愧惭愧

主界面
160个CrackMe—第一个:“You have to kill me”_第2张图片

一共有三个选项,一个 账号/注册码,一个退出,还有一个注册码
160个CrackMe—第一个:“You have to kill me”_第3张图片

这个就是 账号/注册码 的界面,正确输入账号和注册码应该就可以解开这道题

160个CrackMe—第一个:“You have to kill me”_第4张图片
第一个编辑框输入“1234567”,第二个编辑框输入“qqqqqqq”,点击 Check it Baby! 弹出一个窗口,上面写着“Sorry, The serial is incorect!”,至此我们已经知道,输入错误的账号和注册码后会弹出一个窗口,还有一个字符串

既然我们知道了有字符串可以查找,就用最简单的方法找到关键函数,查找字符串一定要进入到主模块才可以,不进入主模块查找的就是别的模块的字符串

160个CrackMe—第一个:“You have to kill me”_第5张图片

我们查到了这些,虽然没有“Sorry…”,但是我们似乎找到了什么意外的收获! “Good Job dude !! =)” 是什么鬼,你干嘛夸我~ 难道是我破解了他? 哈哈哈,从这里进去就能找到账号/注册码输入正确的时候的程序的位置了,再往上回溯肯定就能找到验证账号/注册码的地方

160个CrackMe—第一个:“You have to kill me”_第6张图片

我们找到这个函数的起始位置下一个断点

160个CrackMe—第一个:“You have to kill me”_第7张图片

我们就找到了验证账号/注册码的函数了,接着我们详细的分析一下这个函数中的代码

160个CrackMe—第一个:“You have to kill me”_第8张图片

我们看到这个函数内部是这样的,一直对账号进行操作,请忽略我上次写的垃圾注释

我们找到弹出成功窗口的地方

160个CrackMe—第一个:“You have to kill me”_第9张图片

直接从这个函数开始的地方一个 JMP 跳到 0x42FB05 这个地址,就完成了暴力破解

暴力破解之后,不管输入什么账号和密码都会弹出成功的窗口

160个CrackMe—第一个:“You have to kill me”_第10张图片

我们接下来看一下他的算法,试着写出一个注册机之类的东西

点开程序输入各种账号密码熟悉程序流程

然后找到弹出成功窗口的位置,从那里开始往上回溯

160个CrackMe—第一个:“You have to kill me”_第11张图片

这是成功弹窗上的第一个函数,都是一些跳转,和设置标志位的代码,推断出这里应该是设置函数外判断是否跳转的依据,所以我们继续往上找

在成功弹窗上面第三个函数中发现了点可疑的痕迹
160个CrackMe—第一个:“You have to kill me”_第12张图片

求出了一个“CW-4018-CRACKED”这样一个字符串,这次我们测试的账号是:132456,注册码是:qqqqqq
我们把这个字符串代入试试
160个CrackMe—第一个:“You have to kill me”_第13张图片

成功破解,这里可以知道程序会求出一个注册码让我们通过检测
从上面的程序已知 CW 和 CRAKED 这两个字符串是存在在内存中的,那我们就要找一下4018这个数是怎么求出来的

总之。。。太麻烦了,就是通过输入的账号的第一位乘16进制的29,再和自己相加,就得到CW 和 CRAKED 这两个字符串中间的那个数字
(31h * 29h)*2 = FB2=4018

你可能感兴趣的:(思想,小技术,破解)