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的值时可以观看下方的窗口推测出来

逆向破解之160个CrackMe —— 029的更多相关文章

  1. 逆向破解之160个CrackMe —— 001

    CrackMe —— 001 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  2. 逆向破解之160个CrackMe —— 002-003

    CrackMe —— 002 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  3. 逆向破解之160个CrackMe —— 004-005

    CrackMe —— 004 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  4. 逆向破解之160个CrackMe —— 013

    CrackMe —— 013 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  5. 逆向破解之160个CrackMe —— 014

    CrackMe —— 014 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  6. 逆向破解之160个CrackMe —— 016

    CrackMe —— 016 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  7. 逆向破解之160个CrackMe —— 017

    CrackMe —— 017 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  8. 逆向破解之160个CrackMe —— 018

    CrackMe —— 018 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  9. 逆向破解之160个CrackMe —— 025

    CrackMe —— 025 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

随机推荐

  1. [LeetCode] 390. Elimination Game 淘汰游戏

    There is a list of sorted integers from 1 to n. Starting from left to right, remove the first number ...

  2. [LeetCode] 31. Next Permutation 下一个排列

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  3. KMP 串的模式匹配 (25分)

    给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出.如果找不到,则输出“Not ...

  4. loj 2135 「ZJOI2015」幻想乡战略游戏 - 动态点分治

    题目传送门 传送门 题目大意 给定一棵树,初始点权都为0,要求支持: 修改点权 询问带权重心 询问带权重心就在点分树上跑一下就行了.(枚举跳哪个子树更优) 剩下都是基础点分治. 学了一下11-dime ...

  5. 基于sign的pose-graph残差函数构建

    沿sign的法线方向优化车辆位姿,优化目标函数也即残差函数构建过程如下:

  6. TJOI 2015 概率论(生成函数)

    题意 ​ 求一棵随机生成的有根二叉树(节点无标号,各种不同构的情况随机出现)叶子结点个数的期望. 思路 ​ 用生成函数做是个好题. ​ 我们考虑设 \(n\) 个节点,所有不同构二叉树叶子结点的总和为 ...

  7. SpringCloud Feign 参数问题

    今天遇到使用Feign调用微服务,传递参数时遇到几个问题 1.无参数 以GET方式请求 服务提供者 @RequestMapping("/hello") public String ...

  8. Field redisTemplate in xxxxxx required a bean of type 'org.springframework.data.redis.core.RedisTemplate' that could not be found.

    *************************** APPLICATION FAILED TO START *************************** Description: Fie ...

  9. lock、tryLock和lockInterruptibly的差別

    lock():若lock被thread A取得,thread B会进入block状态,直到取得lock:tryLock():若当下不能取得lock,thread就会放弃,可以设置一个超时时间参数,等待 ...

  10. 更新element-ui版本

    1. 卸载当前版本 npm uninstall element-ui 2. 安装指定版本 npm -S