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. PATA1075 PAT Judge (25 分)

    The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...

  2. [LeetCode] 393. UTF-8 Validation 编码验证

    A character in UTF8 can be from 1 to 4 bytes long, subjected to the following rules: For 1-byte char ...

  3. thinkphp5.1 - twig模板-全局变量

    thinkphp5.1 - twig模板-全局变量我们在定义 ccs 之类的静态文件的时候,经常会使用<link rel="stylesheet" href="__ ...

  4. Ubuntu安装微信、钉钉等各种windows软件

    详见这个博客,用sudo dpkg -i 安装软件时,如果出现错误,是因为缺少安装依赖关系,用下面的命令解决: sudo apt-get install -f

  5. 第三次实验报告:使用Packet Tracer分析TCP连接建立过程

    目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 3.2 配置参数 3.3 抓包,分析TCP连接建立过程 4. 拓展 (不作要求,但属于加分项) 1 实验目的 使用路由器连接 ...

  6. HTML连载30-CSS显示模式&模式转换

    一.CSS显示模式​ 1.在HTML中HTML将所有的标签分为两类,分别是容器类和文本级.在CSS中CSS也将所有的标签分为两类,分别是块级元素和行内元素 2.什么是块级元素呢?什么是行内元素​? ( ...

  7. HTTP之URL的快捷方式

    URL快捷方式 ==================摘自<HTTP权威指南>======================= WEB客户端可以理解并使用几种URL快捷方式.相对URL是在某职 ...

  8. 《Game Programming Patterns》游戏设计模式

    转载自:https://blog.csdn.net/poem_qianmo/article/details/52505170 https://blog.csdn.net/poem_qianmo/art ...

  9. sql server报【从varchar数据类型到datetime数据类型的转换产生一个超出范围的值】错误的解决办法

    产生这个错误的原因是在使用convert函数将给定的日期字符串转换为日期类型的时候,因为datetime这个数据类型有时间数值的范围限定,当超出时间范围时就抛出这个错误. 如果类型是[datetime ...

  10. python3.7环境安装

    wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libffi-devel-3.0.5-3.2.el6.x86_64.rpm rpm ...