逆向破解之160个CrackMe —— 015
CrackMe —— 015
160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序
CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。
| 编号 | 作者 | 保护方式 |
| 015 | blaster99 | Nag,Serial(VB5) |
工具
x32dbg
开始破解之旅
ON.1
首先我们打开程序,发现NAG窗口

我们要想办法先去掉这个窗口
使用x32dbg打开015号程序,右键搜索字符串

我们看到了00402C85这个地址是NAG的提示字符串地址,点击进入该地址
我们向上翻看来到段首处
00402C12 | 5B | pop ebx |
00402C13 | C9 | leave |
00402C14 | C2 | ret |
00402C17 | | push ebp | NAG 段首处
00402C18 | 8BEC | mov ebp,esp |
00402C1A | 83EC 0C | sub esp,C |
00402C1D | | push <JMP.&__vbaExceptHandler> |
我们将00402C17改为ret意思是进入NAG处直接返回,即可跳过NAG
我们将其修改为ret运行
bingo ~程序直接运行,去除NAG窗口成功

ON.2
爆破方式
根据我们之前搜索到的字符串00402A69地址处,该地址是错误字符串地址
004028F5处按照汉意是正确字符串
地址=004028F5
反汇编=mov dword ptr ss:[ebp-],.401E08
字符串=L"Danke, das Passwort ist richtig !" 地址=00402C85
反汇编=mov dword ptr ss:[ebp-7C],.401EF0
字符串=L"Entferne diesen Nag, oder bekomme das richtige Passwort heraus !"
我们双击进入004028F5地址处,向上翻看来到最近的一个跳转出
004028B5 | E8 84E8FFFF | call <JMP.&__vbaHresultCheckObj> |
004028BA | FF75 A8 | push dword ptr ss:[ebp-] |
004028BD | DC1D4000 | push .401DDC | 401DDC:L"2G83G35Hs2"
004028C2 | E8 83E8FFFF | call <JMP.&__vbaStrCmp> |
004028C7 | 8BF8 | mov edi,eax |
004028C9 | 8D4D A8 | lea ecx,dword ptr ss:[ebp-] |
004028CC | F7DF | neg edi |
004028CE | 1BFF | sbb edi,edi |
004028D0 | | inc edi |
004028D1 | F7DF | neg edi |
004028D3 | E8 60E8FFFF | call <JMP.&__vbaFreeStr> |
004028D8 | 8D4D A4 | lea ecx,dword ptr ss:[ebp-5C] |
004028DB | E8 52E8FFFF | call <JMP.&__vbaFreeObj> |
004028E0 | :3BFE | cmp di,si |
004028E3 | 0F84 F3000000 | je .4029DC |
004028E9 | 6A | push |
004028EB | 8D95 74FFFFFF | lea edx,dword ptr ss:[ebp-8C] | edx:EntryPoint
004028F1 | 5E | pop esi |
004028F2 | 8D4D AC | lea ecx,dword ptr ss:[ebp-] |
004028F5 | C785 7CFFFFFF 081E4000 | mov dword ptr ss:[ebp-],.401E08 | 401E08:L"Danke, das Passwort ist richtig !"
004028FF | 89B5 74FFFFFF | mov dword ptr ss:[ebp-8C],esi |
我们将004028E3地址处修改为NOP,在输入框内输入任意数据,点击Registeren按钮
bingo ~破解成功

追码方式
我们继续向上翻看,发现004028BD处有可疑字符串,我们将“2G83G35Hs2”输入到输入框内,点击注册按钮

bingo~ 追码成功
逆向破解之160个CrackMe —— 015的更多相关文章
- 逆向破解之160个CrackMe —— 001
CrackMe —— 001 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 002-003
CrackMe —— 002 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 004-005
CrackMe —— 004 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 013
CrackMe —— 013 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 014
CrackMe —— 014 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 016
CrackMe —— 016 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 017
CrackMe —— 017 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 018
CrackMe —— 018 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 025
CrackMe —— 025 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
随机推荐
- STRING Cytoscape 网络互作图
网络图(Network)看似复杂,其实构成非常简单,网络图是一种图解模型,形状如同网络,故称网络图,由节点(node)和连线(edge)两个因素组成的.其中 node 又分为 source node( ...
- Salesforce 开发整理(六) Visualforce分页
分页的实现总体上分真分页和假分页. 所谓真分页指页面上列出来的数据就是实际查询的数据,假分页则是无论页面上一次显示多少条记录,实际上后台已经加载了所有的记录,分页只是为了展示给用户查看.今天分享一个V ...
- C++ 重写虚函数的代码使用注意点+全部知识点+全部例子实现
h-------------------------- #ifndef VIRTUALFUNCTION_H #define VIRTUALFUNCTION_H /* * 派生类中覆盖虚函数的使用知识点 ...
- exports与module.exports的区别,以及export与export.defult的区别
在 JS 模块化编程的模块引入上, 主要有两种方式: CommonJS 模块标准 ES6 moduel 特性 1. CommonJS 模块引入:require() 模块导出:exports 或者 mo ...
- storm单机运行报错 ERROR backtype.storm.daemon.executor -
单机本地运行storm报错: 错误如下: java.lang.NullPointerException: null at test2.Spot2.nextTuple(Spot2.java:) ~[cl ...
- JavaScript生成一个不重复的ID
/** * 生成一个用不重复的ID */ function GenNonDuplicateID():String{ } 先看看下面的几个方法 1.生成[0,1)的随机数的Math.random,例如 ...
- 在 flutter 上使用 c 代码 - (一) 有源码的项目
在 flutter 的 1.10.x 后的分支, dart:ffi 被并入 flutter, 现在 flutter 中也可以使用 ffi 了. 这东西是啥玩意呢, 就是让 dart 可以直接调用 c/ ...
- Java多线程分批发送消息的小例子
需求: 假设有10万个用户,现在节假日做活动,需要给每个用户发送一条活动短信,为了提高程序的效率,建议使用多线程分批发送. 这里值得注意的是: 每开一个线程都会占用CPU的资源,所以线程根据所需要的条 ...
- Ubuntu系统下容器化部署gitlab
容器化部署gitlab 获取镜像文件 1. 下载镜像文件 docker pull beginor/gitlab-ce:-ce. 2. 创建GitLab 的配置 (etc) . 日志 (log) .数据 ...
- C# MemcacheHelper封装
using Memcached.ClientLibrary; using System; using System.Collections.Generic; using System.Linq; us ...