系统 : Windows xp

程序 : AD_CM#3

程序下载地址 :http://pan.baidu.com/s/1skwXPVn

要求 : 编写注册机

使用工具 :IDA & OD

可在看雪论坛中查找关于此程序的破文:http://bbs.pediy.com/showthread.php?t=28995

IDA载入程序,找出提示破解成功的字串“Well done Cracker, You did it!”并定位关键代码:

0045817F  |.  8D55 FC       lea     edx, dword ptr [ebp-]
|. 8B87 D8020000 mov eax, dword ptr [edi+2D8]
|. E8 FFBEFCFF call 0042408C
0045818D |. 8D55 F0 lea edx, dword ptr [ebp-]
|. 8B87 D8020000 mov eax, dword ptr [edi+2D8]
|. E8 F1BEFCFF call 0042408C
0045819B |. 837D F0 cmp dword ptr [ebp-], ; 用户名为空?
0045819F |. 0A jnz short 004581AB
004581A1 |. B8 mov eax, ; ASCII "Enter you name, pls."
004581A6 |. E8 39C1FEFF call 004442E4
004581AB |> 8D55 EC lea edx, dword ptr [ebp-]
004581AE |. 8B87 DC020000 mov eax, dword ptr [edi+2DC]
004581B4 |. E8 D3BEFCFF call 0042408C
004581B9 |. 837D EC cmp dword ptr [ebp-], ; 序列号为空?
004581BD |. 0A jnz short 004581C9
004581BF |. B8 A8824500 mov eax, 004582A8 ; ASCII "Enter the serial, pls."
004581C4 |. E8 1BC1FEFF call 004442E4
004581C9 |> 8B45 FC mov eax, dword ptr [ebp-] ; 取用户名
004581CC |. E8 ABB9FAFF call 00403B7C ; 取长度
004581D1 |. 8BD8 mov ebx, eax
004581D3 |. 85DB test ebx, ebx
004581D5 |. 7E 2D jle short
004581D7 |. BE mov esi, ; 初始化循环变量
004581DC |> 8B45 FC /mov eax, dword ptr [ebp-] ; 取用户名
004581DF |. 0FB64430 FF |movzx eax, byte ptr [eax+esi-] ; 迭代用户名字串
004581E4 |. B9 |mov ecx,
004581E9 |. 33D2 |xor edx, edx
004581EB |. F7F1 |div ecx ; 字符 除以 3
004581ED |. 8D55 E8 |lea edx, dword ptr [ebp-] ; 取一段内存
004581F0 |. E8 0FF9FAFF |call 00407B04 ; 将商将从十六进制的数据转化为十进制的字串
004581F5 |. 8B55 E8 |mov edx, dword ptr [ebp-]
004581F8 |. 8D45 F8 |lea eax, dword ptr [ebp-] ; 取一段内存
004581FB |. E8 84B9FAFF |call 00403B84 ; 连接算出的子密钥
|. |inc esi ; 循环变量自增
|. 4B |dec ebx
|.^ D8 \jnz short 004581DC
|> 8D45 F4 lea eax, dword ptr [ebp-C] ; 取一段内存
|. 8B4D F8 mov ecx, dword ptr [ebp-] ; 取连接好的密钥
0045820A |. BA C8824500 mov edx, 004582C8 ; ASCII "ADCM3-"
0045820F |. E8 B4B9FAFF call 00403BC8 ; 连接字串
|. 8D55 E4 lea edx, dword ptr [ebp-1C] ; 取一段内存
|. 8B87 DC020000 mov eax, dword ptr [edi+2DC]
0045821D |. E8 6ABEFCFF call 0042408C
|. 8B55 E4 mov edx, dword ptr [ebp-1C] ; 取序列号
|. 8B45 F4 mov eax, dword ptr [ebp-C] ; 取连接好的密钥
|. E8 5FBAFAFF call 00403C8C ; 对比字串,返回0 表示字串相同
0045822D |. 0A jnz short
0045822F |. B8 D8824500 mov eax, 004582D8 ; ASCII "Well done Cracker, You did it!"

以上,算法分析完毕,这真的是一个非常简单的crackme,我们直接打开http://www.cnblogs.com/ZRBYYXDM/p/5115596.html中搭建的框架,并修改OnBtnDecrypt函数如下:

void CKengen_TemplateDlg::OnBtnDecrypt()
{
// TODO: Add your control notification handler code here
CString str;
GetDlgItemText( IDC_EDIT_NAME,str ); //获取用户名字串基本信息。
int len = str.GetLength();
CString Temp,PassWord; if ( len != ){ //格式控制。
for ( int i = ; i != len ; i++ ){
Temp.Format( "%d",( str[i] / ) );
PassWord += Temp;
} PassWord = "ADCM3-" + PassWord;
SetDlgItemText( IDC_EDIT_PASSWORD,PassWord );
}
else
MessageBox( "用户名格式错误!" );
}

再在OnInitDialog中添加此代码修改标题:SetWindowText(_T("AD_CM#3_Keygen"));

运行效果:

破解 AD_CM#3的更多相关文章

  1. Kali对wifi的破解记录

    好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...

  2. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  3. Syscan360会议胸牌破解揭秘

    Syscan360会议胸牌破解揭秘 背景 有幸参加今年11月份的上海Syscan360安全会议,会议期间有一个亮点就是360的独角兽团队设计了一款电子badge(胸牌)供参加人员进行破解尝试,类似于美 ...

  4. “不给力啊,老湿!”:RSA加密与破解

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 加密和解密是自古就有技术了.经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫 ...

  5. C# 破解 Reflector8.5

    一.分析 破解.net .dll,可以使用reflector,但官方提供的reflector是需要购买的,因此,破解reflector势在必行. 二.破解Reflector具体步骤 下面为详细的破解步 ...

  6. CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15

    之前有位搞平面的好友“小瘦”说CDR X8无法破解,只能用X7.呃……呃……呃……好像是的 其实CDR8难激活主要在于一个点“没有离线激活了,只可以在线激活”,逆天不是专供逆向的,当然没能力去破解,这 ...

  7. 破解SQLServer for Linux预览版的3.5GB内存限制 (UBUNTU篇)

    在上一篇中我提到了如何破解RHEL上SQLServer的内存大小限制,但是Ubuntu上还有一道检查 这篇我将会讲解如何在3.5GB以下内存的Ubuntu中安装和运行SQLServer for Lin ...

  8. 破解SQLServer for Linux预览版的3.5GB内存限制 (RHEL篇)

    微软发布了SQLServer for Linux,但是安装竟然需要3.5GB内存,这让大部分云主机用户都没办法尝试这个新东西 这篇我将讲解如何破解这个内存限制 要看关键的可以直接跳到第6步,只需要替换 ...

  9. 微信小程序IDE(微信web开发者工具)安装、破解手册

    1.IDE下载 微信web开发者工具,本人是用的windows 10 x64系统,用到以下两个版本的IDE安装工具与一个破解工具包: wechat_web_devtools_0.7.0_x64.exe ...

随机推荐

  1. java多线程下如何调用一个共同的内存单元(调用同一个对象)

    /* * 关于线程下共享相同的内存单元(包括代码与数据) * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. * 对于Thread(Runnable target)构造方法创建的线程, ...

  2. DOM之兄弟节点

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

  3. redhat enterprixe 5.0 web 服务配置与管理

    一.Web服务及工作原理 Web服务的实现采用客户/服务器模型.客户机运行Web客户程序(浏览器),作用是解释和显示Web页面,相应用户的输入请求,并且通过http协议将用户请求传递给Web服务器.W ...

  4. java模式之-模板方法模式

    模板方法模式是java设计模式常见的模式之一. <JAVA与模式>中写道: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法 ...

  5. hduacm 2888 ----二维rmq

    http://acm.hdu.edu.cn/showproblem.php?pid=2888 模板题  直接用二维rmq 读入数据时比较坑爹  cin 会超时 #include <cstdio& ...

  6. Activity界面切换动画特效。

    效果图: 结构图: 测试代码: 布局: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearL ...

  7. HDU 4089 Activation 概率DP 难度:3

    http://acm.hdu.edu.cn/showproblem.php?pid=4089 这道题中一共有两个循环: 1.事件1 如果一直落在Activation failed事件上,那么就会重新继 ...

  8. svm特征

    svm特征格式:<label><index1>:<value1><index1>:<value1>.... 其中<label> ...

  9. C++-类的const成员变量

    当类中用到一些固定值时,希望将其定义为const成员变量,防止被修改. 但因为const成员变量因为初始化之后就不能修改,因此只能在构造函数的初始化列表中初始化 如果是数组,则没有办法在初始化列表中初 ...

  10. Spring学习笔记之Bean的一些属性设置

    1.beans 里边配置default-init-method="shunge",有这个方法的会执行,没有也不会报错 2.beans 里边配置default-destroy-met ...