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

    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

    00403319 | 66:03C7                  | add ax,di                                               |
    0040331C | 0F80 44020000            | jo cracking4all.1.403566                                |  此处向下跳转到错误提示处,验证输入格式
    00403322 | 0F80 3E020000            | jo cracking4all.1.403566                                |  此处向下跳转到错误提示处,验证输入格式
    00403328 | 8BF8                     | mov edi,eax                                             |
    0040332A | E9 C0FEFFFF              | jmp cracking4all.1.4031EF                               |
    0040332F | 8D45 C8                  | lea eax,dword ptr ss:[ebp-0x38]                         |
    00403332 | 8D8D 38FFFFFF            | lea ecx,dword ptr ss:[ebp-0xC8]                         |
    00403338 | 50                       | push eax                                                |
    00403339 | 51                       | push ecx                                                |
    0040333A | C785 40FFFFFF C8274000   | mov dword ptr ss:[ebp-0xC0],cracking4all.1.4027C8       | [ebp-C0]:L"à", 4027C8:L"qBQSYdXUe_B\V"
    00403344 | C785 38FFFFFF 08800000   | mov dword ptr ss:[ebp-0xC8],0x8008                      |
    0040334E | FF15 44614000            | call dword ptr ds:[<&__vbaVarTstEq>]                    |
    00403354 | 66:85C0                  | test ax,ax                                              |
    00403357 | B9 04000280              | mov ecx,0x80020004                                      |
    0040335C | B8 0A000000              | mov eax,0xA                                             | A:'
    '
    00403361 | 894D 80                  | mov dword ptr ss:[ebp-0x80],ecx                         |
    00403364 | 8985 78FFFFFF            | mov dword ptr ss:[ebp-0x88],eax                         |
    0040336A | 894D 90                  | mov dword ptr ss:[ebp-0x70],ecx                         | [ebp-70]:""
    0040336D | 8945 88                  | mov dword ptr ss:[ebp-0x78],eax                         |
    00403370 | 0F84 E8000000            | je cracking4all.1.40345E                                |  此处向下跳转到错误处,验证输入Passowrd是否正确
    00403376 | 8B35 9C614000            | mov esi,dword ptr ds:[<&__vbaVarDup>]                   |
    0040337C | BF 08000000              | mov edi,0x8                                             |
    00403381 | 8D95 28FFFFFF            | lea edx,dword ptr ss:[ebp-0xD8]                         |
    00403387 | 8D4D 98                  | lea ecx,dword ptr ss:[ebp-0x68]                         |
    0040338A | C785 30FFFFFF 24284000   | mov dword ptr ss:[ebp-0xD0],cracking4all.1.402824       | 402824:L"Valid"
    00403394 | 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.1.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 88                  | lea eax,dword ptr ss:[ebp-0x78]                         |
    004033C0 | 52                       | push edx                                                |
    004033C1 | 8D4D 98                  | lea ecx,dword ptr ss:[ebp-0x68]                         |
    004033C4 | 50                       | push eax                                                |

    我们看到有三处跳转跳转到了错误提示信息处,将这三处跳转修改为NOP,地址为0040331C0040332200403370,F9运行

         

    bingo~ 爆破成功

    ON.2

    追码方式

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

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

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

    00403271 | FFD3                     | call ebx                                                |
    00403273 | 50                       | push eax                                                |
    00403274 | FF15 0C614000            | call dword ptr ds:[<&rtcAnsiValueBstr>]                 |
    0040327A | 0FBFD0                   | movsx edx,ax                                            |
    0040327D | 8D8D 68FFFFFF            | lea ecx,dword ptr ss:[ebp-0x98]                         |
    00403283 | 8D45 BC                  | lea eax,dword ptr ss:[ebp-0x44]                         |
    00403286 | 51                       | push ecx                                                |
    00403287 | 50                       | push eax                                                |
    00403288 | 8995 E8FEFFFF            | mov dword ptr ss:[ebp-0x118],edx                        |
    0040328E | FFD3                     | call ebx                                                |
    00403290 | 50                       | push eax                                                |
    00403291 | FF15 0C614000            | call dword ptr ds:[<&rtcAnsiValueBstr>]                 | 
    00403297 | 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('2000'[k % 4]))
    print(password)

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

     

    bingo~ 破解成功

  • 相关阅读:
    eclipse中的Invalid text string (xxx).
    在jsp文件中出现Unknown tag (c:out)
    eclipse 界面复原
    ecilpse 纠错插件
    Multiple annotations found at this line:- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Port 8080 required by Tomcat v9.0 Server at localhost is already in use. The server may already be running in another process, or a system process may be using the port.
    调用第三方https接口
    调用第三方http接口
    创建带值枚举
    spring整合redis之Redis配置文件
  • 原文地址:https://www.cnblogs.com/lonenysky/p/11498516.html
Copyright © 2011-2022 走看看