人生的第一个crackme

1.crackme是个啥

我们下载完IDA Pro之后,准备开始学习逆向工程,而crackme就是逆向工程的实验工具。
本次我们选取的crackme来自https://crackmes.one/

选择好合适的难度,我们可以进行搜索,因为我也没有进行过逆向,所以我们选择一个简简单单的Secret Key(由RR7制作)

2.开始逆向

这道题看起来不难,我们先把它解压出来,所有习题解压的密码都是crackmes.one,解压出来可以看到code.exe
我们打开IDA Pro,拖入code.exe,直接按下F5,看一下C伪代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int __fastcall main(int argc, const char **argv, const char **envp)
{
int v4; // [rsp+28h] [rbp-8h] BYREF
int v5; // [rsp+2Ch] [rbp-4h] BYREF

_main();
printf("Enter Your Number : ");
scanf("%i", &v5);
if ( v5 == 33 )
{
printf("Enter The Secret Key : ");
scanf("%i", &v4);
if ( v4 == 102 )
printf("Congratulations, you have completed the challenge!");
}
return 0;
}

3.阅读代码

看到这段,我已经知道答案了,其实1.0的难度真的很简单。
答案是直接给的。
可以看到(只要看得懂简单C代码),他先定义了v4,v5两个值,用于后续输入。
我们打开这个exe,会先看到Enter Your Number :。正好对应 printf("Enter Your Number : ");。
后面输入了一个v5,将v5和33进行校验,如果是,就继续
接下来又要输入Enter The Secret Key :,v4,将v4和102进行比较,如果相等,那么就输出Congratulations, you have completed the challenge!。
所以,这道题就这么解决了。

4.进行尝试

分别将33,102输入进去,然后就解决了。
整体如下:

1
2
3
Enter Your Number :33
Enter The Secret Key :102
Congratulations, you have completed the challenge!

拿下!Got it!