CrackMe —— 001

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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 CrackMe简称CM。 程序下载地址: 点击我

来源 <-点击查看

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

 

 

 

工具 

x32dbg

KeyMake

开始破解之旅

ON.1

使用x32dbg打开001号程序

逆向破解之160个CrackMe —— 001 Safe 第1张

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

逆向破解之160个CrackMe —— 001 Safe 第2张

 

 

ON.2

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

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

爆破方式破解

Serial/Name

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

逆向破解之160个CrackMe —— 001 Safe 第3张

在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

 逆向破解之160个CrackMe —— 001 Safe 第4张

地址=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

逆向破解之160个CrackMe —— 001 Safe 第5张

运行程序

逆向破解之160个CrackMe —— 001 Safe 第6张

破解成功

Serial

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

逆向破解之160个CrackMe —— 001 Safe 第7张

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

逆向破解之160个CrackMe —— 001 Safe 第8张

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

逆向破解之160个CrackMe —— 001 Safe 第9张

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

在输入框内输入Hello Dude!

逆向破解之160个CrackMe —— 001 Safe 第10张

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

逆向破解之160个CrackMe —— 001 Safe 第11张

 bingo! 破解成功

逆向破解之160个CrackMe —— 001 Safe 第12张

内存补丁方式

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

逆向破解之160个CrackMe —— 001 Safe 第13张

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

 逆向破解之160个CrackMe —— 001 Safe 第14张

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

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

第一字节:原始指令

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

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

逆向破解之160个CrackMe —— 001 Safe 第15张

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

逆向破解之160个CrackMe —— 001 Safe 第16张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄