文章目录

  • 查壳
  • 分析程序
  • 算法分析
  • 写出注册机
  • 校验结果

查壳

目标程序是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之一元一次方程相关推荐

  1. 学校机房今年和去年共购置了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题 ...

  2. 通过C/C++,实现一元一次方程求解

    通过C/C++,实现一元一次方程求解: 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 string str, str_l, s ...

  3. 初一数学用计算机做题上册,初一上册数学实际问题与一元一次方程试题

    相信很多初一的学子都知道,掌握好正确的初一数学解题技巧,有利于我们提高数学考试成绩.现在请欣赏小编带来的初一数学实际问题与一元一次方程试题,在这些文字下希望对你会有所帮助! 初一上册数学实际问题与一元 ...

  4. 如何解一元一次方程视频_七年级数学教学视频-小邵课堂

    本套课程为七年级数学第三章专题教学,初中七年级学生在学完解一元一次方程之后,已掌握了书本上所总结的五个解题步骤,但在整个一元一次方程部分的习题和练习题中,还存着一些解题技巧,也就是说在解题中研究一元一 ...

  5. c++求解自行车慢速比赛问题_一元一次方程应用专题,十大题型(包括数轴上动点问题)...

    以下题目我们都制作了视频讲解,可以进我主页或留言. 轻松中考数学​www.zhihu.com 如果对您有帮助,请点赞关注转发. 一元一次方程应用题十大类型 一:配套问题配套问题 1. 某车间有52名工 ...

  6. 160个Crackme031之一元二次方程

    文章目录 查壳 设计思路 算法分析 第一部分 第二部分 写出注册机 校验结果 查壳 这个Crackme和030是同一个作者,也是VB程序.虽然难度显示是问号,充其量也就一星 设计思路 这个Crackm ...

  7. python计算一元一次方程的根_5-2 一元二次方程

    前言 我们已经学习了二次函数的一般式和顶点式,顶点式展开之后就是一般式,那么一般式能变成顶点式吗? 如果我们能把一般式转换为顶点式,那么我们就可以轻松找到二次函数的顶点,从而很容易画出二次函数. 这个 ...

  8. java 一元一次方程求解_七年级一元一次方程概念和解法,掌握这些就够了!

    对于七年级学生来说,一元一次方程是必不可少的一部分内容.下面总结了一元一次方程的概念和解法,学生对于这一部分内容掌握这些题型就够了. 考察一元一次方程概念题有两种题型,这两种题型也是后面我们要学的一元 ...

  9. 如何解一元一次方程视频_初中数学一元二次方程,注重基础,实例解析考点

    暑假已经过去了一半了,对于即将上九年级的学生来说,这个暑假应该也是在学习中度过的吧,毕竟还有一年的时间就要中考了,中考是学生时代第一个比较重要的节点,更多的学生和家长也是为了能够进入重点高中,积极努力 ...

最新文章

  1. 4-1 图像特效介绍
  2. 深入解读阿里云Redis开发规范:不要只会setget
  3. CListCtrl列表控件---总结
  4. Java-工具类之ZIP压缩解压
  5. Web前端开发入门之网页制作三要素!
  6. 新装Ubuntu系统,窗口过大,无法拖动,按钮都点不到怎么办?
  7. 数据科学家编程能力需要多好_我们不需要这么多的数据科学家
  8. isql 测试mysql连接_[libco] 协程库学习,测试连接 mysql
  9. Eclipse如何卸载插件
  10. 对口高考 html语言,VB对口高考模拟试题1
  11. 常见的运行时异常 java 1615309080
  12. 【clickhouse】clickhouse 漫谈SIMD、SSE指令集与ClickHouse向量化执行
  13. mysql 集成模式_mysql基础学习整合
  14. [LibTorch] 指定参数不进行学习
  15. iOS之某公司iOS开发笔试题
  16. Application和Console Application
  17. python怎么输出文件_python如何输出文件内容
  18. python查看函数源代码
  19. vue 使用ace编辑器
  20. 值得关注的18支基金

热门文章

  1. TF版本升级问题集合:成功解决由于不同的TensorFlow版本之间某些函数的用法引起的错误
  2. Py之twisted:Python库之twisted简介、安装、使用方法等详细攻略
  3. 方差过滤: Removing features with low variance
  4. python操作Excel的几种方式
  5. Python函数篇(5)-装饰器及实例讲解
  6. 转 多租户SaaS架构
  7. 对PostgreSQL中 index only scan 的初步理解
  8. 对于DataSet中的问题真是郁闷啊
  9. stm32-USART1重映射
  10. ESP8266中char数据类型注意事项