• 逆向破解之160个CrackMe —— 001


    CrackMe —— 001

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

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

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

    来源 <-点击查看

    编号 作者 保护方式
    001 Acid burn Nag Name/Serial,Serial

    工具 

    x32dbg

    KeyMake

    开始破解之旅

    ON.1

    使用x32dbg打开001号程序

    我们来到了入口点,如果打开后发现程序直接运行,在选项->选项->事件处勾选 入口断点 即可在程序入口处暂停

     

    ON.2

    F9运行,或者点击菜单栏 调试->运行 程序运行出现

    程序分为两部分Serial/Name 和 Serial

    爆破方式破解

    Serial/Name

    在输入框内输入任意数据,点击Check it Baby! 弹出窗口

    在x32dbg里右键 搜索->当前模块->字符串 先会显示在当前搜索到的字符串

    找到 Sorry, The serial is incorect! 

    找到两处

    地址=0042FA63
    反汇编=mov edx,acid burn.42FB80
    字符串="Sorry , The serial is incorect !"
    
    地址=0042FB26
    反汇编=mov edx,acid burn.42FB80
    字符串="Sorry , The serial is incorect !"
    

     插入代码里竟然没有汇编的选项!!!

     分别点进去查看两处代码 

    地址=0042FA63

    0042FA52 | E8 D96EFDFF              | call acid burn.406930                   |
    0042FA57 | 83F8 04                  | cmp eax,0x4                             |
    0042FA5A | 7D 1D                    | jge acid burn.42FA79                    |
    0042FA5C | 6A 00                    | push 0x0                                |
    0042FA5E | B9 74FB4200              | mov ecx,acid burn.42FB74                | 42FB74:"Try Again!"
    0042FA63 | BA 80FB4200              | mov edx,acid burn.42FB80                | 42FB80:"Sorry , The serial is incorect !"
    0042FA68 | A1 480A4300              | mov eax,dword ptr ds:[0x430A48]         |
    0042FA6D | 8B00                     | mov eax,dword ptr ds:[eax]              |
    0042FA6F | E8 FCA6FFFF              | call acid burn.42A170                   |
    0042FA74 | E9 BE000000              | jmp acid burn.42FB37                    |
    0042FA79 | 8D55 F0                  | lea edx,dword ptr ss:[ebp-0x10]         |
    0042FA7C | 8B83 DC010000            | mov eax,dword ptr ds:[ebx+0x1DC]        |

    0042FA5A 处有跳转,指向弹出错误提示框 修改为JMP

     

    地址=0042FB26

    0042FAF8 | 8B55 F0                  | mov edx,dword ptr ss:[ebp-0x10]         |
    0042FAFB | 8B45 F4                  | mov eax,dword ptr ss:[ebp-0xC]          |
    0042FAFE | E8 F93EFDFF              | call <acid burn.sub_4039FC>             |
    0042FB03 | 75 1A                    | jne acid burn.42FB1F                    |
    0042FB05 | 6A 00                    | push 0x0                                |
    0042FB07 | B9 CCFB4200              | mov ecx,acid burn.42FBCC                | 42FBCC:"Congratz !!"
    0042FB0C | BA D8FB4200              | mov edx,acid burn.42FBD8                | 42FBD8:"Good job dude =)"
    0042FB11 | A1 480A4300              | mov eax,dword ptr ds:[0x430A48]         |
    0042FB16 | 8B00                     | mov eax,dword ptr ds:[eax]              |
    0042FB18 | E8 53A6FFFF              | call acid burn.42A170                   |
    0042FB1D | EB 18                    | jmp acid burn.42FB37                    |
    0042FB1F | 6A 00                    | push 0x0                                |
    0042FB21 | B9 74FB4200              | mov ecx,acid burn.42FB74                | 42FB74:"Try Again!"
    0042FB26 | BA 80FB4200              | mov edx,acid burn.42FB80                | 42FB80:"Sorry , The serial is incorect !"
    0042FB2B | A1 480A4300              | mov eax,dword ptr ds:[0x430A48]         |
    0042FB30 | 8B00                     | mov eax,dword ptr ds:[eax]              |
    0042FB32 | E8 39A6FFFF              | call acid burn.42A170                   |
    0042FB37 | 33C0                     | xor eax,eax                             |
    0042FB39 | 5A                       | pop edx                                 |
    0042FB3A | 59                       | pop ecx                                 |
    0042FB3B | 59                       | pop ecx                                 |
    

     通过查看发现 0042FB26 处有字符串 “Good job dude =)” 猜测可能是正确执行流程

     查看该出汇编代码发现0042FB03处有跳转,修改跳转为NOP

    运行程序

    破解成功

    Serial

    搜索字符串“Try Agent” 在每个地址下断点,点击Check it Baby!

    发现断点于 0042F4F8 在该地址向上翻最近跳转处设置断点单步F8 

    经过两个call是发现寄存器处显示字符,疑似密码,继续单步向下

    发现寄存器出现之前call处显示的字符串拼接到了一起和我们输入框输入的数据,下一条指令为判断跳转,此处call为输入框判断对比函数

    在输入框内输入Hello Dude!

    密码正确,此处可用爆破方式 jne 42F41F 修改 NOP,运行

     bingo! 破解成功

    内存补丁方式

     单步F8,在地址 42F4D0 处看到寄存器存在Key

    打开KeyMake 点击其他->内存注册机->添加

     

    中断地址:对应的内存地址

    中断次数:设置1次,是第一次运行到指定地址时中断并追码,设置2次,是第二次运行到指定地址时中断并追码

    第一字节:原始指令

    指令长度:两个字母或数字代表一个指令长度E82745FDFF代表5个指令长度

    点击添加->生成->打开程序运行->点击按钮出现注册码

     同理 0042FAFE 发现注册码,制作内存注册机,运行得到注册码

  • 相关阅读:
    C#中正则表达式的分组构造
    CompressionModule压缩模块
    BS程序代码与安全与基本攻击/防御模式
    mssql 性能优化的一些认识
    sql语句基础
    利用.net2.0中的GZip或Deflate压缩文件
    一个完整的ID生成器,并极大地降低了并发重复的概率,转换成十六进制 时间戳
    IE中的条件注释表
    DevExpress的10个使用技巧
    几种检查调试CSS布局的有效方法
  • 原文地址:https://www.cnblogs.com/lonenysky/p/11322353.html
Copyright © 2020-2023  润新知