文章目录

  • 寻找切入点
  • 算法分析
    • 基础校验
    • 第一部分
    • 第二部分
    • 校验部分
  • 写出注册机
  • 校验结果

【软件名称】:Dope2112.1.exe

【软件大小】:178KB

【下载地址】:自行搜索下载

【加壳方式】:无壳

【保护方式】:Name/Serial

【编译语言】:Delphi

【调试环境】:W7 32

【使用工具】:OD + IDA

【破解日期】:2019年5月21日

【破解目的】:纯属兴趣

寻找切入点

首先搜索关键字符串,根据这个地址对应到IDA可以很快找到函数头部00421B84,从这里开始分析整个算法

算法分析

随便输入一个用户名和序列号,开始分析整个注册算法

基础校验

首先是基础校验部分,在IDA中如图,下面开始详细讲解每一步

  1. 获取用户名


2. 将用户名全部转为小写

  1. 获取输入的序列号

  1. 比较用户名长度是否大于等于6

至此基础校验部分结束,开始计算注册码。真正的注册码分为两部分,首先解释第一部分

第一部分

第一部分的算法根据用户名的ASCII值循环六次计算出来一个结果,算法和IDA反汇编出来的伪代码是一致的,这里就不多做说明了。

第二部分

接下来是第二部分,这一部分在IDA反汇编的伪代码中是没有的。

首先计算出用户名长度乘以0x4A7E的结果,

接着将计算的结果转为字符串

然后再将第一部分用户名计算的结果转为字符串

校验部分

将两个部分的注册码拼接

接着将输入的序列号和两部分拼接的字符串进行比较,根据比较的结果提示是否注册成功

写出注册机

这个注册机也是好写的不行啊,直接把IDA的代码拷下来稍微改改就行了,代码如下:

#include <iostream>
#include <windows.h>int main()
{char username[20] = { 0 };printf("请输入用户名:");scanf_s("%s", username, 20);int usernameLen = strlen(username);if (usernameLen<6){printf("用户名长度必须大于等于6");}//大写转小写for (int i=0;i<usernameLen;i++){if (username[i]>='A'&&username[i]<='Z'){username[i] += 32;}}int v13 = 0;int TotalSum = 0;int i = 0;                                      // i初始化为零do{switch ((username[i- 1]))// 根据username[i]的值给v13赋值{case 0x61u:v13 = 0x18;break;case 0x62u:v13 = 0x25;break;case 0x63u:v13 = 0x42;break;case 0x64u:v13 = 0xC;break;case 0x65u:v13 = 0xD;break;case 0x66u:v13 = 6;break;case 0x67u:v13 = 0x36;break;case 0x68u:v13 = 0x2B;break;case 0x69u:v13 = 0x17;break;case 0x6Au:v13 = 0x2F;break;case 0x6Bu:v13 = 0x13;break;case 0x6Cu:v13 = 0x82u;break;case 0x6Du:v13 = 0x9Bu;break;case 0x6Eu:v13 = 0x92u;break;case 0x6Fu:v13 = 3;break;case 0x70u:v13 = 0x63;break;case 0x71u:v13 = 0x21;break;case 0x72u:v13 = 0x42;break;case 0x73u:v13 = 0x5C;break;case 0x74u:v13 = 0x29;break;case 0x75u:v13 = 0xC7u;break;case 0x76u:v13 = 0x66;break;case 0x77u:v13 = 0x58;break;case 0x78u:v13 = 0xA;break;case 0x79u:v13 = 0x28;break;case 0x7Au:v13 = 0x50;break;default:v13 = 0x5D;break;}TotalSum += v13;                          // 循环累加v13的值++i;//这里记得超出范围清掉高位if (TotalSum>0xFF){TotalSum &= 0x00FF;}} while (i != 6);printf("%d-%d\n", TotalSum,0x4A7E*usernameLen);system("pause");return 0;
}

校验结果

输入用户名和计算的序列号,提示成功,破解完成

最后,需要相关文件可以到我的Github下载:https://github.com/TonyChen56/160-Crackme

160个Crackme044相关推荐

  1. 硬盘温度70度正常吗_70多岁老年人原来血压160,现在130正常吗?医生为你分析实情...

    70多岁的老年人,原来有高血压,高压160左右,现在是130左右,正常吗?这个问题问的太过笼统,我们只好通过这个问题,来分享一些老年高血压患者血压控制的一些知识点,希望能够对老年人的高血压控制,能够有 ...

  2. 微软语音扩展全球语言支持,发布160个新声音

    导语:全世界有数千种语言,最具语言天赋的人也只能说数十种,普通人能够学会两三种语言已属不易.然而,在科技日新月异的今天,具备自然语言对话能力的AI已经能够掌握上百种语言,扩展人类自身能力,为不同场景的 ...

  3. 5分钟带你读「大清」微积分!160多年前清朝数学家撰写文言文版高等数学

     视学算法报道   编辑:小咸鱼 好困 [新智元导读]你有见过160多年前清朝数学家写的微积分书吗?这可能是最难懂的高数教材了,堪称天书!近日,网上流传着一本清朝的微积分课本,其中的所有数学表达式都是 ...

  4. 机器学习160个常见问题.pdf

    来自公众号:机器学习算法与Python实战 原文链接:https://hackernoon.com/160-data-science-interview-questions-415s3y2a (Ale ...

  5. 某34岁程序员哀叹:北京有一套房和160万现金,但500万的股票缩水到70万,上周刚失业,今天跟女友分手,心态崩了!...

    在如今的互联网寒冬里,身处其中的打工人是什么处境呢? 来看看一个中年互联网人的故事:34岁,北京一套房,160万现金,原本500万的中概股现在缩水到70万.谈了一个90年的女友今天分手了,上周又刚失业 ...

  6. 阿里跳槽拼多多,80万年薪涨到160万,值不值得去?

    很多人现在找工作的话既想找一份不辛苦薪资要高还要有前途的工作,但世界上有这么便宜的事情吗,显然没有啊.该程序员说道拼多多挖他过去160w年薪,现在在阿里的话总包80万,想问下大家自己该不该过去呢? 原 ...

  7. 到手40万/年,每年假期160天!提供二室一厅住房,事业编!我酸了。。。。

    来源 | 硕博关注 编辑 | 论文项目硕博招聘 大量网友表示,这样的待遇,高过99%的高校!! 深圳中学招聘教师,清一色的名校毕业生,这已是尽人皆知的事情.然而,近期,深圳中学2021年新入职的教师部 ...

  8. 扛鼎之作!Twitter 图机器学习大牛发表160页论文:以几何学视角统一深度学习

    编译 | Mr Bear.青暮 转自 | AI科技评论 导语:近日,帝国理工学院教授.Twitter 首席科学家 Michael Bronstein 发表了一篇长达160页的论文(或者说书籍),试图从 ...

  9. 麦肯锡全球调研160个案例,发布5个行业34个AI应用场景

    来源:全球人工智能 概要:"我觉得不行!":"我觉得可以!"这正是现在大家看待AI的两种态度. "我觉得不行!":"我觉得可以!& ...

最新文章

  1. Python源码怎么读,听听顶级爬虫工程师的建议
  2. 判断android应用程序是否已安装
  3. python as_matrix()
  4. linux操作系统应急方案,服务器操作系统应急预案
  5. 静态页转换平台(StaticPol)-静态页生成终极解决方案(转)
  6. 日志为什么不入数据库
  7. 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
  8. D - Sequence Swapping DP
  9. Java时区处理初学者指南
  10. golang位左移赋值
  11. 2.图像作为函数 | 如何把图像看作函数_2
  12. Python机器学习(Sebastian著 ) 学习笔记——第五章通过降维压缩数据(Windows Spyder Python 3.6)...
  13. Laravel教程 四:数据库和Eloquent
  14. bootstrap-pagination demo
  15. Lodash - 修复微信小程序中 Lodash 的运行环境(lodash-fix.js)
  16. SM2国密算法证书解析
  17. 用扫码枪收款钱到哪里_微信官方收款音箱,智能语音播报器,不受来电和信息干扰,老板不在也能正常播报,0费率无需蓝牙,面送赠送流量,真正的摆摊神器...
  18. 流媒体下载的几种方法
  19. 核心竞争力和壁垒 | 讲概念
  20. 计算机专业我的生涯规划档案,大学生学业生涯规划登记表11.doc

热门文章

  1. Py之keras-resnet:keras-resnet的简介、安装、使用方法之详细攻略
  2. DeepID:Python基于Caffe的DeepID2实现人脸识别的简介、实现之详细攻略
  3. Autograd:自动求导
  4. Codeforces Round #555 (Div. 3) c2 d e f
  5. Silverlight中服务通信方式的选择(WCF、Data Service、Ria Service)
  6. 数据库行转列的sql语句(zt)
  7. 一个小问题引发的论证思考
  8. 61种常用JavaScript
  9. 拔掉网线时Socket的检查方法
  10. STM32 Option Bytes位 重置为出厂设置