CrackMe —— 031

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

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

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

来源 <-点击查看

编号 作者 保护方式
030 cracking4all Serial(VB5)

工具

x32dbg

VB Decompiler Pro

开始破解之旅

ON.1

爆破方式

使用x32dbg打开031号程序,右键搜索字符串

此时我们看见了正确提示字符提示信息和错误字符提示信息,进入正确提示信息地址为00403005,双击进入该地址,向上翻看

00402FAE | C785 28FFFFFF    | mov dword ptr ss:[ebp-D8],          |
00402FB8 | FF15 4C614000 | call dword ptr ds:[<&__vbaVarTstEq>] |
00402FBE | :85C0 | test ax,ax |
00402FC1 | 0F84 8F000000 | je cracking4all.. | 此处跳转,为验证输入密码
00402FC7 | B8 | mov eax, |
00402FCC | 8D95 18FFFFFF | lea edx,dword ptr ss:[ebp-E8] | edx:EntryPoint
00402FD2 | 8D4D | lea ecx,dword ptr ss:[ebp-] |
00402FD5 | 70FFFFFF | mov dword ptr ss:[ebp-],eax |
00402FDB | 899D 68FFFFFF | mov dword ptr ss:[ebp-],ebx |
00402FE1 | | mov dword ptr ss:[ebp-],eax |
00402FE4 | 899D 78FFFFFF | mov dword ptr ss:[ebp-],ebx |
00402FEA | C785 20FFFFFF | mov dword ptr ss:[ebp-E0],cracking4all. | :L"Valid"
00402FF4 | 89BD 18FFFFFF | mov dword ptr ss:[ebp-E8],edi |
00402FFA | FFD6 | call esi |
00402FFC | 8D95 28FFFFFF | lea edx,dword ptr ss:[ebp-D8] | edx:EntryPoint
| 8D4D | lea ecx,dword ptr ss:[ebp-] |
| C785 30FFFFFF 2C264000 | mov dword ptr ss:[ebp-D0],cracking4all. | 40262C:L"Password correct, hehe, :-)"
0040300F | 89BD 28FFFFFF | mov dword ptr ss:[ebp-D8],edi |

此时我们看到00402FC1处有一处跳转,在上方00402FB8处调用匹配函数,验证是否相等,此处跳转为密码验证跳转,将其修改为NOP我们测试一下

bingo ~ 破解成功

ON.2

追码方式

使用VB Decompiler Pro打开031号程序,我们在左侧选中Code -> password -> Command1_Click,右侧及显示反汇编的代码

我们可以看出该函数会获取我们输入的长度,同时循环将每个字符的ASCII码与ecx进行异或运算,最后与“VeiajeEjbavwij”进行对比

那么ecx是谁呢,我们通过x32dbg可以看出为字符串“"循环,每次读取一位,循环读取,同030号程序一样

那么下面的异或4是哪里来的呢,我们可以看到00402D02处把4压栈

以下是PASSWORD计算代码

00402C5F | 0F8F EF000000            | jg cracking4all..402D54                |
00402C65 | 0FBFD0 | movsx edx,ax |
00402C68 | 8D4D | lea ecx,dword ptr ss:[ebp-] |
00402C6B | 8D45 D8 | lea eax,dword ptr ss:[ebp-] |
00402C6E | | push ecx |
00402C6F | | push edx |
00402C70 | 8D4D | lea ecx,dword ptr ss:[ebp-] |
00402C73 | | push eax |
00402C74 | | push ecx |
00402C75 | C745 A0 | mov dword ptr ss:[ebp-], |
00402C7C | C745 | mov dword ptr ss:[ebp-], |
00402C83 | FFD3 | call ebx |
00402C85 | 8D95 78FFFFFF | lea edx,dword ptr ss:[ebp-] |
00402C8B | 6A | push |
00402C8D | 8D85 68FFFFFF | lea eax,dword ptr ss:[ebp-] |
00402C93 | | push edx |
00402C94 | | push eax |
00402C95 | C745 | mov dword ptr ss:[ebp-], |
00402C9C | C785 78FFFFFF | mov dword ptr ss:[ebp-], |
00402CA6 | FF15 AC614000 | call dword ptr ds:[<&rtcLeftCharVar>] |
00402CAC | 8D8D 68FFFFFF | lea ecx,dword ptr ss:[ebp-] |
00402CB2 | 8D55 AC | lea edx,dword ptr ss:[ebp-] |
00402CB5 | | push ecx |
00402CB6 | | push edx |
00402CB7 | FFD7 | call edi |
00402CB9 | | push eax |
00402CBA | FFD6 | call esi |
00402CBC | 0FBFD8 | movsx ebx,ax |
00402CBF | 8D45 | lea eax,dword ptr ss:[ebp-] |
00402CC2 | 8D4D B0 | lea ecx,dword ptr ss:[ebp-] |
00402CC5 | | push eax |
00402CC6 | | push ecx |
00402CC7 | FFD7 | call edi |
00402CC9 | | push eax |
00402CCA | FFD6 | call esi |
00402CCC | 0FBFD0 | movsx edx,ax |
00402CCF | 33DA | xor ebx,edx |
00402CD1 | 8D85 58FFFFFF | lea eax,dword ptr ss:[ebp-A8] |
00402CD7 | | push ebx |
00402CD8 | | push eax |
00402CD9 | FF15 6C614000 | call dword ptr ds:[<&rtcVarBstrFromAnsi |
00402CDF | 8D4D C8 | lea ecx,dword ptr ss:[ebp-] |
00402CE2 | 8D95 58FFFFFF | lea edx,dword ptr ss:[ebp-A8] |
00402CE8 | | push ecx |
00402CE9 | 8D85 48FFFFFF | lea eax,dword ptr ss:[ebp-B8] |
00402CEF | | push edx |
00402CF0 | | push eax |
00402CF1 | FF15 | call dword ptr ds:[<&__vbaVarCat>] |
00402CF7 | 8BD0 | mov edx,eax |
00402CF9 | 8D4D C8 | lea ecx,dword ptr ss:[ebp-] |
00402CFC | FF15 | call dword ptr ds:[<&__vbaVarMove>] |
00402D02 | 8D4D AC | lea ecx,dword ptr ss:[ebp-] |
00402D05 | 8D55 B0 | lea edx,dword ptr ss:[ebp-] |
00402D08 | | push ecx |
00402D09 | | push edx |
00402D0A | 6A | push |
00402D0C | FF15 | call dword ptr ds:[<&__vbaFreeStrList>] |
00402D12 | 83C4 0C | add esp,C |
00402D15 | 8D85 58FFFFFF | lea eax,dword ptr ss:[ebp-A8] |
00402D1B | 8D8D 68FFFFFF | lea ecx,dword ptr ss:[ebp-] |
00402D21 | 8D95 78FFFFFF | lea edx,dword ptr ss:[ebp-] |
00402D27 | | push eax |
00402D28 | | push ecx |
00402D29 | 8D45 | lea eax,dword ptr ss:[ebp-] |
00402D2C | | push edx |
00402D2D | 8D4D | lea ecx,dword ptr ss:[ebp-] |
00402D30 | | push eax |
00402D31 | | push ecx |
00402D32 | 6A | push |
00402D34 | FF15 | call dword ptr ds:[<&__vbaFreeVarList>] |
00402D3A | B8 | mov eax, |
00402D3F | 83C4 | add esp, |
00402D42 | : C4 | add ax,word ptr ss:[ebp-3C] |
00402D46 | 0F80 A0030000 | jo cracking4all..4030EC |
00402D4C | C4 | mov dword ptr ss:[ebp-3C],eax |
00402D4F | E9 FEFEFFFF | jmp cracking4all..402C52 |

Python代码

dst_pwd = 'VeiajeEjbavwij'
src_pwd = ''
for k, v in enumerate(dst_pwd):
src_pwd = src_pwd + chr((ord(v) ^ ord(''[k % 4])) ^ ord(''))
print(src_pwd)

结果为“PamelaAnderson”,带入到程序内

逆向破解之160个CrackMe —— 031的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. ASP.NET Core MVC 中的 Model 模型

    ASP.NET Core MVC 中的 Model 我们希望最终从 Student 数据库表中查询特定的学生详细信息并显示在网页上,如下所示. MVC 中的模型包含一组表示数据的类和管理该数据的逻辑. ...

  2. [LeetCode] 889. Construct Binary Tree from Preorder and Postorder Traversal 由先序和后序遍历建立二叉树

    Return any binary tree that matches the given preorder and postorder traversals. Values in the trave ...

  3. Windows10 WSL下 龙芯3A 交叉编译环境搭建

    记个流水账避免事后忘记怎么搭建的 - - 环境 Key Value 系统 Windows10 WSL系统 Ubuntu 下载工具链 http://www.loongnix.org/index.php/ ...

  4. LeetCode 75. Sort Colors (颜色分类):三路快排

    Given an array with n objects colored red, white or blue, sort them in-place so that objects of the ...

  5. ApartmentState.STA

    需要设置子线程 ApartmentState 为 STA 模式,但 Task 又不能直接设置 ApartmentState,因此需要用 Thread 来封装一下. using System.Threa ...

  6. 通过IP获取MAC地址例子(应用层)

    博客地址:http://home.cnblogs.com/u/zengjianrong/ 由于某种需求,需要获取某个ip的mac地址,在应用层实现例子如下代码. 流程:1. 先遍历arp表,若存在对应 ...

  7. https的原理入门

    现在基本上互联网上访问的地址都是使用HTTPS协议了,只有局域网才会使用HTTP协议,因此了解HTTPS十分重要. HTTP存在的问题 上过网的朋友都知道,网络是非常不安全的.尤其是公共场所有很多免费 ...

  8. Eclipse/Idea 代码格式化部分忽略

    有时候我们写一些代码的时候,格式化后,会使代码格式变得不美观.不易读,这里在看一些源码的时候发现有这么一种操作,随手记下 效果 那个代码像以下这样,@formatter:off开启关闭格式化,@for ...

  9. 大数据基础总结---HDFS分布式文件系统

    HDFS分布式文件系统 文件系统的基本概述 文件系统定义:文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易. 文件名:在文件系统中,文件名是用于定位存储位置. 元数据(Metad ...

  10. Spring aop的一些小知识点总结

    1 Spring的aop无法拦截静态方法 2 在 proxyTargetClass = false时 对于实现了接口的bean,则只有接口中的方法会被拦截: 对于没有实现任何接口的bean,publi ...