文章目录

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

【软件名称】: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. hadoop程序MapReduce之SingletonTableJoin
  2. php 图片在线编辑功能,summernote在线编辑器提交的内容PHP处理其中图片函数
  3. OpenCV计算机视觉编程攻略之用色调、饱和度和亮度表示颜色
  4. cad文字提取到excel_干货!南方CASS设计土石方方格网点上提取高程方法
  5. 常用的HTML标签和属性解释
  6. 偈颂一首《静心莲》【心静如止水,雷打无波澜。佛前忏一刹,万千罪消融。】
  7. php提交raw_PHP中如何POST提交raw数据?
  8. 产业链布局优势明显,三星开启全新移动智能体验新时代
  9. r语言做绘制精美pcoa图_R语言统计与绘图:绘制QQ图
  10. Linq to Oracle 使用教程(八)使用 T4 模版生成代码
  11. SAP Cloud for Customer(C4C)的一些学习资料(持续更新)
  12. zjnu1730 PIRAMIDA(字符串,模拟)
  13. c# 开发window服务
  14. python独立环境——virtualenv
  15. RMDB与hadoop的实时整合
  16. 循环队列和链队的表示和实现
  17. vue 项目初始化、mock数据以及安装less
  18. 87-非阻塞 connect
  19. ATtiny85 制作迷你小游戏机
  20. 深信服研发、市场等大量岗位社招、校招内推

热门文章

  1. 成功解决Docker Desktop requires Windows 10 Pro or Enterprise version 15063 to run.
  2. ML之SVM:基于SVM(支持向量机)之SVC算法对手写数字图片识别进行预测
  3. DL之DNN:基于神经网络(从1层~50层)DNN算法实现对非线性数据集点进行绘制决策边界
  4. Py之matplotlib:matplotlib绘图自定义函数总结
  5. MAT之SVM/BP:SVR(better)和BP两种方法比较且实现建筑物钢筋混凝土抗压强度预测
  6. 成功解决win10下dos中运行tensorboard --logdir=logs和调用events.out.tfevents一闪而过的问题
  7. 汉语自然语言处理工具包下载
  8. 莫队(不带修改)模板
  9. android微信支付的实现
  10. 共识协议(3)比特币之POW