逆向破解之160个CrackMe —— 027
CrackMe —— 027
160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序
CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。
| 编号 | 作者 | 保护方式 |
| 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按钮,提示我们破解成功


逆向破解之160个CrackMe —— 027的更多相关文章
- 逆向破解之160个CrackMe —— 001
CrackMe —— 001 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 002-003
CrackMe —— 002 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 004-005
CrackMe —— 004 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 013
CrackMe —— 013 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 014
CrackMe —— 014 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 016
CrackMe —— 016 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 017
CrackMe —— 017 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 018
CrackMe —— 018 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 025
CrackMe —— 025 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
随机推荐
- PATA1075 PAT Judge (25 分)
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...
- 企业级Nginx负载均衡与keepalived高可用实战(一)Nginx篇
1.集群简介 1.1.什么是集群 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器. ...
- Qt 简易图片播放器
一.前言 使用 Qt 制作了一个简单的图片播放器,点击 "浏览按钮" 浏览图片所在目录,目录中的所有图片缩小图标和名称会显示在左侧的图片列表中,点击列表中的图片项,可以在右侧区域的 ...
- Python连载31-threading的使用
一. 例子:我们对传参是有要求的必须传入一个元组,否则报错 二. import _thread as thread import time def loop1(in1): print("St ...
- hdu6546 Function
Function \(\text{Alice}\) 有 \(n\) 个二次函数 \(F_i(x)=a_ix^2+b_ix+c_i(i \in [1,n])\). 现在他想在 \(\sum_{i=1}^ ...
- kali 安装 360国产浏览器
1. 下载360安全浏览器国产版本的 amd64 deb的包 https://browser.360.cn/se/linux/index.html 下载到的文件为: browser360-cn-sta ...
- Sitecore A / B测试
测试您的Web内容非常重要.这是查看页面中的页面和组件是否达到预期效果的好方法.测试还可以让您放心,您的内容足够吸引人,以增加转化次数并最大限度地提高增长率. 测试如何运作? 测试通过向访问者随机显示 ...
- struts2的使用入门
虽然说Struts2现在已经被SpringMVC框架淘汰了,据说是有很多安全漏洞.但是Struts2作为一个成熟的MVC框架,还是有必要了解一下的,好歹是曾经风光一时的前辈,老祖宗的东西不能丢下,里面 ...
- scala的应用--UDF:用户自定义函数
在window10下安装了hadoop,用ida创建maven项目. <properties> <spark.version>2.2.0</spark.version&g ...
- MySQL数据库 : 高级查询
根据某个字段删除重复的数据, 只保留一条: 比如uuid字段有重复的, 需要只保留一条数据, 让uuid字段不能重复, 则首先 group by uuid 查出所有数据的id最小的那条数据,作为dt表 ...