160个Crackme030之一元一次方程
文章目录
- 查壳
- 分析程序
- 算法分析
- 写出注册机
- 校验结果
查壳
目标程序是VB写的,序列号保护方式,难度为一颗星
分析程序
随便输入一个序列号,来到字符串的错误提示处
找到跳转到错误提示的地方 跟过去
接着发现了一个VB的比较函数,下断点,观察一下堆栈,参数一和参数二如下:
并不是我们之前看到的正确注册码和错误注册码的形式,也不是0和1的比较,看来这个程序是有算法的,最终比较的是算法算出来之后的结果,那么我们就要从函数头的位置开始分析算法了
算法分析
首先获取序列号长度,以序列号长度为大循环的循环次数,然后还有一个小循环的循环次数为4
然后从序列号第一位开始取1个字符,取字符的位置每次+1,取字符的最大起始位置为序列号的长度,即大循环的循环次数
然后从硬编码的字符串02 00 00 00第一位取一个字符,开始的位置每次+1,取字符的最大起始位置为4,即上面的小循环的循环次数,超过4则重新回到1
然后将取出的那一位序列号转成ASCII值
再将取出的硬编码字符串转成ASCII值
最后将取出的序列号的ASCII值和取出的硬编码的ASCII值进行异或
拼接字符串,将异或后的结果保存到[ebp-0x38]这个位置,
然后回到循环开始处开始新一轮循环,所以只要观察[ebp-0x38],就能看到最后的结果
最后将用户名异或得出的计算结果和硬编码的字符串进行比较,根据比较的结果提示正确与否
写出注册机
整理一下这个程序的算法,这个程序的算法其实就是一元一次方程,即Serial^02 00 00 00(Key)=qBQSYdXUe_B\V(result)
Serial是未知的,我们可以根据已知的result去异或已知Key得到正确的序列号,这个可以手动计算,也可以写个循环计算,代码如下:
#include <iostream>
using namespace std;int main()
{char serial[13] = { 0 };char result[14] = { "qBQSYdXUe_B\\V" };char key[17] = { "2000200020002000" };for (int i = 0; i < 14; i++){serial[i] = result[i] ^ key[i];}serial[13] = 0;printf("%s\n", serial);system("pause");return 0;
}
校验结果
输入计算出来的序列号,提示正确,破解完成
需要相关文件可以到我的Github下载:https://github.com/TonyChen56/160-Crackme
160个Crackme030之一元一次方程相关推荐
- 学校机房今年和去年共购置了100台计算机,2015年全国中考数学试卷解析分类汇编(第一期)专题4 一元一次方程及其应用...
一元一次方程及其应用 一.选择题 1.(2015 江苏无锡,第4题2分)方程2x﹣1=3x+2的解为( ) A. x=1 B. x=﹣1 C. x=3 D.x=﹣3 2. (2015 四川南充,第4题 ...
- 通过C/C++,实现一元一次方程求解
通过C/C++,实现一元一次方程求解: 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 string str, str_l, s ...
- 初一数学用计算机做题上册,初一上册数学实际问题与一元一次方程试题
相信很多初一的学子都知道,掌握好正确的初一数学解题技巧,有利于我们提高数学考试成绩.现在请欣赏小编带来的初一数学实际问题与一元一次方程试题,在这些文字下希望对你会有所帮助! 初一上册数学实际问题与一元 ...
- 如何解一元一次方程视频_七年级数学教学视频-小邵课堂
本套课程为七年级数学第三章专题教学,初中七年级学生在学完解一元一次方程之后,已掌握了书本上所总结的五个解题步骤,但在整个一元一次方程部分的习题和练习题中,还存着一些解题技巧,也就是说在解题中研究一元一 ...
- c++求解自行车慢速比赛问题_一元一次方程应用专题,十大题型(包括数轴上动点问题)...
以下题目我们都制作了视频讲解,可以进我主页或留言. 轻松中考数学www.zhihu.com 如果对您有帮助,请点赞关注转发. 一元一次方程应用题十大类型 一:配套问题配套问题 1. 某车间有52名工 ...
- 160个Crackme031之一元二次方程
文章目录 查壳 设计思路 算法分析 第一部分 第二部分 写出注册机 校验结果 查壳 这个Crackme和030是同一个作者,也是VB程序.虽然难度显示是问号,充其量也就一星 设计思路 这个Crackm ...
- python计算一元一次方程的根_5-2 一元二次方程
前言 我们已经学习了二次函数的一般式和顶点式,顶点式展开之后就是一般式,那么一般式能变成顶点式吗? 如果我们能把一般式转换为顶点式,那么我们就可以轻松找到二次函数的顶点,从而很容易画出二次函数. 这个 ...
- java 一元一次方程求解_七年级一元一次方程概念和解法,掌握这些就够了!
对于七年级学生来说,一元一次方程是必不可少的一部分内容.下面总结了一元一次方程的概念和解法,学生对于这一部分内容掌握这些题型就够了. 考察一元一次方程概念题有两种题型,这两种题型也是后面我们要学的一元 ...
- 如何解一元一次方程视频_初中数学一元二次方程,注重基础,实例解析考点
暑假已经过去了一半了,对于即将上九年级的学生来说,这个暑假应该也是在学习中度过的吧,毕竟还有一年的时间就要中考了,中考是学生时代第一个比较重要的节点,更多的学生和家长也是为了能够进入重点高中,积极努力 ...
最新文章
- 4-1 图像特效介绍
- 深入解读阿里云Redis开发规范:不要只会setget
- CListCtrl列表控件---总结
- Java-工具类之ZIP压缩解压
- Web前端开发入门之网页制作三要素!
- 新装Ubuntu系统,窗口过大,无法拖动,按钮都点不到怎么办?
- 数据科学家编程能力需要多好_我们不需要这么多的数据科学家
- isql 测试mysql连接_[libco] 协程库学习,测试连接 mysql
- Eclipse如何卸载插件
- 对口高考 html语言,VB对口高考模拟试题1
- 常见的运行时异常 java 1615309080
- 【clickhouse】clickhouse 漫谈SIMD、SSE指令集与ClickHouse向量化执行
- mysql 集成模式_mysql基础学习整合
- [LibTorch] 指定参数不进行学习
- iOS之某公司iOS开发笔试题
- Application和Console Application
- python怎么输出文件_python如何输出文件内容
- python查看函数源代码
- vue 使用ace编辑器
- 值得关注的18支基金