逆向破解之160个CrackMe —— 029
2024-10-19 19:26:47
CrackMe —— 029
160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序
CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。
CrackMe简称CM。
编号 | 作者 | 保护方式 |
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的值时可以观看下方的窗口推测出来
最新文章
- HBase 数据模型(Data Model)
- CSS魔法堂:深入理解line-height和vertical-align
- github添加ssh key报错Key is invalid. Ensure you&#39;ve copied the file correctly
- ubuntu 使用wine卸载软件
- 2013MPD上海6.23 PM 光耀:读心术,用户心理的产品之道
- 设置sudo权限
- 聊聊 KVC 和 KVO 的高阶应用
- Dynamics 365-关于BPF的进一步探究
- 设置mysql InnoDB存储引擎下取消自动提交事务
- 9. http协议_响应状态码_页面渲染流程_路由_中间件
- Web应用增加struts2支持
- 一种简单的生产环境部署Node.js程序方法
- 【leetcode】448. Find All Numbers Disappeared in an Array
- TP5中即点即改,json分页,单删
- 带轮播图、导航栏、商品的简单html,以及轮播图下边数字随轮播图的改变而改变
- video视频在本地可以播放,在服务器上不可以播放
- ITSS相关的名词解释
- ZedGraph使用经验(转帖)
- Java调用TSC打印机进行打印
- 请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出。 echo ";zhaokang";;echo ";zhaokang";
热门文章
- java web开发入门十(idea创建maven SSM项目)基于intellig idea
- 手撕代码:统计1到n二进制数中1出现的总次数
- (十三)golang--程序流程控制
- mongodb集群化
- R语言dai xie
- nginx 的一些优化(突破十万并发)
- 【mysql】windows7 安装mysql5.7 解压缩版 + windows7 安装mysql5.7报错 计算机丢失了MSVCR120.dll解决方法
- 一段简单的顶部JS广告
- file 从InputStream读取byte[]示例
- WPF DispatcherTimer一些个人看法 (原发布 csdn 2017-04-25 19:12:22)