crackme0x02-crackme0x06分析
分析工具:radare2,IDA
1.运行文件,依旧是输入密码
2.查看一下汇编代码
可以看出该函数主要部分实现的是:
(1)使用 scanf 函数读取一个整数值并存储在 var_4 变量中,该整数值是用户输入的密码。
(2)将常量值 5AH存储在 var_8 变量中,并将常量值 0x1EC 存储在 var_C 变量中。
(3)将 var_C 变量的值加载到 edx 寄存器中,然后将 var_8 的地址加载到 eax 寄存器中,将 var_C 的值加到 var_8 指向的内存地址上。
(4)将 var_8 的值加载到 eax 寄存器中,然后将其乘以自身的值,并将结果存储在 var_C 变量中,此时 var_C 中存储的是一个计算后的值。
(5)将 var_4 变量的值加载到 eax 寄存器中,然后将其与 var_C 变量的值进行比较。如果它们不相等,则跳转到 loc_8048461 标签指示的代码块,否则继续执行后续代码。
3.经过以上分析,可以计算出密码就是(90+492)^2=338724,运行程序进行验证
4.也可以利用IDA的反汇编插件进行分析,可直接看到密码为338724
- 依旧是输入密码,我们这里直接放进IDA进行分析,先看main函数部分
2.还是常规的一个密码判断,不过这个程序中还有一个test函数
3.本质上就是利用test判断输入的值是否为338724
4.验证密码是否为338724,密码正确
- 还是熟悉的密码判断,放进反汇编工具进行分析,先看main函数
2.发现关键的密码判断处调用了一个check函数,我们去分析check函数
3.对check函数进行分析,该程序读取一个字符串s,然后迭代字符串的每个字符。然后使用sscanf()将每个字符转换为整数并将其添加到变量v5中。如果所有整数的总和等于15,则打印“Password OK!”并退出程序。否则,它会打印“Password Incorrect!”并返回0。
4.简单来说,就是输入的字符串从前往后一个数一个数的相加,能满足和为15即可,我们输入555进行验证
5.同样的,我们输入一串5进行验证,同样满足
1.还是输入密码类题目,依旧是直接放进IDA进行分析,发现结构与crackme0x04类似
2.进入check函数进行分析,chec函数与crackme0x04中的一致,这里就不过多赘述,实现的是每一位相加和为16即可满足正确,但在最后一行发现在check函数中又调用了parell函数
3.继续进入parell函数,发现在该函数中,有一个按位与运算
4.parell函数中的代码读取一个字符串s,然后使用sscanf()将字符串转换为整数并将其存储在变量v2 中。然后,它将v2与1进行按位与运算,并将结果存储在变量result中。如果(v2 & 1) == 0 ,则打印“Password OK!”并退出程序。否则,返回result
5.根据以上分析,如果像上一题一样输入一串1的话,密码是错误的,输入22222222,4444这类不会报错,运行程序进行验证。
- 依然是输入密码这类题目
2.放进IDA进行分析
3.在主函数中调用了check函数进行判断,我们进入check函数进行分析,check函数一如crackme0x05和crackme0x04,这里不过多讲了,可以翻翻上面的分析。
4.最后有个parell函数,与上一个题类似,不过多了个dummy函数
5.进入dummp函数
6.代码分析
(1)main函数首先输出了一个提示信息,然后通过scanf函数接收一个字符串作为密码输入。
(2)main函数调用了check函数,并将刚刚输入的字符串和envp参数(环境变量)作为参数传递给check函数。
(3)check函数对输入的字符串进行了处理,将每个字符转化成数字并累加起来。当累加结果为16时,调用parell函数。
(4)parell函数将输入的字符串转化成数字并将其作为参数传递给dummy函数。如果dummy函数返回值非零,即输入的密码符合要求,程序输出Password OK!并退出。否则,程序将继续执行,输出Password Incorrect!。
(5)dummy函数在一个循环中遍历环境变量envp,如果找到以字符串LOLO开头的环境变量,就返回1;否则返回0。
综上,该程序的密码检验流程是:将输入的密码每个字符转化成数字后相加,如果和为16,将其作为参数调用dummy函数,如果返回值非零则认为输入的密码正确。同时,程序中使用了环境变量envp,但是并没有直接使用其值,而是将其作为参数传递给了check函数。因此,环境变量可能被用于调试或其他目的。
7.完成代码分析后,一切明朗了起来,我们首先要定义一个环境变量LOLO,然后题目便成为了crackme0x05,利用密码4444,88,这类即可成功。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!