CrackMe —— 027

160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序

CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。

CrackMe简称CM。
程序下载地址:点击我

来源 <-点击查看

编号 作者 保护方式
027 Cosh CD-CHECK

工具

x32dbg

开始破解之旅

ON.1

爆破方式

首先我们使用x32dbg打开027号程序,右键搜索字符串

这里看到了我们的正确提示字符串信息和错误提示字符串信息

进入正确字符串地址处0040148B,向上翻看

 | E8               | call <JMP.&Ordinal#>                                 |
| 385D F3 | cmp byte ptr ss:[ebp-0xD],bl |
0040138C | 0F84 F3000000 | je cosh.. | 判断验证信息是否正确,正确则跳转到正确提示处
| FF45 EC | inc dword ptr ss:[ebp-0x14] |
| 83C7 | add edi,0x4 | edi:"0#@"
| 837D EC | cmp dword ptr ss:[ebp-0x14],0x7 |
0040139C | 9F | jne cosh..40133D | 错误则向上跳转,循环每个盘验证注册信息
0040139E | | push ebx |
0040139F | 4C304000 | push cosh..40304C | 40304C:"Try again"
004013A4 | | push cosh.. | :"You lost"
004013A9 | 8B4D E4 | mov ecx,dword ptr ss:[ebp-0x1C] | [ebp-1C]:"0#@"
004013AC | E8 D1020000 | call <JMP.&Ordinal#> |
004013B1 | 8D4D E8 | lea ecx,dword ptr ss:[ebp-0x18] |
004013B4 | C645 FC 0E | mov byte ptr ss:[ebp-0x4],0xE |
004013B8 | E8 DD020000 | call <JMP.&Ordinal#> |
004013BD | | push esi | esi:"0#@"
004013BE | 6A | push 0x1 |
004013C0 | 8D45 DC | lea eax,dword ptr ss:[ebp-0x24] |
004013C3 | 6A | push 0x4 |
004013C5 | | push eax |
004013C6 | C645 FC 0D | mov byte ptr ss:[ebp-0x4],0xD | D:'\r'
004013CA | E8 | call cosh..4016F6 |
004013CF | 8D4D D8 | lea ecx,dword ptr ss:[ebp-0x28] |
004013D2 | C645 FC 0C | mov byte ptr ss:[ebp-0x4],0xC | C:'\f'
004013D6 | E8 BF020000 | call <JMP.&Ordinal#> |
004013DB | 8D4D D4 | lea ecx,dword ptr ss:[ebp-0x2C] |
004013DE | C645 FC 0B | mov byte ptr ss:[ebp-0x4],0xB | B:'\v'
004013E2 | E8 B3020000 | call <JMP.&Ordinal#> |
004013E7 | 8D4D D0 | lea ecx,dword ptr ss:[ebp-0x30] |
004013EA | C645 FC 0A | mov byte ptr ss:[ebp-0x4],0xA | A:'\n'
004013EE | E8 A7020000 | call <JMP.&Ordinal#> |
004013F3 | 8D4D CC | lea ecx,dword ptr ss:[ebp-0x34] |
004013F6 | C645 FC | mov byte ptr ss:[ebp-0x4],0x9 | :'\t'
004013FA | E8 9B020000 | call <JMP.&Ordinal#> |
004013FF | 8D4D C8 | lea ecx,dword ptr ss:[ebp-0x38] |
| C645 FC | mov byte ptr ss:[ebp-0x4],0x8 |
| E8 8F020000 | call <JMP.&Ordinal#> |
0040140B | 8D4D C4 | lea ecx,dword ptr ss:[ebp-0x3C] |
0040140E | C645 FC | mov byte ptr ss:[ebp-0x4],0x7 |
| E8 | call <JMP.&Ordinal#> |
| 8D4D C0 | lea ecx,dword ptr ss:[ebp-0x40] |
0040141A | C645 FC | mov byte ptr ss:[ebp-0x4],0x6 |
0040141E | E8 | call <JMP.&Ordinal#> |
| 8D4D BC | lea ecx,dword ptr ss:[ebp-0x44] |
| C645 FC | mov byte ptr ss:[ebp-0x4],0x5 |
0040142A | E8 6B020000 | call <JMP.&Ordinal#> |
0040142F | 8D4D B8 | lea ecx,dword ptr ss:[ebp-0x48] |
| C645 FC | mov byte ptr ss:[ebp-0x4],0x4 |
| E8 5F020000 | call <JMP.&Ordinal#> |
0040143B | 8D4D B4 | lea ecx,dword ptr ss:[ebp-0x4C] |
0040143E | C645 FC | mov byte ptr ss:[ebp-0x4],0x3 |
| E8 | call <JMP.&Ordinal#> |
| 8D4D B0 | lea ecx,dword ptr ss:[ebp-0x50] |
0040144A | C645 FC | mov byte ptr ss:[ebp-0x4],0x2 |
0040144E | E8 | call <JMP.&Ordinal#> |
| 8D4D AC | lea ecx,dword ptr ss:[ebp-0x54] |
| C645 FC | mov byte ptr ss:[ebp-0x4],0x1 |
0040145A | E8 3B020000 | call <JMP.&Ordinal#> |
0040145F | 8D4D A8 | lea ecx,dword ptr ss:[ebp-0x58] |
| 885D FC | mov byte ptr ss:[ebp-0x4],bl |
| E8 | call <JMP.&Ordinal#> |
0040146A | 834D FC FF | or dword ptr ss:[ebp-0x4],0xFFFFFFFF |
0040146E | 8D4D A4 | lea ecx,dword ptr ss:[ebp-0x5C] |
| E8 | call <JMP.&Ordinal#> |
| 8B4D F4 | mov ecx,dword ptr ss:[ebp-0xC] |
| 5F | pop edi | edi:"0#@"
0040147A | 5E | pop esi | esi:"0#@"
0040147B | 5B | pop ebx |
0040147C | :890D | mov dword ptr fs:[],ecx |
| C9 | leave |
| C3 | ret |
| | push ebx |
| | push cosh.. | :"You did it"
0040148B | | push cosh.. | :"Well done, Cracker"
| E9 14FFFFFF | jmp cosh..4013A9 | 此处向上跳转,跳转到004013A9
| 6A | push 0x0 |
| FF71 | push dword ptr ds:[ecx+0x20] |

我们在0040138C处下断点,点击Check for CD按钮,此时程序停在了我们的断点处

将0040138C处JE修改为JMP

bingo ~ 破解成功

ON.2

来到上一步下的断点处,向上一栋两三步可以看出来,该代码会循环读取C-P硬盘下的"CH_CHECK.DAT"文件,判断是否存在如果存在成提示正确信息,在C盘下创建该文件后点击Check for CD按钮,提示我们破解成功

最新文章

  1. Netty5使用自签证书实现SSL安全连接
  2. ubuntu12.04 安装 QQ
  3. 小结MapReduce 程序的流程及设计思路
  4. android和linux开发环境建立(驱动层)
  5. Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制
  6. 读&lt;jquery 权威指南&gt;[2]-事件
  7. codeforces mysterious present 最长上升子序列+倒序打印路径
  8. [Java拾遗四]JavaWeb基础之Servlet_Request&amp;&amp;Response
  9. leetcode:Coin Change
  10. MySql中having字句对组记录进行筛选使用说明
  11. java 加减乘除错误
  12. PHP header使用
  13. 前端应该知道的Web Components
  14. Python安装第三方包(模块/工具)出现链接超时,网速慢,安装不上的问题如何解决
  15. Java基础20:Java8新特性终极指南
  16. K8S 基本操作
  17. Windows server 2008 R2远程桌面3389端口号修改
  18. consul 文档
  19. go在ubuntu下安装
  20. 微信jssdk常见错误及解决方法

热门文章

  1. RaxML使用
  2. [LeetCode] 105. Construct Binary Tree from Preorder and Inorder Traversal 由先序和中序遍历建立二叉树
  3. Java Web 之 SSM笔记
  4. java 获取用户输入
  5. Zuul的使用,路由访问映射规则
  6. JavaScript 正则表达式匹配成功后的返回结果
  7. 自定义httpservletrequest解析参数
  8. c++中获得对象类型 typeid 与 type_info
  9. 修改Linux桌面高分屏下QT程序界面的缩放
  10. 【转】Redis 分布式锁的正确实现方式( Java 版 )