crackme0x02-crackme0x06分析
分析工具:radare2,IDA
- Crackme0x02分析
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