文章目录

  • 查壳
  • 一样的014和017?
  • 破解反调试
  • 分析算法
  • 014和017区别
  • 写出注册机

查壳

一样的014和017?

这个Crackme和014和016是同一个作者,不会又是重复的吧?输入014的序列号试试

好吧,虽然是能蒙对,但其实里面的算法是完全不一样的,这到底是为什么?这个问题留到最后面

直接根据字符串的错误提示,来到函数头的位置,也就是按钮事件开头,来分析整个算法

破解反调试

这个Crackme跟其他的不一样的地方是有一个时间戳检查,

首先,获取当前事件,保存结果

接着是一个两层的嵌套循环,具体什么作用不知道,大概是为了拖延调试者的时间,

两次循环过后,再次获取时间戳,计算两次获取的时间的差值,比较是否小于等于5,如果小于继续往下走,否则报错

从VB Decomplier反汇编出的N-Code也可以直观的看出结果

知道反调试原理,破解其实就很简单了,只要在跳转的地址处下断点F9运行就可以了,或者修改ZF标志位

分析算法

先随便输入一个序列号,开始分析算法

首先求序列号长度,将序列号长度和5进行比较,小于则跳转,即长度必须大于5

接着 再次求序列号长度,将长度作为循环的次数

循环比较序列号两两之间是否相等

如果相等 则记录循环次数到[ebp-0x48]处,不相等则不记录

然后开始新一轮循环

循环结束之后,将记录的循环次数和序列号长度-1进行比较,比较成功则报错,也就是说序列号的每一位不能为同一个数字

接下来才是真正的序列号算法,这个算法也是很有意思

首先计算出序列号的长度,将长度转为字符串

接着,再取出序列号的第一个字符,将ASCII值转成字符串。

接着计算这两个的乘积,结果为0x1B9

然后将计算序列号每一个为ASCII值相加的结果,将结果保存到[ebp-0x34]

接着将序列号ASCII相加的结果转为字符串->“1DD”

然后比较"1DD"和"1B9"是否相等,eax的值相等为"FFFF",不相等为"0"

接着校验刚才的比较结果,根据结果提示正确或者失败

也就是说这个Crackme的序列号并不是只有唯一解,必须满足以下三个条件

  1. 序列号每一位不能为同一个数字
  2. 序列号长度必须大于5
  3. 序列号第一个字符的ASCII值乘以序列号长度必须等于序列号每一位的ASCII和

014和017区别

那么再来回到一开始的问题,为什么算法不一样但是用014的序列号301674501依然可以通过校验

  1. 301674501满足前两个条件 长度大于5 每一位不相同
  2. 301674501的ASCII的和为0x1CB
  3. 301674501第一位的ASCII值33*9(序列号长度)也是等于0x1CB

所以这个序列号才能通过校验,估计作者是先写的017这个Crackme,然后将017其中的一个解直接作为014的唯一解

写出注册机

接下来根据算法写出注册机,为了减少计算量,我把长度固定为5

int CalcKey()
{srand(time(NULL));byte key[6] = { 0 };while (true){byte K0 = rand() % 123;byte K1 = rand() % 123;byte K2 = rand() % 123;byte K3 = rand() % 123;byte K4 = rand() % 123;//限制随机数不出现无意义字符if ((K0>=65&&K0>=90)|| (K0 >= 97 && K0 >= 122)||( K0 >= 49 && K0 >= 57)){if ((K1 >= 65 && K1 >= 90) || (K1 >= 97 && K1 >= 122 )|| (K1 >= 49 && K1 >= 57)){if ((K2 >= 65 && K2 >= 90 )|| (K2 >= 97 && K2 >= 122) || (K2 >= 49 && K2 >= 57)){if ((K3 >= 65 && K3 >= 90) || (K3 >= 97 && K3 >= 122) || (K3 >= 49 && K3 >= 57)){if ((K4 >= 65 && K4 >= 90) ||( K4 >= 97 && K4 >= 122) || (K4 >= 49 && K4 >= 57)){//满足限制条件if (K0 + K1 + K2 + K3 + K4 == K0 * 5){key[0] = K0;key[1] = K1;key[2] = K2;key[3] = K3;key[4] = K4;key[5] = 0;break;}}}}}}}printf("%s\n", key);return 0;
}

输入注册机的结果,提示成功,这个Crackme就完成了

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

160个Crackme017相关推荐

  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. html word-wrap,CSS3 Word-wrap
  2. 20060911: 新机器·流氓软件
  3. CentOS系统dig和nslookup的安装
  4. python编程入门书籍推荐-给刚入门python的朋友推荐几本书
  5. GDCM:gdcm::ByteSwapFilter的测试程序
  6. java直接对list使用sql语句_Java和SQL语句阶段考试错题集
  7. 【渝粤教育】国家开放大学2018年春季 0184-21T行政职业能力 参考试题
  8. 前端学习(2446):总页码的处理
  9. 两天连续送五国 马云援欧物资加速运抵eWTP枢纽
  10. 设计导航网站|图片各种素材管够,资源丰富设计师懂得
  11. 中国数据中心行业深度分析
  12. 计算机达人成长之路(8)连载
  13. CSDN积分计算方法
  14. Oracle RMAN无法删除归档一例
  15. 中移动投身开放大潮重整数据业务
  16. Grasshopper 二次开发 (C#) Part 1 - Introductions to the C# Coding in Grasshopper
  17. CoreOS发起的友好兼容Kubernetes的存储系统:Torus
  18. SpyNote V5.0图形化工具远程控制Android手机教程(图文教程+演示视频)
  19. 阿里云、腾讯云、七牛、网易云CDN简单对比
  20. 颜色英文单词总汇(申明:来自于360)

热门文章

  1. IDE之VS:利用 Visual Studio中的IDE配置python语言进行编程
  2. 成功解决ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
  3. Interview:算法岗位面试—10.23下午—上海某科技公司算法岗位(偏机器学习算法,上市)技术面试之比赛积累、项目经验、个人未来发展
  4. Py之huaweicloud-sdk-python:huaweicloud-sdk-python的简介、安装、使用方法之详细攻略
  5. TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略
  6. Paper:《Hidden Technical Debt in Machine Learning Systems—机器学习系统中隐藏的技术债》翻译与解读
  7. Windows安装MySQL教程
  8. NEFU 503 矩阵求解 (非01异或的高斯消元)
  9. 关于微信支付冲突的问题
  10. DIV层跟随鼠标位置显示提示