爆破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数据模型工具以图形化 ...
随机推荐
- java多线程下如何调用一个共同的内存单元(调用同一个对象)
/* * 关于线程下共享相同的内存单元(包括代码与数据) * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. * 对于Thread(Runnable target)构造方法创建的线程, ...
- MATLAB 损失函数画图
损失函数画图 Hinge loss function: \[H(z) = max(0,1-z)\] $\psi$-learning loss function: \[{\phi _s}(z) = \l ...
- HDU4815
Little Tiger vs. Deep Monkey Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K ( ...
- RAID在数据库存储上的应用-转
随着单块磁盘在数据安全.性能.容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks,RAID)出现了,RAID把多块独立的磁 ...
- tomcat 集群配置,Session复制共享
本配置在tomcat7上验证通过.通过此方法配置的集群,session信息将会被自动复制到各个节点. 1.配置Server.xml 在Server.xml中,找到被注释<Cluster/> ...
- ANGULAR 开发用户选择器指令
在开发表单时,我们需要使用经常需要使用到用户选择器,用户的数据一般使用如下方式存储: 用户1,用户2,用户3 我们可以使用angular指令实现选择器. <!DOCTYPE html> ...
- HideProcess
#ifndef CXX_HIDEPROCESS_H # include "HideProcess.h" #endif #ifdef _WIN64 #define ActivePro ...
- 二模 (3) day2
第一题: 题目大意:(难以概括,就不贴了把.) 解题过程: 1.担心被精度问题恶心,就把平均数的地方乘了N,这样只有最后计算的时候才会是小数.. 2.数组保存的时候蛋疼的 没改成double.结果全部 ...
- C++-前缀和后缀
1,c++规定后缀形式的++操作符有一个int行的参数,被调用时,编译器自动加一个0作为参数给他 2,前缀返回一个reference,后缀返回一个const对象 /////////////////// ...
- wp8.1 Study13:在WP8.1中分享文件和数据
绪论:不同于windows, 在wp8.1中,如果不止一个程序可以接受其Uri或者文件,shell会提供一个界面让用户选择用哪个程序.而在windows中,用户可以在设置那里设置各种文件和Uri的默认 ...