Crackme_4_ajj.1
在打开文件之前,我们看到文件夹里有一个txt文件:
打开之后,是一个类似于日记的提示:
上面说了使用Delphi写的,没有确定键,并且做了一些小手脚。具体是什么小手脚,没说,那我们只有进去看一下了。
首先是查看文件,打开之后会发现的确没有确定键,只有允许输入name和serial,然后我们输入假码:
提示“如果注册成功,程序中就会出现‘朱茵’小姐的一幅靓照”。
看样子程序就是这样了,我们还是先看一下程序的信息:
delphi,无壳。
因为这个是Delphi,所以我们今天使用一个新的工具:dede(Darkde4),这是一个专门针对delphi的工具。
使用dede打开后,看到过程:
这里面可以看到这个程序所用到的一些事件,其中一个叫做chkcode(cheak code)的事件,十分的突出。我们记录下它的地址,到程序里去看看:
输入假码后,程序被断在了chkcode的段首.
我们单步往下,看看有没有什么值得注意的信息:
往下的过程中,不断出现新的字符串,然后将这几个字符串和我们输入的name连接到了一起:
其实到这里我们就可以大胆猜测,这个就是真正的serial了:
我们输入完成了,但是并没有跳出图片,这是为什么呢?
莫非是serial错了?使用od继续往下面看,但是并没有找到有实际价值的字符串,这一定是我们哪里的信息看漏了。
我们继续回到dede,查看框体:
可以看到图片现实的地方是一个panel1事件:又在右边panel1的事件中,我们发现不仅有这个图片框的基本信息,还有两个click(点击),其中一个是dblclick(double click)。莫非,要显示这个图片,不仅仅需要serial,还需要点击这个图片位置吗?我们打开程序,输入name和serial,然后点击图片位置,果然出现了:
serial是找到了,但是还有一个疑点,serial的构成是:“黑头Sun Brid+16+[dseloffc-012-OK]+name”,
那么我们重新输入一个name呢:
发现随便怎么点,图片就是不出来,这是为什么呢?进入od我们可以得知,那个数字16,不是一个固定的字符串,而是一个变动的变量,是会根据name改变的,改变的规律为“name的长度+5”
最后总结
这是crackme的第四题,这道题是静态工具和动态工具的一次结合,由静态工具提供事件、函数,而后用动态工具进行调试。这种经验可以更多的运用在C的程序上,毕竟ida是可以查看伪代码了解程序的运行逻辑的