文档章节

逆向破解之160个CrackMe —— 001

o
 osc_xmvqghwh
发布于 07/14 08:55
字数 1076
阅读 28
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

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 发现注册码,制作内存注册机,运行得到注册码

 

o
粉丝 0
博文 79
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
5.9K
18
Javascript图元绘制库--ternlight

基于HTML CANVAS API的Javascript库,提供在HTML页面上绘制图元——如流程图的能力。 目前已支持简单的矩形图元和图元间的连线(直线、直角连线两种),拖拽图元等能力。 该javascript librar...

fancimage1
2013/02/07
6.2K
1
实时分析系统--istatd

istatd是IMVU公司工程师开发的一款优秀的实时分析系统,能够有效地收集,存储和搜索各种分析指标,类似cacti,Graphite,Zabbix等系统。实际上,istatd修改了Graphite的存储后端,重新实现了...

匿名
2013/02/07
2.8K
1
图形化的 IDE--LiveCode

LiveCode是一个图形化的IDE,允许用户通过拖放控件并编写代码,来创建桌面或移动应用程序(支持Windows、Mac OS、Linux、iOS和Android平台)。LiveCode受苹果HyperCard的启发,采用一种基于英...

匿名
2013/04/12
7.1K
0
diff程序--dwdiff

dwdiff是一个diff程序,运行在单词级别而不是行级别。它不同于wdiff,它允许用户指定应该考虑空白,它需要一个可选的字符列表,应该被视为 分隔符。分隔符是单字符被当作有话说,即使没有空格分开...

匿名
2012/11/04
535
0

没有更多内容

加载失败,请刷新页面

加载更多

Java中使用OpenSSL生成的RSA公私钥进行数据加解密

当前使用的是Linux系统,已经按装使用OpenSSL软件包, 一、使用OpenSSL来生成私钥和公钥 1、执行命令openssl version -a 验证机器上已经安装openssl openssl version -a 运行结果: 2、生成...

osc_1psr53ow
13分钟前
0
0
计算机毕业设计之springboot+vue.js点餐小程序 点餐系统

功能 后台: 1. 超级管理员(具有该系统所有权限)登录 查看系统所有管理员 操作:可新添加管理员并分配系统已有角色; 可对已有管理员进行信息编辑; 可对除超管外的其他管理员账号禁用/启用...

osc_x4ot1joy
14分钟前
0
0
MATLAB数学建模

链接:https://pan.baidu.com/s/1WA2ltwyMZuKeo7OC9XAIvw 提取码:tmy2 记录matlab参加建模比赛时所用的书籍,避免忘记 链接:https://pan.baidu.com/s/1WA2ltwyMZuKeo7OC9XAIvw 提取码:tmy...

osc_oa6qrgun
15分钟前
6
0
Python中可以使用静态类变量吗? - Are static class variables possible in Python?

问题: Is it possible to have static class variables or methods in Python? Python中是否可以有静态类变量或方法? What syntax is required to do this? 为此需要什么语法? 解决方案:...

技术盛宴
46分钟前
17
0
如何在Android中以像素为单位获取屏幕尺寸 - How to get screen dimensions as pixels in Android

问题: I created some custom elements, and I want to programmatically place them to the upper right corner ( n pixels from the top edge and m pixels from the right edge). 我创建......

javail
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部