160个Crackme006
文章目录
- 查壳
- 导入符号
- 分析程序
- 分析Cancella按钮点击事件
- 分析关键函数
- 写出注册机
- 验证结果
- 分析ok按钮点击事件
- 分析关键函数
- 写出注册机
- 校验结果
查壳
同样也是用Delphi写的,没有壳。
导入符号
将程序载入到IDA,添加所有的Delphi的签名,然后导出为map文件,在OD中加载map文件,强大的签名库可以减少后面的分析时间。
分析程序
接下来分析一下这个程序,OK那个按钮被禁用了,这是什么套路?
旁边还有个help,不过都是英文的,上翻译。
好,大概了解了。我们的目的就是要让那两个按钮变成隐藏的。
再拖到Darkde4里面查看一下按钮事件和窗口
从控件窗口可以看到在下面这个控件里有一个OK按钮 有一个Cancella按钮,还有一个图片。我们的目的应该就是让那个图片显示出来。
事件按钮有如下几个响应事件,每个响应事件都有对应的RVA:
- 代码变换事件
- OK按钮点击事件
- 用户名变换事件
- Cancella按钮点击事件
- About按钮的点击事件
那么既然要让这两个按钮变的不可见,就从Cancella这个按钮的点击事件开始分析
分析Cancella按钮点击事件
找到Cancella按钮点击事件对应的RVA0x442EA8,随便输入一个账号密码,下断分析。
首先会获取输入的密码,然后将密码转为十进制数。接着获取用户名,然后是一个关键函数,这个函数如果返回值为1,那么就不跳转,按钮就会消失。接下来分析下这个关键函数。
分析关键函数
这里直接贴出IDA的分析结果,如果想要详细的过程可以去看我的udd文件。首先对用户名的做取模运算之后求阶乘,然后将每个用户名的ASCII乘以阶乘相加,最后把结果减去输入的密码,如果等于31337就返回1,否则返回零。也就是说,我们只要复制上面的过程,然后将结果减去31337,就能得到正确的密钥。
写出注册机
//计算第二个按钮Cancella所需要的密码
int CalcKey1()
{int key = 0;int nTemp = 0;int num = 0; char username[20] = { 0 };printf("请输入用户名,长度必须在六位以上:");scanf_s("%s", username, 20);//检查长度if (strlen(username)<=5){printf("用户名长度不满足 请重新输入");return 0;}//求阶乘num = ((int)username[4]) % 7 + 2;nTemp = num;for (int i=1;i< nTemp;i++){num *= i;}nTemp = num;int result = 0;//求用户名的ASCII和乘以阶乘for (int i=0;i<strlen(username);i++){result += nTemp * username[i];}//取出正确的密码key = result - 0x7A69;printf("%d\n", key);}
验证结果
输入计算的结果,点击 我们可以看到右边的按钮消失了,并且左边的OK按钮也解除了禁用状态。
分析ok按钮点击事件
接下来来到的位置,来分析OK按钮的点击事件。
还是同样的套路,有一个关键的算法函数,这个函数返回1,按钮就消失,否则不成功。
分析关键函数
整个关键函数校验如下,首先取出密码的最后一位,然后做平方运算,接着乘以当前的密码长度,也就是index,然后对0x19取模,最后加上0x41然后保存结果,每个结果对应一位用户名。
写出注册机
接下来还原算法写出注册机
//计算第一个按钮OK所需要的密码
int CalcKey2()
{char key[20] = { 0 };char username[20] = { 0 };printf("请输入注册码,长度必须在六位以上:");//输入密码scanf_s("%s", key, 20);//检查长度if (strlen(key) <= 5){printf("密码长度不满足 请重新输入");return 0;}for (int i= strlen(key)-1;i!=-1;i--){username[i] = (key[i] * key[i] * (i + 1)) % 0x19 + 0x41;}printf("%s", username);
}
校验结果
输入序列号,然后自动生成用户名,可以看到OK按钮也跟着消失了。
需要相关文件的可以到我的Github下载:https://github.com/TonyChen56/160-Crackme
160个Crackme006相关推荐
- [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- Crackme006 - 全新160个CrackMe学习系列(图文|视频|注册机源码)
知乎:逆向驿站 原文链接 CrackMe006 | 难度适中适合练手 |160个CrackMe深度解析(图文+视频+注册机源码) crackme006,依然是delphi的,而且没壳子,条线比较清晰, ...
- Crackme006 - 全新160个CrackMe深度解析系列(图文+视频+注册机源码)
原文链接 CrackMe006 | 难度适中适合练手 |160个CrackMe深度解析(图文+视频+注册机源码) crackme006,依然是delphi的,而且没壳子,条线比较清晰,算法也不难,非常 ...
- CrackMe006 | 160个crackme精解系列(图文+视频+注册机源码)
作者:逆向驿站 微信公众号:逆向驿站 知乎:逆向驿站 crackme006,依然是delphi的,而且没壳子,条线比较清晰,算法也不难,非常适合新入门的来练习. 快过年了,Crackme系列年前就停更 ...
- 硬盘温度70度正常吗_70多岁老年人原来血压160,现在130正常吗?医生为你分析实情...
70多岁的老年人,原来有高血压,高压160左右,现在是130左右,正常吗?这个问题问的太过笼统,我们只好通过这个问题,来分享一些老年高血压患者血压控制的一些知识点,希望能够对老年人的高血压控制,能够有 ...
- 微软语音扩展全球语言支持,发布160个新声音
导语:全世界有数千种语言,最具语言天赋的人也只能说数十种,普通人能够学会两三种语言已属不易.然而,在科技日新月异的今天,具备自然语言对话能力的AI已经能够掌握上百种语言,扩展人类自身能力,为不同场景的 ...
- 5分钟带你读「大清」微积分!160多年前清朝数学家撰写文言文版高等数学
视学算法报道 编辑:小咸鱼 好困 [新智元导读]你有见过160多年前清朝数学家写的微积分书吗?这可能是最难懂的高数教材了,堪称天书!近日,网上流传着一本清朝的微积分课本,其中的所有数学表达式都是 ...
- 机器学习160个常见问题.pdf
来自公众号:机器学习算法与Python实战 原文链接:https://hackernoon.com/160-data-science-interview-questions-415s3y2a (Ale ...
最新文章
- 记java关键词_Java关键词及含义
- mysql设计规范和原则
- docker 安装zookeeper集群
- 基于ssm的学生成绩管理系统
- JavaScript和ABAP的MD5计算源代码
- java简单的事务单元_junit 单元测试事务自动回滚(亲测有效)
- DB 数据同步到数据仓库的架构与实践
- Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告
- java JDBC入门及案例演示
- 使用react-native做一个简单的应用-01项目介绍
- 生活随笔:你会狗眼看人低吗?
- 软件工程与计算II-5-需求基础
- 2021年塔城某施工项目招标公告
- 『原创经典』标准日本语初级笔记完整版(1)
- MOSFET知识小结
- 外卖产品(饿了么、美团外卖、百度外卖)竞品分析
- ireport导出pdf记录
- SAP那些事-理论篇-15-SAP顾问的三重境界
- 异形布局 canvas画龙
- mkdir: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initia
热门文章
- 成功解决没有tf.nn.rnn_cell属性
- 成功解决tensorflow\contrib\learn\python\learn\datasets\base._internal_retry.locals.wrap.locals.wrapp
- Dataset之图片数据增强:基于TF实现图片数据增强(原始的训练图片reshaped_image→数据增强→distorted_image(训练时直接使用))
- TF之LSTM:利用LSTM算法对mnist手写数字图片数据集(TF函数自带)训练、评估(偶尔100%准确度,交叉熵验证)
- 决策树-缺失值和连续值处理及属性划分
- Git 提交 .gitignore文件
- 【提权思路】绕过SecureRDP限制远程连接
- Python3-笔记-E-001-库-随机数random
- 超市账单管理------之获取总记录数
- python3.4.3将汉字转换为大写拼音首字母