160个CrackMe—第一个:“You have to kill me”
来源:互联网 发布:网络分流器怎么连接图 编辑:程序博客网 时间:2024/05/29 14:47
从前有160个CreakMe,后来….
不积跬步,怎么能至千里之外呢?所以我们从第一个开始破解
从最后修改时间可以看出来,是一个在1997年被前辈写出来的一个程序。然而20年过去了,我才开始膜拜前人的作品。惭愧惭愧
主界面
一共有三个选项,一个 账号/注册码,一个退出,还有一个注册码
这个就是 账号/注册码 的界面,正确输入账号和注册码应该就可以解开这道题
第一个编辑框输入“1234567”,第二个编辑框输入“qqqqqqq”,点击 Check it Baby! 弹出一个窗口,上面写着“Sorry, The serial is incorect!”,至此我们已经知道,输入错误的账号和注册码后会弹出一个窗口,还有一个字符串
既然我们知道了有字符串可以查找,就用最简单的方法找到关键函数,查找字符串一定要进入到主模块才可以,不进入主模块查找的就是别的模块的字符串
我们查到了这些,虽然没有“Sorry…”,但是我们似乎找到了什么意外的收获! “Good Job dude !! =)” 是什么鬼,你干嘛夸我~ 难道是我破解了他? 哈哈哈,从这里进去就能找到账号/注册码输入正确的时候的程序的位置了,再往上回溯肯定就能找到验证账号/注册码的地方
我们找到这个函数的起始位置下一个断点
我们就找到了验证账号/注册码的函数了,接着我们详细的分析一下这个函数中的代码
我们看到这个函数内部是这样的,一直对账号进行操作,请忽略我上次写的垃圾注释
我们找到弹出成功窗口的地方
直接从这个函数开始的地方一个 JMP 跳到 0x42FB05 这个地址,就完成了暴力破解
暴力破解之后,不管输入什么账号和密码都会弹出成功的窗口
我们接下来看一下他的算法,试着写出一个注册机之类的东西
点开程序输入各种账号密码熟悉程序流程
然后找到弹出成功窗口的位置,从那里开始往上回溯
这是成功弹窗上的第一个函数,都是一些跳转,和设置标志位的代码,推断出这里应该是设置函数外判断是否跳转的依据,所以我们继续往上找
在成功弹窗上面第三个函数中发现了点可疑的痕迹
求出了一个“CW-4018-CRACKED”这样一个字符串,这次我们测试的账号是:132456,注册码是:qqqqqq
我们把这个字符串代入试试
成功破解,这里可以知道程序会求出一个注册码让我们通过检测
从上面的程序已知 CW 和 CRAKED 这两个字符串是存在在内存中的,那我们就要找一下4018这个数是怎么求出来的
总之。。。太麻烦了,就是通过输入的账号的第一位乘16进制的29,再和自己相加,就得到CW 和 CRAKED 这两个字符串中间的那个数字
(31h * 29h)*2 = FB2=4018
- 160个CrackMe—第一个:“You have to kill me”
- 160crackme第一个Acid burn
- 160个CrackMe-第九个
- 第一篇Crackme破文,第一个keygen
- CRACKME-160-第79个
- 160个CrackMe-1-Acid_burn
- 160个CrackMe 077 firework2
- 160个CrackMe之001
- 160个crackme之003
- 160个crackme之004
- 160个crackme之008
- 160个crackme之009
- 160个crackme之010
- 160个crackme之011
- 160个CrackMe之11
- 160个CrackMe之91
- 160个CrackMe之123
- 160个练手CrackMe-001
- Java四种引用使用详解
- HTML&CSS基础
- MFC基于select模型的套接字类之服务器(3)
- Coursera—machine learning(Andrew Ng)第三周编程作业
- 大数据算法课程笔记5a: fixed-parameter vertex cover
- 160个CrackMe—第一个:“You have to kill me”
- JavaEE学习之网络编程Socket
- 一、软件测试的基本概念
- python 起步- str 字符串小总结
- 欢迎使用CSDN-markdown编辑器
- shell的实现原理
- PAT A1025
- Linux存储设备的管理与分区
- 关于Android DrawerLayout的侧滑菜单的点击事件