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. 封装 Gson 解析Json到对象是否失败

    在使用Google的 Gson 类库解析 Json 数据时,难免会出现解析失败的情况. 在这种情况下,使用 if(obj == null) 是不可行的,fromJson 方法会自动生成对象的实例,所以 ...

  2. android ——可折叠式标题栏

    CollapsingToolbarLayout是一个作用于Toolbar上的布局,可以让Toolbar的效果变得更加丰富: 但是CollapsingToolbarLayout是不能独立存在的,它这能作 ...

  3. Logback配置文件这么写,TPS提高10倍

    通过阅读本篇文章将了解到 1.日志输出到文件并根据LEVEL级别将日志分类保存到不同文件 2.通过异步输出日志减少磁盘IO提高性能 3.异步输出日志的原理 配置文件logback-spring.xml ...

  4. intellIJ IDEA学习笔记

    如果你初次用idea,毫无目的的度娘如何使用IDEA     浪费的将会是大量的时间.为以表诚意, 上一套IDEA教学视频,以表我诚意.(下载地址:https://pan.baidu.com/s/1g ...

  5. java集合类的相关转换

    下面的的案例,基本上是以代码为主,文字的描述较少,后期有时间会继续添加. ArrayToList public void ArrayToList() { System.out.println(&quo ...

  6. python小白手册之远程链接转换

    访问顺序补充

  7. js作用域链和预编译

    js引擎运行分为两步,预解析 代码执行 (1)预解析: js引擎会拿js里面所有的var还有 function 提升到当前作用域的最前面 (2)代码执行:按照代码书写的顺序从上往下执行 预解析分为:变 ...

  8. 为什么操作DOM会影响WEB应用的性能?

    面试官经常会问你:"平时工作中,你怎么优化自己应用的性能?" 你回答如下:"我平时遵循以下几条原则来优化我的项目.以提高性能,主要有:" a. 减少DOM操作的 ...

  9. 浏览器兼容问题-vue.js

    前端时间和其他公司人合作,认识了vue.起初我们做手机端一般用这个技术.后来发现在web也可以使用. 然后自己摸索了下,发现这个技术对于数据的绑定果真很神奇,所在在一些绑定数据比较多,比较零散的画面时 ...

  10. python 07 数据类型

    目录 1. 基础数据类型填充 1.str:(不可变) 2. list: 3. tuple: 4. dict: 5. set: 6. bool: 7. 数据类型之间转换 2.删除列表/字典的代码坑: 3 ...