系统 : Windows xp

程序 : abexcrackme2

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

要求 : 注册机编写

使用工具 : OD

可在“PEDIY CrackMe 2007”中查找关于此程序的破文,标题为“abex' #2的算法分析(VB简单)”。

  程序是用VB语言编写,所以可以参考下这篇文章:http://www.cnblogs.com/bbdxf/p/3793545.html,大部分反汇编出来的函数名都可以在其中查到。

  话不多说,我们采用OD载入程序,并利用超级字串参考插件查找宽字符串“yep, this key is right!”,并定位调用位置。向上搜索,定位关键代码:

   .  8B1D 4C104000 mov     ebx, dword ptr [<&MSVBVM60.#>>;  MSVBVM60.rtcMidCharVar
> 85C0 test eax, eax ; eax为0则结束循环
. 0F84 je 004032A5
0040319F . 8D95 64FFFFFF lea edx, dword ptr [ebp-9C]
004031A5 . 8D45 DC lea eax, dword ptr [ebp-]
004031A8 . push edx
004031A9 . push eax
004031AA . C785 6CFFFFFF>mov dword ptr [ebp-],
004031B4 . 89BD 64FFFFFF mov dword ptr [ebp-9C], edi
004031BA . FF15 A8104000 call dword ptr [<&MSVBVM60.__vbaI4Var>; MSVBVM60.__vbaI4Var
004031C0 . 8D4D 8C lea ecx, dword ptr [ebp-]
004031C3 . push eax
004031C4 . 8D95 54FFFFFF lea edx, dword ptr [ebp-AC]
004031CA . push ecx
004031CB . push edx
004031CC . FFD3 call ebx
004031CE . 8D95 54FFFFFF lea edx, dword ptr [ebp-AC]
004031D4 . 8D4D AC lea ecx, dword ptr [ebp-]
004031D7 . FFD6 call esi
004031D9 . 8D8D 64FFFFFF lea ecx, dword ptr [ebp-9C]
004031DF . FF15 0C104000 call dword ptr [<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVar
004031E5 . 8D45 AC lea eax, dword ptr [ebp-]
004031E8 . 8D8D 78FFFFFF lea ecx, dword ptr [ebp-] ; ↓从字符串特点位置上获取其值
004031EE . push eax ; /String8
004031EF . push ecx ; |ARG2
004031F0 . FF15 call dword ptr [<&MSVBVM60.__vbaStrVa>; \__vbaStrVarVal
004031F6 . push eax ; /String
004031F7 . FF15 1C104000 call dword ptr [<&MSVBVM60.#>] ; \rtcAnsiValueBstr
004031FD . 8D95 24FFFFFF lea edx, dword ptr [ebp-DC] ; ↑传回字符码
. 8D4D AC lea ecx, dword ptr [ebp-]
. : 2CFFF>mov word ptr [ebp-D4], ax ; 保存字符码
0040320D . 89BD 24FFFFFF mov dword ptr [ebp-DC], edi
. FFD6 call esi
. 8D8D 78FFFFFF lea ecx, dword ptr [ebp-] ; ↓释放出字符串所占的内存
0040321B . FF15 CC104000 call dword ptr [<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
. 8D55 AC lea edx, dword ptr [ebp-]
. 8D85 24FFFFFF lea eax, dword ptr [ebp-DC]
0040322A . push edx ; /var18
0040322B . 8D8D 64FFFFFF lea ecx, dword ptr [ebp-9C] ; |
. push eax ; |var28
. push ecx ; |saveto8
. C785 2CFFFFFF>mov dword ptr [ebp-D4], ; |
0040323D . 89BD 24FFFFFF mov dword ptr [ebp-DC], edi ; |
. FF15 AC104000 call dword ptr [<&MSVBVM60.__vbaVarAd>; \__vbaVarAdd
. 8BD0 mov edx, eax
0040324B . 8D4D AC lea ecx, dword ptr [ebp-]
0040324E . FFD6 call esi
. 8D55 AC lea edx, dword ptr [ebp-]
. 8D85 64FFFFFF lea eax, dword ptr [ebp-9C]
. push edx
0040325A . push eax
0040325B . FF15 call dword ptr [<&MSVBVM60.#>] ; MSVBVM60.rtcHexVarFromVar
. 8D95 64FFFFFF lea edx, dword ptr [ebp-9C]
. 8D4D AC lea ecx, dword ptr [ebp-]
0040326A . FFD6 call esi
0040326C . 8D4D BC lea ecx, dword ptr [ebp-]
0040326F . 8D55 AC lea edx, dword ptr [ebp-]
. push ecx
. 8D85 64FFFFFF lea eax, dword ptr [ebp-9C]
. push edx
0040327A . push eax
0040327B . FF15 call dword ptr [<&MSVBVM60.__vbaVarCa>; MSVBVM60.__vbaVarCat
. 8BD0 mov edx, eax
. 8D4D BC lea ecx, dword ptr [ebp-]
. FFD6 call esi
. 8D8D BCFEFFFF lea ecx, dword ptr [ebp-]
0040328E . 8D95 CCFEFFFF lea edx, dword ptr [ebp-]
. push ecx ; /TMPend8
. 8D45 DC lea eax, dword ptr [ebp-] ; |
. push edx ; |TMPstep8
. push eax ; |Counter8
0040329A . FF15 C0104000 call dword ptr [<&MSVBVM60.__vbaVarFo>; \__vbaVarForNext
004032A0 .^ E9 F2FEFFFF jmp
004032A5 > 8B45 mov eax, dword ptr [ebp+]
004032A8 . push eax
004032A9 . 8B08 mov ecx, dword ptr [eax]
004032AB . FF91 call dword ptr [ecx+]
004032B1 . 8D95 74FFFFFF lea edx, dword ptr [ebp-8C]
004032B7 . push eax
004032B8 . push edx
004032B9 . FF15 call dword ptr [<&MSVBVM60.__vbaObjSe>; MSVBVM60.__vbaObjSet
004032BF . 8BF8 mov edi, eax
004032C1 . 8D8D 78FFFFFF lea ecx, dword ptr [ebp-]
004032C7 . push ecx
004032C8 . push edi
004032C9 . 8B07 mov eax, dword ptr [edi]
004032CB . FF90 A0000000 call dword ptr [eax+A0]
004032D1 . 85C0 test eax, eax
004032D3 . DBE2 fclex
004032D5 . 7D jge short 004032E9
004032D7 . A0000000 push 0A0
004032DC . push
004032E1 . push edi
004032E2 . push eax
004032E3 . FF15 call dword ptr [<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
004032E9 > 8B85 78FFFFFF mov eax, dword ptr [ebp-]
004032EF . BF mov edi,
004032F4 . 8D95 64FFFFFF lea edx, dword ptr [ebp-9C]
004032FA . 8D4D CC lea ecx, dword ptr [ebp-]
004032FD . C785 78FFFFFF>mov dword ptr [ebp-],
. 6CFFFFFF mov dword ptr [ebp-], eax
0040330D . 89BD 64FFFFFF mov dword ptr [ebp-9C], edi
. FFD6 call esi
. 8D8D 74FFFFFF lea ecx, dword ptr [ebp-8C]
0040331B . FF15 C8104000 call dword ptr [<&MSVBVM60.__vbaFreeO>; MSVBVM60.__vbaFreeObj
. 8D55 BC lea edx, dword ptr [ebp-]
. 8D45 CC lea eax, dword ptr [ebp-]
. push edx ; /var18
. push eax ; |var28
. FF15 call dword ptr [<&MSVBVM60.__vbaVarTs>; \__vbaVarTstEq
0040332F . :85C0 test ax, ax ; 判断核心
. 0F84 D0000000 je

  以上,就是关键算法,其实注册算法相当简单:用户名字符+0x64即序列号。

  没有学过VB的朋友对于其相当奇葩的函数调用和变量引用会理解的相对很吃力。这个crackme发布于1999年,2007年它的破文在看雪论坛发表。而今天,2016年1月12日由我来破解这个程序。时隔17年,时代变了,技术不断更新,VB语言也渐渐没落了。也许有一天,VB会被彻底淘汰。但对于曾用VB做开发,或是曾逆向过VB程序的程序员来说,我们会将它存入一个不知名的文件夹,连同过去的记忆一并,深埋心底。

  好了,过去归于过去。现在的路还要好好的走。我们打开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(); if ( len >= ){ //格式控制。
CString PassWord = "";
CString Temp = ""; for ( int i = ; i != ; i++ ){
Temp.Format( "%X",( str[i] + 0x64 ) );
PassWord += Temp;
} SetDlgItemText( IDC_EDIT_PASSWORD,PassWord );
}
else
MessageBox( "用户名格式错误!" );
}

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

运行效果:

破解 abexcrackme2的更多相关文章

  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. 在汇编代码中调用C函数

    对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数 ...

  2. oracle序列为什么不是从1开始

    问题原因: ·当我们使用序列作为插入数据时,如果使用了“延迟段”技术,则跳过序列的第一个值 ·Oracle从 11.2.0.1版本开始,提供了一个“延迟段创建”特性: 即 当我们创建了新的表(tabl ...

  3. 实验三 敏捷开发与XP实践(改)

    ---恢复内容开始--- 一.敏捷开发与XP 二.编码标准 1.编码标准中的版式就是一个很好的例子,版式虽然不会影响程序的功能,但会影响可读性.程序的版式追求清晰.美观,是程序风格的重要因素.单击Ec ...

  4. jQuery Easing动画效果扩展(转)

    jQuery API提供了简单的动画效果如淡入淡出以及自定义动画效果,而今天我给大家分享的是一款jQuery动画效果扩展增强插件jquery.easing.js,使用该插件可以实现直线匀速运功.变加速 ...

  5. 2016年5月19日php,mysql配置

    1.php配置 1. 配置disable_functiondisable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshe ...

  6. string字符串类型

    一次设置一个key-value 使用set命令可以一次设置一个key-value,使用get命令可以查询key所关联的字符串值.如下图所示. 一次设置多个key-value 使用mset命令可以设置多 ...

  7. Codeigniter 集成sphinx搜索 这里采用的是coreseek中文搜索引擎,具体安装请参考官方网站

    先上效果图 加入sphinx类库(/application/libraries/sphinx_client.php) 0001 <?php 0002 0003 // 0004 // $Id: s ...

  8. [Js]无缝滚动

    效果: 1.默认缓慢往左滚动 2.放到左箭头上还是向左滚动,放到右箭头上向右滚动 3.放到图片上停止滚动,移出继续滚动 思路: 1.计算图片列表ul的宽度 2.开启定时器,使其向左边距不断增大,造成向 ...

  9. flash builder的编译缓存

    C:\Users\Administrator\AppData\Roaming 因为我的一个项目是手机.浏览器都支持的项目,所以我经常删除项目然后修改成别的类型: 可能是这个原因,导致我的程序或者加载的 ...

  10. hdu 4616 Game

    http://acm.hdu.edu.cn/showproblem.php?pid=4616 要记录各种状态的段  a[2][4] a[0][j]表示以trap为起点一共有j个trap的最优值 a[1 ...