逆向破解之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 ...
随机推荐
- spark 入门教程合集
看到一篇不错的 spark 入门教程的合集,在此记录一下 http://www.cnblogs.com/shishanyuan/p/4699644.html
- 【Java笔记】【Java核心技术卷1】chapter3 D2注释
package chapter3; /** * 文档注释 *@author lp *@version 1 **/ public class D2注释 { //单行注释 /* 长注释 */ }
- 利用hash或history实现单页面路由
目录 html代码 css代码 JavaScript代码 hash方式 history 方式 浏览器端代码 服务器端 在chrome(版本 70.0.3538.110)测试正常 编写涉及:css, h ...
- 送礼物「JSOI 2015」RMQ+01分数规划
[题目描述] 礼品店一共有N件礼物排成一列,每件礼物都有它的美观度.排在第\(i(1\leq i\leq N)\)个位置的礼物美观度为正整数\(A_I\).JYY决定选出其中连续的一段,即编号为礼物\ ...
- C#_会员管理系统
https://www.cnblogs.com/start-from-scratch/p/5420588.html
- react父组件调用子组件中方法
- Jenkins使用aqua-microscanner-plugin进行容器漏洞扫描
官方地址:https://github.com/jenkinsci/aqua-microscanner-plugin Step1 在jenkins安装"Aqua MicroScanner&q ...
- 【win10主机】连接virtualbox上【32位winXP系统虚拟机】上启动的mysql
问题Q: 在virtualbox上启动winXP系统虚拟机后,启动含oa项目的tomcat,数据库服务也运行起来了,虚拟机上连接无误: 在上一篇<主机访问 虚拟机启动的项目>基础上,尝试连 ...
- 新手学习selenium路线图(老司机亲手绘制)
前言: 最近群里有不少小白,想入手selenium,但是一直没找到学习路线,还没入门就迷路了,于是小编亲手绘制了一幅学习路线图.希望能帮助小白快速入门,帮助已经入门的,尽快提升! 学习selenium ...
- FILEBEAT+ELK日志收集平台搭建流程
filebeat+elk日志收集平台搭建流程 1. 整体简介: 模式:单机 平台:Linux - centos - 7 ELK:elasticsearch.logstash.kiban ...