Crackme010
Posted white-album2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Crackme010相关的知识,希望对你有一定的参考价值。
Crackme010 的逆向分析
1.程序观察
程序只有一个输入 Key 值的地方,尝试输入 "123",程序和 008、009 一样出现的还是德语错误提示,因为这都是一个人制作的小程序。
虽然这个程序标注的是 3星难度,但是我感觉这个程序和 009 一样,只是稍微有一点不同,难度应该也是 1星 才对。
2.简单查壳
无壳。
3.程序分析
使用 OD 载入程序,搜索字符串
双击进入代码,可以看到,和 009 几乎是一模一样。
程序流程大概就是:
- 程序首先求得输入 Key 的长度。
- 建立循环,循环次数为 Key 的长度。
- 每次取我们输入的 Key 的一个字符。
- 将字符转换为 ASCII 再加上 0xA。
- 再次转换为字符形式。
- 将转换过的字符连接起来。
在最后程序将转换过的字符串和字符串 "kXy^rO|*yXo*m\\kMuOn*+"进行比较,如果相同进提示正确,不相同就提示错误。
4.写出注册机
既然已经知道了转换的步骤,也有了正确的转换后的字符串,那么反推出正确的 Key 就是很简单的了。
#include <stdio.h> #include <string.h> int Key() char szKey[30] = "kXy^rO|*yXo*m\\\\kMuOn*+"; int NameLen = 0; NameLen = strlen(szKey); for (int i = 0; i < NameLen; i++) szKey[i] -= 0xa; printf("%s", szKey); return 0; int main(int argc, char* argv[]) Key(); return 0;
相关文件在我的 Github:https://github.com/UnreachableLove/160-Crackme/tree/master/Crackme010
2019-09-10 19:15:56
以上是关于Crackme010的主要内容,如果未能解决你的问题,请参考以下文章