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

此时我们看见了正确提示字符提示信息和错误字符提示信息,进入正确提示信息地址为004033A5
| :03C7 | add ax,di |
0040331C | 0F80 | jo cracking4all.. | 此处向下跳转到错误提示处,验证输入格式
| 0F80 3E020000 | jo cracking4all.. | 此处向下跳转到错误提示处,验证输入格式
| 8BF8 | mov edi,eax |
0040332A | E9 C0FEFFFF | jmp cracking4all..4031EF |
0040332F | 8D45 C8 | lea eax,dword ptr ss:[ebp-0x38] |
| 8D8D 38FFFFFF | lea ecx,dword ptr ss:[ebp-0xC8] |
| | push eax |
| | push ecx |
0040333A | C785 40FFFFFF C8274000 | mov dword ptr ss:[ebp-0xC0],cracking4all..4027C8 | [ebp-C0]:L"à", 4027C8:L"qBQSYdXUe_B\\V"
| C785 38FFFFFF | mov dword ptr ss:[ebp-0xC8],0x8008 |
0040334E | FF15 | call dword ptr ds:[<&__vbaVarTstEq>] |
| :85C0 | test ax,ax |
| B9 | mov ecx,0x80020004 |
0040335C | B8 0A000000 | mov eax,0xA | A:'\n'
| 894D | mov dword ptr ss:[ebp-0x80],ecx |
| 78FFFFFF | mov dword ptr ss:[ebp-0x88],eax |
0040336A | 894D | mov dword ptr ss:[ebp-0x70],ecx | [ebp-]:"梵"
0040336D | | mov dword ptr ss:[ebp-0x78],eax |
| 0F84 E8000000 | je cracking4all..40345E | 此处向下跳转到错误处,验证输入Passowrd是否正确
| 8B35 9C614000 | mov esi,dword ptr ds:[<&__vbaVarDup>] |
0040337C | BF | mov edi,0x8 |
| 8D95 28FFFFFF | lea edx,dword ptr ss:[ebp-0xD8] |
| 8D4D | lea ecx,dword ptr ss:[ebp-0x68] |
0040338A | C785 30FFFFFF | mov dword ptr ss:[ebp-0xD0],cracking4all.. | :L"Valid"
| 89BD 28FFFFFF | mov dword ptr ss:[ebp-0xD8],edi |
0040339A | FFD6 | call esi |
0040339C | 8D95 38FFFFFF | lea edx,dword ptr ss:[ebp-0xC8] |
004033A2 | 8D4D A8 | lea ecx,dword ptr ss:[ebp-0x58] |
004033A5 | C785 40FFFFFF E8274000 | mov dword ptr ss:[ebp-0xC0],cracking4all..4027E8 | [ebp-C0]:L"à", 4027E8:L"Password correct, hehe, :-)"
004033AF | 89BD 38FFFFFF | mov dword ptr ss:[ebp-0xC8],edi |
004033B5 | FFD6 | call esi |
004033B7 | 8D95 78FFFFFF | lea edx,dword ptr ss:[ebp-0x88] |
004033BD | 8D45 | lea eax,dword ptr ss:[ebp-0x78] |
004033C0 | | push edx |
004033C1 | 8D4D | lea ecx,dword ptr ss:[ebp-0x68] |
004033C4 | | push eax |
我们看到有三处跳转跳转到了错误提示信息处,将这三处跳转修改为NOP,地址为0040331C,和,F9运行

bingo~ 爆破成功
ON.2
追码方式
使用VB Decompiler Pro打开030号程序,我们在左侧选中Code -> password -> Command1_Click,右侧及显示反汇编的代码

我们可以看出该函数会获取我们输入的长度,同时循环将每个字符的ASCII码与ecx进行异或运算,最后与“qBQSYdXUe_B\V”进行对比
那么ecx是谁呢,我们通过x32dbg可以看出为字符串“"循环,每次读取一位,循环读取
| FFD3 | call ebx |
| | push eax |
| FF15 0C614000 | call dword ptr ds:[<&rtcAnsiValueBstr>] |
0040327A | 0FBFD0 | movsx edx,ax |
0040327D | 8D8D 68FFFFFF | lea ecx,dword ptr ss:[ebp-0x98] |
| 8D45 BC | lea eax,dword ptr ss:[ebp-0x44] |
| | push ecx |
| | push eax |
| E8FEFFFF | mov dword ptr ss:[ebp-0x118],edx |
0040328E | FFD3 | call ebx |
| | push eax |
| FF15 0C614000 | call dword ptr ds:[<&rtcAnsiValueBstr>] |
| 8B95 E8FEFFFF | mov edx,dword ptr ss:[ebp-0x118] |
0040329D | 0FBFC8 | movsx ecx,ax |
列出我们的Python代码
password = ''
asc_password = 'qBQSYdXUe_B\\V'
for k, v in enumerate(asc_password):
password = password + chr(ord(v) ^ ord(''[k % 4]))
print(password)
结果为“CrackTheWorld”,带入到程序内

bingo~ 破解成功
逆向破解之160个CrackMe —— 030的更多相关文章
- 逆向破解之160个CrackMe —— 031
CrackMe —— 031 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之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 ...
随机推荐
- 以太坊RLPx传输协议
本文主要内容翻译自:The RLPx Transport Protocol,其中添加了一些个人的理解,由于密码学水平有限,不正确之处望指正.另外原文可能已经更新,最新内容请直接阅读原文. 本文档定义了 ...
- 深扒JVM,对它进行“开膛破肚”式解析!
1. 打怪升级,你绕不开JVM JVM,对Java程序员进阶而言,是一个绝对绕不开,也不能绕开的话题. 在你打怪升级.进阶蜕变的路上,势必会遇到项目上线中各种OOM.GC等问题,此时JVM的功底就至关 ...
- win10 我的电脑下面的六个文件夹的隐藏
第一步 第二步 第三步 修改注册表,要隐藏那个文件夹,ThisPCPolicy 改为 "Hide" 修改我的文档的注册表值,使我的文档文件夹隐藏 <w ...
- python3学习-requests使用
前面我们讲过了urllib模块,知道他是用于网络请求的,这一节讲的requests还是用于网络请求的,只不过urllib是官方模块,而requests是第三方的模块.用过的人都说他才是'人类使用的', ...
- 使用Typora编写博客并发布
前言 用CSDN写了一段时间,广告漫天飞舞.... 于是在博客园申请了一个账号,然后看见markdown编辑页面的第一眼: 再见^_^ 搜索一波,凭着博客园强大的生态,30多万的用户,第三方的支持应接 ...
- 分享我的GD32F450的IAP过程
最近一个项目使用GD32F450VI+ESP8266需要做远程升级,基本参考正点原子IAP的那一章节,但是在GD32F450上却遇到了问题,无法跳转,然后使用正点原子的开发板stm32f429,以及s ...
- Spring入门(六):条件化的bean
1. 概念 默认情况下,Spring中定义的bean在应用程序启动时会全部装配,不管当前运行的是哪个环境(Dev,QA或者Prod),也不管当前运行的是什么系统(Windows或者Linux),但有些 ...
- (七)c#Winform自定义控件-进度条
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- C#.Net实现AutoCAD块属性提取
https://blog.csdn.net/dengyiyu/article/details/2201175 本文主要给大家介绍一下SmartSoft中用C#.Net实现AutoCAD块属性提取的方法 ...
- Windows Server 2008 R2服务器内存使用率过高,但与任务管理器中进程占用内存和不一致
系统环境: Windows Server 2008 R2 + Sql Server 2008 R2 问题描述: Windows Server 2008 R2系统内存占用率过大,而在任务管理器中各进 ...