爆破unabexcm5fl(已补上注册机)
系统 : Windows xp
程序 : unabexcm5fl
程序下载地址 :http://pan.baidu.com/s/1pJYaNUV
要求 : 爆破
使用工具 :OD
可在“PEDIY CrackMe 2007”中查找关于此程序的破文,标题为“菜鸟必看的破解文章(2)-追出软件注册码”。
看上去是个很小的程序所以直接OD载入,对GetDlgItemTextA下断并运行程序,返回用户领空后的汇编指令如下:
0040106C |> \6A push ; /Count = 25 (37.)
0040106E |. push ; |Buffer = unabexcm.00402324
|. 6A push ; |ControlID = 68 (104.)
|. FF75 push dword ptr [ebp+] ; |hWnd
|. E8 F4000000 call <jmp.&USER32.GetDlgItemTextA> ; \GetDlgItemTextA
0040107D |. 6A push ; /pFileSystemNameSize = NULL
0040107F |. 6A push ; |pFileSystemNameBuffer = NULL
|. C8204000 push 004020C8 ; |pFileSystemFlags = unabexcm.004020C8
|. push ; |pMaxFilenameLength = unabexcm.00402190
0040108B |. push ; |pVolumeSerialNumber = unabexcm.00402194
|. 6A push ; |MaxVolumeNameSize = 32 (50.)
|. 5C224000 push 0040225C ; |VolumeNameBuffer = unabexcm.0040225C
|. 6A push ; |RootPathName = NULL
|. E8 B5000000 call <jmp.&KERNEL32.GetVolumeInformat>; \GetVolumeInformationA
0040109E |. F3234000 push 004023F3 ; /StringToAdd = "4562-ABEX"
004010A3 |. 5C224000 push 0040225C ; |ConcatString = "曙?
004010A8 |. E8 call <jmp.&KERNEL32.lstrcatA> ; \lstrcatA
004010AD |. B2 mov dl, ; ↑↑GetVolumeInformation获取磁盘信息
004010AF |> 5C224000>/add dword ptr [40225C], ; 存放卷标的内存每个字节+1
004010B6 |. 5D224000>|add dword ptr [40225D],
004010BD |. 5E224000>|add dword ptr [40225E],
004010C4 |. 5F224000>|add dword ptr [40225F],
004010CB |. FECA |dec dl ; 循环两次
004010CD |.^ E0 \jnz short 004010AF ; ↓‘L2C-5781’+累加处理之后的卷标名就是序列号啦。
004010CF |. FD234000 push 004023FD ; /StringToAdd = "L2C-5781"
004010D4 |. push ; |ConcatString = "L2C-5781曙?
004010D9 |. E8 call <jmp.&KERNEL32.lstrcatA> ; \lstrcatA
004010DE |. 5C224000 push 0040225C ; /StringToAdd = "曙?
004010E3 |. push ; |ConcatString = "L2C-5781曙?
004010E8 |. E8 call <jmp.&KERNEL32.lstrcatA> ; \lstrcatA
004010ED |. push ; /String2 = "fewagweag"
004010F2 |. push ; |String1 = "L2C-5781曙?
004010F7 |. E8 call <jmp.&KERNEL32.lstrcmpiA> ; \lstrcmpiA
004010FC |. 83F8 cmp eax,
004010FF |. je short
|. 6A push ; /Style = MB_OK|MB_APPLMODAL
|. push ; |Title = "Error!"
|. 3B244000 push 0040243B ; |Text = "The serial you entered is not correct!"
0040110D |. FF75 push dword ptr [ebp+] ; |hOwner
|. E8 call <jmp.&USER32.MessageBoxA> ; \MessageBoxA
|. EB jmp short 0040112D
|> 6A push ; /Style = MB_OK|MB_APPLMODAL
|. push ; |Title = "Well Done!"
0040111E |. push ; |Text = "Yep, you entered a correct serial!"
|. FF75 push dword ptr [ebp+] ; |hOwner
|. E8 call <jmp.&USER32.MessageBoxA> ; \MessageBoxA
0040112B |. EB jmp short 0040112D
0040112D |$ 6A push ; /Result = 0
0040112F |. FF75 push dword ptr [ebp+] ; |hWnd
|. E8 call <jmp.&USER32.EndDialog> ; \EndDialog
|. C9 leave
\. C2 retn
这里有个陌生的函数调用,其定义如下:
BOOL WINAPI GetVolumeInformation(
_In_opt_ LPCTSTR lpRootPathName,
_Out_opt_ LPTSTR lpVolumeNameBuffer,
_In_ DWORD nVolumeNameSize,
_Out_opt_ LPDWORD lpVolumeSerialNumber,
_Out_opt_ LPDWORD lpMaximumComponentLength,
_Out_opt_ LPDWORD lpFileSystemFlags,
_Out_opt_ LPTSTR lpFileSystemNameBuffer,
_In_ DWORD nFileSystemNameSize
);
这里主要就是获取程序所在磁盘的信息,比如本次在D盘下运行,就获取了卷标“软件”这个字串,再对字串做一些操作然后连接一个固定字串就是正确的序列号了。
这里,我们直接将4010FF处的指令修改为JNE,然后选择保存,这样爆破就完成了:

-------------------------------------------------------------------------------------------------------------------
后记:之前存放程序的盘卷标名是中文,所以该cm连接字符时出了问题,这次写出了注册机也是专门把卷标名“软件”改成了“SoftWarre”配合。
算法很简单,所以直接用c写一个无界面的注册机:
#include <windows.h>
#include <stdio.h> int main(int argc,char **argv)
{
DWORD VolumeSerialNumber;
char VolumeName[];
GetVolumeInformation( NULL,VolumeName,,&VolumeSerialNumber,NULL,NULL,NULL,); printf( "本程序所在盘的卷标:%s\n ",VolumeName);
VolumeName[] += ;
VolumeName[] += ;
VolumeName[] += ;
VolumeName[] += ; printf( "经过累加之后的卷标:%s\n ",VolumeName); char* Prefix = "L2C-5781";
char* Suffix = "4562-ABEX";
printf( "生成的序列号:%s%s%s\n ",Prefix,VolumeName,Suffix); getchar(); return ;
}
运行效果:

爆破unabexcm5fl(已补上注册机)的更多相关文章
- 爆破vcrkme01(已补上注册机)
系统 : Windows xp 程序 : vcrkme01 程序下载地址 :http://pan.baidu.com/s/1mh1n33y 要求 : 爆破 使用工具 :OD 可在“PEDIY Crac ...
- Bxm做的第一个CrackMe(已补上注册机)
系统 : Windows xp 程序 : Bxm_CrackMe1 程序下载地址 :http://pan.baidu.com/s/1pK0a0xt 要求 : 分析算法 使用工具 :OD 可在看雪论坛中 ...
- WSMBT Modbus & WSMBS Modbus 控件及注册机
先上注册机 点击下载 How to add the WSMBT control to the toolbox: On the Tools menu, click Choose Toolbox Item ...
- 【转】破解Source Insight 3.5.0072过程 附:安装软件+注册机
转载地址:http://blog.csdn.net/qs_hud/article/details/8884867 注册机及软件下载地址:http://download.csdn.net/detail/ ...
- 菜鸟 学注册机编写之 Android app
0x00前言 环境及工具: 手机 Nexus 4(己root) 系统版本 Android 5.01 工具 AndroidKiller_V1.2 关于Android平台app注册机的编 ...
- PostSharp 4.0注册机实现过程
PostSharp是基于.NET平台设计的比较强调易学易用的AOP框架. 什么是AOP? http://wayfarer.cnblogs.com/articles/241024.html 新版的已失效 ...
- RockWare RockWorks的Ollydbg调试过程及注册机(破解)思路
最近拿到了RockWorks15的安装包,可惜没有破解,试用也只能用14天.用PEiD工具察看了一下,Delphi编写的程序,竟然没加壳.本想用OllyDBG调试进去爆破一下,不意发现注册码很简单,如 ...
- AutoCAD 2013官方简体中文破解版(32 / 64位),带激活码和注册机
AutoCAD 2014下载地址:http://ideapad.zol.com.cn/61/160_603697.html 安装及破解方法:(注册机下载在下方) 1.安装Autodesk AutoCA ...
- Navicat11全系列激活(注册机)
Navicat是一款数据库管理工具, 用于简化, 开发和管理MySQL, SQL Server, SQLite, Oracle 和 PostgreSQL 的数据库: Navicat数据模型工具以图形化 ...
随机推荐
- 用Visual C#向access添加数据
(1)创建并打开一个OleDbConnection对象. (2)创建一个插入一条记录的SQL语句. (3)创建一个OleDbCommand对象. (4)通过此OleDbCommand对象完成对插入一条 ...
- MVC中处理Json和JS中处理Json对象
MVC中处理Json和JS中处理Json对象 ASP.NET MVC 很好的封装了Json,本文介绍MVC中处理Json和JS中处理Json对象,并提供详细的示例代码供参考. MVC中已经很好的封装了 ...
- Spring使用RowMapper将数据中的每一行封装成用户定义的类
1.dao public interface MapperSelecteAllEmpDao { public List<Emp> all(); } 2.实现类 public class M ...
- 在列表页,按照指定的category取所属的post列表
在某些指定的页面,例如news,blog等页面,需要列出指定某种类型的文章列表,这种情况下,可以先添加两个category,分别命名news,blog,然后再分别添加几个post,指定每个post所属 ...
- 452. Minimum Number of Arrows to Burst Balloons——排序+贪心算法
There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided ...
- input固定定位后,当input框获取到焦点时,会离开手机软键盘的解决方法
前些天做页面时候遇到这样一个问题,将input框用position:fixed固定定位在最底部的时候,当Input获取焦点的时候,input框离开了手机软键盘,而不是吸附在软键盘上,效果如下图: 找了 ...
- winform开发中绑定combox到枚举
开发中需要根据下拉框的选择处理一些业务逻辑,使用ID值或Text值都不利于代码维护,所以可以写个扩展方法绑定到枚举上. public static class Extensions { /// < ...
- API 进程、线程函数
CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用 ConnectNamedPipe 指 ...
- [css3]搜索框focus时变长
结构: <form class="demo-a"> <input placeholder="Search" type="sea ...
- 从协议VersionedProtocol开始1
Phase 0: Make a plan You must first decide what steps you're going to have in your process. It sound ...