逆向破解之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 ...
随机推荐
- 夯实Java基础(十二)——异常处理
1.异常处理概述 在Java程序执行过程中, 总是会发生不被期望的事件, 阻止程序按照程序员预期正常运行, 这就是Java程序出现的异常. 异常处理是基于面向对象的一种运行错误处理机制,通过对异常问题 ...
- 用lilypond实现模进
基本练习通常是一个两个简单动作在不同位置上反复操练,所以打谱的时候用模进必不可少. 所谓模进,就是把一个片段平行地转移到其他音高上进行.比如 do re mi fa 可以把从do开始改成从so开始,那 ...
- ext container的使用的场景
container 是 panel 简化,他称之为容器,而panel则是面板. 如果不需要类似Ext.panel.Panel,Ext.window.Window和Ext.tab.Panel 等功能,则 ...
- 【原创】POI操作Excel导入导出工具类ExcelUtil
关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...
- 扩展欧几里德算法(递归及非递归实现c++版)
今天终于弄懂了扩展欧几里德算法,有了自己的理解,觉得很神奇,就想着写一篇博客. 在介绍扩展欧几里德算法之前,我们先来回顾一下欧几里德算法. 欧几里德算法(辗转相除法): 辗转相除法求最大公约数,高中就 ...
- 重学计算机组成原理(六)- 函数调用怎么突然Stack Overflow了!
用Google搜异常信息,肯定都访问过Stack Overflow网站 全球最大的程序员问答网站,名字来自于一个常见的报错,就是栈溢出(stack overflow) 从函数调用开始,在计算机指令层面 ...
- 「雕爷学编程」Arduino动手做(9)——火焰传感器模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- HTTP2.0的多路复用和HTTP1.X中的长连接复用区别
HTTP/2 多路复用 (Multiplexing) 多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息 HTTP1.1 在HTTP/1.1协议中,浏览器客户端在同一时间,针 ...
- SpringBoot电商项目实战 — Redis实现分布式锁
最近有小伙伴发消息说,在Springboot系列文第二篇,zookeeper是不是漏掉了?关于这个问题,其实我在写第二篇的时候已经考虑过,但基于本次系列文章是实战练习,在项目里你能看到Zookeepe ...
- LoRaWAN stack移植笔记(五)__调试1
先废话一小段 在将LoRaWAN的程序移植的过程中,调试发现了很多的问题. 做好记录工作,防止以后再踩坑 移植使用的是LoRaMac-node库,使用的是STM32L151CBT6 MCU,需要要移植 ...