逆向破解之160个CrackMe —— 029
CrackMe —— 029
160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序
CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。
| 编号 | 作者 | 保护方式 |
| 029 | Cosh | Name/Serial |
工具
x32dbg
开始破解之旅
ON.1
爆破方式
首先使用x32dbg打开029号程序,搜索字符串

这里我们看到了正确信息提示符和错误信息提示符
进入正确信息提示符地址004015E0处
0040159A | 8B45 F0 | mov eax,dword ptr ss:[ebp-] |
0040159D | 8A18 | mov bl,byte ptr ds:[eax] |
0040159F | 32D9 | xor bl,cl |
004015A1 | | mov byte ptr ds:[eax],bl |
004015A3 | | inc ecx |
004015A4 | | inc eax |
004015A5 | | cmp byte ptr ds:[eax], |
004015A8 | F3 | jne cosh..40159D |
004015AA | 8B45 E4 | mov eax,dword ptr ss:[ebp-1C] |
004015AD | 8B55 F0 | mov edx,dword ptr ss:[ebp-] | edx:EntryPoint
004015B0 | 33C9 | xor ecx,ecx |
004015B2 | 8A18 | mov bl,byte ptr ds:[eax] |
004015B4 | 8A0A | mov cl,byte ptr ds:[edx] | edx:EntryPoint
004015B6 | 3AD9 | cmp bl,cl |
004015B8 | | jne cosh..4015C3 | 此处验证跳转
004015BA | | inc eax |
004015BB | | inc edx | edx:EntryPoint
004015BC | | cmp byte ptr ds:[eax], |
004015BF | EF | jne cosh..4015B0 | 此处验证跳转
004015C1 | EB | jmp cosh..4015D9 |
004015C3 | 6A | push |
004015C5 | 6C304000 | push cosh..40306C | 40306C:"ERROR"
004015CA | | push cosh.. | :"One of the Details you entered was wrong"
004015CF | 8B4D E0 | mov ecx,dword ptr ss:[ebp-] |
004015D2 | E8 BB020000 | call <JMP.&Ordinal#> |
004015D7 | EB | jmp cosh..4015ED |
004015D9 | 6A | push |
004015DB | | push cosh.. | :"YOU DID IT"
004015E0 | | push cosh.. | :"Well done,Cracker"
004015E5 | 8B4D E0 | mov ecx,dword ptr ss:[ebp-] |
004015E8 | E8 A5020000 | call <JMP.&Ordinal#> |
004015ED | 6A | push |
004015EF | FF15 | call dword ptr ds:[<&Sleep>] |
我们看到在地址004015BF处经过JMP来到了正确提示符处,这里就是验证注册码正确性的地方,在继续向上翻看,也有验证地址为004015B8,此处验证失败也会跳转到错误的地方
我们将这两个地址修改为NOP,F9运行输入任意字符点击check按钮

bingo ~ 破解成功
在上方还会有多处验证判断,判断输入格式是否正确
ON.2
追码方式
我们看到地址到地址为Name计算的方法
使用Python代码为
name = 'lonenysky'
value = []
for i, key in enumerate(name):
value.append(chr(ord(key) ^ (i + 1)))
print('name is %s' % ''.join(value))
value = []
for i, key in enumerate(name):
value.append(chr(ord(key) ^ (i + 0x0a)))
print('serial is %s' % ''.join(value))

bingo ~ 破解成功
在追码的过程中当我们不知道cl的值时可以观看下方的窗口推测出来

逆向破解之160个CrackMe —— 029的更多相关文章
- 逆向破解之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 ...
随机推荐
- 洛谷p3385【模板】负环
最近很久没怎么写最短路的题导致这个题交了好多遍 AC率是怎么下来的自己心里没点数 SPFA虽然臭名昭著但是他可以用来判负环 如果一个点进队的次数大于等于n说明存在负环 这道题一开始memset我给di ...
- 【CF438D】The Child and Sequence(线段树)
点此看题面 大致题意: 给你一个序列,让你支持区间求和.区间取模.单点修改操作. 区间取模 区间求和和单点修改显然都很好维护吧,难的主要是区间取模. 取模标记无法叠加,因此似乎只能暴力搞? 实际上,我 ...
- IDEA中SonarLint的安装与使用
一.SonarLint插件的安装 1.1在线安装 (1)在IDEA菜单栏选择File->Settings,左边栏选择Plugins (2)在线安装选择Browse repositories,搜索 ...
- 第02组 Alpha冲刺(4/6)
队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 摸鱼 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的进度 学习如何评估代码质量 准备Al ...
- 微信小程序绑定列表数据
js代码 Page({ /** * 页面的初始数据 */ data: { words:[] } wxml代码 <view wx:for="{{words}}" class=' ...
- idea创建maven多模块Spring Boot项目
1, 创建父项目 1.1,file - new - project 1.2,选择maven,Create from archetype(有的说不选,有的没说,不过我建父项目的时候没有勾选) 1.3,根 ...
- 【阿里云IoT+YF3300】2.阿里云IoT云端通信Alink协议介绍
如果单单只有MQTT协议,也许很难支撑起阿里这个IoT大厦.Alink协议的出现,不仅仅是数据从传感端搬到云端,它就如基因图谱,它勾画了一个大厦的骨架,有了它,才有了IoT Studio,才有了大数据 ...
- Python 发送企业微信消息
1.获取企业微信信息 1)我的企业 --> 企业信息 --> 企业ID 2)创建一个应用,记录该应用的 AgentId.Secret 2.python代码 #!/usr/bin/env p ...
- python的深浅拷贝-成为马老师的弟子
参考链接 骏马金龙 前提 想要了解深浅拷贝之前必须要知道可变和不可变类型,和他们的特性 不可变类型 数字 字符串 元组 不可变集合 特性:改变值,会创建新的内存空间存储数据 可变类型 列表 字典 可变 ...
- AtomicInteger例子
AtomicInteger可以保证原子性,可见性,有序性 public class AtomicIntegerTest { private static AtomicInteger value = n ...