CrackMe —— 030

160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序

CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。

CrackMe简称CM。
程序下载地址:点击我

来源 <-点击查看

编号 作者 保护方式
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的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 图像反转(一些基本的灰度变换函数)基本原理及Python实现

    1. 基本原理 获取像素值在[0, L]范围内的图像的反转图像,即为负片.适用于增强图像中白色或者灰色的区域,尤其当黑色在图片中占主地位时候 $$T(r) = L-r$$ 2. 运行结果 图源自ski ...

  2. linux下安装开发环境

    jdk 下载jdk安装包,解压到/usr/java/jdk 配置环境变量: #vi /etc/profile 在该profile文件中最下面添加: JAVA_HOME=/usr/java/jdk1.7 ...

  3. Vue 中使用 typescript

    Vue 中使用 typescript 什么是typescript typescript 为 javaScript的超集,这意味着它支持所有都JavaScript都语法.它很像JavaScript都强类 ...

  4. JAVA-SpringMVC 概述及组件介绍

    一.SpringMVC概述 SpringMVC是一个WEB层.控制层框架,主要用来负责与客户端交互,业务逻辑的调用. SpringMVC是Spring家族中的一大组件,Spring整合SpringMV ...

  5. 使用PIP键盘输入数字小数位--Smart LCD

    应用范例: 使用TOPWAY Smart LCD (HMT050CC-C) 使用PIP键盘输入数字小数位 第一步 建立工程 第二步 建立三个页面,导入图片 点击工作区域, 右面显示页面属性 属性中Ba ...

  6. 01-WIN2012R2+SQL2016故障转移群集的搭建

    一.前期准备  1.1.准备4台机器 机器名 IP 功能 jf-yukong 192.168.10.200 做域控服务器 Jf-storage 192.168.10.201 做ISCSI存储服务器 J ...

  7. 腾讯PCG(后台开发) 牛客网视频面试 一面

    腾讯视频面试 作为一个小渣渣记录一下,腾讯是我一直想进的公司,但其实准备的时间不是很长,也不是科班还是存在很大的劣势,记录一下找工作的经历. 首先说一下,这是我第一次视频面试,还是蛮紧张的.不过面试官 ...

  8. Python RPC 之 gRPC

    gRPC 简介: gRPC 是一款高性能.开源的 RPC 框架,产自 Google,基于 ProtoBuf 序列化协议进行开发,支持多种语言(Golang.Python.Java等),本篇只介绍 Py ...

  9. 建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统

    我们的思路是每天下班后团队各成员在指定的时间(例如下午18:30)之前把各自的代码上传到SVN,然后服务器在指定的时间(例如下午18:30)更新代码.执行ant 打包命令.最后将apk包存放在指定目录 ...

  10. NLP系列文章:子词嵌入(fastText)的理解!(附代码)

    1. 什么是fastText 英语单词通常有其内部结构和形成⽅式.例如,我们可以从"dog""dogs"和"dogcatcher"的字⾯上推 ...