zoukankan      html  css  js  c++  java
  • 逆向破解之160个CrackMe —— 031

    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 08800000   | mov dword ptr ss:[ebp-D8],8008          |
    00402FB8 | FF15 4C614000            | call dword ptr ds:[<&__vbaVarTstEq>]    |
    00402FBE | 66:85C0                  | test ax,ax                              |
    00402FC1 | 0F84 8F000000            | je cracking4all.2.403056                | 此处跳转,为验证输入密码
    00402FC7 | B8 04000280              | mov eax,80020004                        |
    00402FCC | 8D95 18FFFFFF            | lea edx,dword ptr ss:[ebp-E8]           | edx:EntryPoint
    00402FD2 | 8D4D 88                  | lea ecx,dword ptr ss:[ebp-78]           |
    00402FD5 | 8985 70FFFFFF            | mov dword ptr ss:[ebp-90],eax           |
    00402FDB | 899D 68FFFFFF            | mov dword ptr ss:[ebp-98],ebx           |
    00402FE1 | 8945 80                  | mov dword ptr ss:[ebp-80],eax           |
    00402FE4 | 899D 78FFFFFF            | mov dword ptr ss:[ebp-88],ebx           |
    00402FEA | C785 20FFFFFF 68264000   | mov dword ptr ss:[ebp-E0],cracking4all. | 402668: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
    00403002 | 8D4D 98                  | lea ecx,dword ptr ss:[ebp-68]           |
    00403005 | 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可以看出为字符串“2000"循环,每次读取一位,循环读取,同030号程序一样

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

    以下是PASSWORD计算代码

    00402C5F | 0F8F EF000000            | jg cracking4all.2.402D54                |
    00402C65 | 0FBFD0                   | movsx edx,ax                            |
    00402C68 | 8D4D 98                  | lea ecx,dword ptr ss:[ebp-68]           |
    00402C6B | 8D45 D8                  | lea eax,dword ptr ss:[ebp-28]           |
    00402C6E | 51                       | push ecx                                |
    00402C6F | 52                       | push edx                                |
    00402C70 | 8D4D 88                  | lea ecx,dword ptr ss:[ebp-78]           |
    00402C73 | 50                       | push eax                                |
    00402C74 | 51                       | push ecx                                |
    00402C75 | C745 A0 01000000         | mov dword ptr ss:[ebp-60],1             |
    00402C7C | C745 98 02000000         | mov dword ptr ss:[ebp-68],2             |
    00402C83 | FFD3                     | call ebx                                |
    00402C85 | 8D95 78FFFFFF            | lea edx,dword ptr ss:[ebp-88]           |
    00402C8B | 6A 01                    | push 1                                  |
    00402C8D | 8D85 68FFFFFF            | lea eax,dword ptr ss:[ebp-98]           |
    00402C93 | 52                       | push edx                                |
    00402C94 | 50                       | push eax                                |
    00402C95 | C745 80 04000000         | mov dword ptr ss:[ebp-80],4             |
    00402C9C | C785 78FFFFFF 02000000   | mov dword ptr ss:[ebp-88],2             |
    00402CA6 | FF15 AC614000            | call dword ptr ds:[<&rtcLeftCharVar>]   |
    00402CAC | 8D8D 68FFFFFF            | lea ecx,dword ptr ss:[ebp-98]           |
    00402CB2 | 8D55 AC                  | lea edx,dword ptr ss:[ebp-54]           |
    00402CB5 | 51                       | push ecx                                |
    00402CB6 | 52                       | push edx                                |
    00402CB7 | FFD7                     | call edi                                |
    00402CB9 | 50                       | push eax                                |
    00402CBA | FFD6                     | call esi                                |
    00402CBC | 0FBFD8                   | movsx ebx,ax                            |
    00402CBF | 8D45 88                  | lea eax,dword ptr ss:[ebp-78]           |
    00402CC2 | 8D4D B0                  | lea ecx,dword ptr ss:[ebp-50]           |
    00402CC5 | 50                       | push eax                                |
    00402CC6 | 51                       | push ecx                                |
    00402CC7 | FFD7                     | call edi                                |
    00402CC9 | 50                       | 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 | 53                       | push ebx                                |
    00402CD8 | 50                       | push eax                                |
    00402CD9 | FF15 6C614000            | call dword ptr ds:[<&rtcVarBstrFromAnsi |
    00402CDF | 8D4D C8                  | lea ecx,dword ptr ss:[ebp-38]           |
    00402CE2 | 8D95 58FFFFFF            | lea edx,dword ptr ss:[ebp-A8]           |
    00402CE8 | 51                       | push ecx                                |
    00402CE9 | 8D85 48FFFFFF            | lea eax,dword ptr ss:[ebp-B8]           |
    00402CEF | 52                       | push edx                                |
    00402CF0 | 50                       | push eax                                |
    00402CF1 | FF15 78614000            | call dword ptr ds:[<&__vbaVarCat>]      |
    00402CF7 | 8BD0                     | mov edx,eax                             |
    00402CF9 | 8D4D C8                  | lea ecx,dword ptr ss:[ebp-38]           |
    00402CFC | FF15 00614000            | call dword ptr ds:[<&__vbaVarMove>]     |
    00402D02 | 8D4D AC                  | lea ecx,dword ptr ss:[ebp-54]           |
    00402D05 | 8D55 B0                  | lea edx,dword ptr ss:[ebp-50]           |
    00402D08 | 51                       | push ecx                                |
    00402D09 | 52                       | push edx                                |
    00402D0A | 6A 02                    | push 2                                  |
    00402D0C | FF15 94614000            | 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-98]           |
    00402D21 | 8D95 78FFFFFF            | lea edx,dword ptr ss:[ebp-88]           |
    00402D27 | 50                       | push eax                                |
    00402D28 | 51                       | push ecx                                |
    00402D29 | 8D45 88                  | lea eax,dword ptr ss:[ebp-78]           |
    00402D2C | 52                       | push edx                                |
    00402D2D | 8D4D 98                  | lea ecx,dword ptr ss:[ebp-68]           |
    00402D30 | 50                       | push eax                                |
    00402D31 | 51                       | push ecx                                |
    00402D32 | 6A 05                    | push 5                                  |
    00402D34 | FF15 08614000            | call dword ptr ds:[<&__vbaFreeVarList>] |
    00402D3A | B8 01000000              | mov eax,1                               |
    00402D3F | 83C4 18                  | add esp,18                              |
    00402D42 | 66:0345 C4               | add ax,word ptr ss:[ebp-3C]             |
    00402D46 | 0F80 A0030000            | jo cracking4all.2.4030EC                |
    00402D4C | 8945 C4                  | mov dword ptr ss:[ebp-3C],eax           |
    00402D4F | E9 FEFEFFFF              | jmp cracking4all.2.402C52               |

    Python代码

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

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

  • 相关阅读:
    Java 集合(静态导入)
    Java 集合 (Collections、Arrays)
    Java 异常
    Java 多态
    Java 继承

    内网服务器配置访问公网
    替换centos的原生yum源为阿里云yum源
    centos7安装杀毒软件ClamAV
    linux程序名称带devel跟不带的区别
  • 原文地址:https://www.cnblogs.com/lonenysky/p/11531175.html
Copyright © 2011-2022 走看看