Bxm做的第一个CrackMe

系统 : Windows xp

程序 : Bxm_CrackMe1

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

要求 : 分析算法

使用工具 :OD

可在看雪论坛中查找关于此程序的讨论:传送门

OD载入程序,利用插件查看字串表,双击“破解成功”的字串进入关键算法:

00402406  |.  50            push    eax                              ; /src
00402407  |.  8D45 D0       lea     eax, dword ptr [ebp-30]          ; |
0040240A  |.  50            push    eax                              ; |dest
0040240B  |.  E8 24EDFFFF   call    <jmp.&MSVCRTD.strcpy>            ; \strcpy
00402410  |.  83C4 08       add     esp, 8
00402413  |.  8D4D D0       lea     ecx, dword ptr [ebp-30]          ;  取出字串地址
00402416  |.  51            push    ecx                              ; /s
00402417  |.  E8 1EEDFFFF   call    <jmp.&MSVCRTD.strlen>            ; \strlen
0040241C  |.  83C4 04       add     esp, 4
0040241F  |.  8945 E8       mov     dword ptr [ebp-18], eax          ;  保存长度
00402422  |.  C745 EC 00000>mov     dword ptr [ebp-14], 0            ;  取出一段内存置零
00402429  |.  EB 09         jmp     short 00402434
0040242B  |>  8B55 EC       /mov     edx, dword ptr [ebp-14]
0040242E  |.  83C2 01       |add     edx, 1
00402431  |.  8955 EC       |mov     dword ptr [ebp-14], edx         ;  循环变量自增
00402434  |>  8B45 EC        mov     eax, dword ptr [ebp-14]
00402437  |.  3B45 E8       |cmp     eax, dword ptr [ebp-18]         ;  迭代字串完毕则跳转
0040243A  |.  7D 12         |jge     short 0040244E
0040243C  |.  8B4D EC       |mov     ecx, dword ptr [ebp-14]
0040243F  |.  0FBE540D D0   |movsx   edx, byte ptr [ebp+ecx-30]      ;  取出字符
00402444  |.  8B45 F8       |mov     eax, dword ptr [ebp-8]
00402447  |.  03C2          |add     eax, edx                        ;  累加
00402449  |.  8945 F8       |mov     dword ptr [ebp-8], eax          ;  保存结果
0040244C  |.^ EB DD         \jmp     short 0040242B
0040244E  |>  8B4D F8       mov     ecx, dword ptr [ebp-8]
00402451  |.  F7D9          neg     ecx                              ;  对结果进行求补运算
00402453  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
00402456  |.  0355 E8       add     edx, dword ptr [ebp-18]          ;  结果加上用户名字串的长度
00402459  |.  0FAFCA        imul    ecx, edx                         ;  相乘
0040245C  |.  894D F4       mov     dword ptr [ebp-C], ecx           ;  保存结果
0040245F  |.  8B4D FC       mov     ecx, dword ptr [ebp-4]
00402462  |.  83C1 64       add     ecx, 64
00402465  |.  E8 2AFBFFFF   call    <jmp.&MFC42D.#880>
0040246A  |.  50            push    eax                              ; /src
0040246B  |.  8D45 B8       lea     eax, dword ptr [ebp-48]          ; |
0040246E  |.  50            push    eax                              ; |dest
0040246F  |.  E8 C0ECFFFF   call    <jmp.&MSVCRTD.strcpy>            ; \strcpy
00402474  |.  83C4 08       add     esp, 8
00402477  |.  C745 B0 01000>mov     dword ptr [ebp-50], 1
0040247E  |.  8D4D B8       lea     ecx, dword ptr [ebp-48]
00402481  |.  51            push    ecx                              ; /s
00402482  |.  E8 B3ECFFFF   call    <jmp.&MSVCRTD.strlen>            ; \strlen
00402487  |.  83C4 04       add     esp, 4
0040248A  |.  83E8 01       sub     eax, 1                           ;  长度-1
0040248D  |.  8945 B4       mov     dword ptr [ebp-4C], eax          ;  保存
00402490  |.  EB 09         jmp     short 0040249B
00402492  |>  8B55 B4       /mov     edx, dword ptr [ebp-4C]
00402495  |.  83EA 01       |sub     edx, 1                          ;  循环变量自减
00402498  |.  8955 B4       |mov     dword ptr [ebp-4C], edx
0040249B  |>  837D B4 00     cmp     dword ptr [ebp-4C], 0           ;  迭代完毕则跳转
0040249F  |.  7C 22         |jl      short 004024C3
004024A1  |.  8B45 B4       |mov     eax, dword ptr [ebp-4C]
004024A4  |.  0FBE4C05 B8   |movsx   ecx, byte ptr [ebp+eax-48]      ;  倒序取字符
004024A9  |.  83E9 30       |sub     ecx, 30                         ;  转化为十进制
004024AC  |.  0FAF4D B0     |imul    ecx, dword ptr [ebp-50]         ;  相乘
004024B0  |.  8B55 F0       |mov     edx, dword ptr [ebp-10]
004024B3  |.  03D1          |add     edx, ecx
004024B5  |.  8955 F0       |mov     dword ptr [ebp-10], edx         ;  保存累加结果
004024B8  |.  8B45 B0       |mov     eax, dword ptr [ebp-50]
004024BB  |.  6BC0 0A       |imul    eax, eax, 0A                    ;  eax * 0A
004024BE  |.  8945 B0       |mov     dword ptr [ebp-50], eax         ;  再存回去
004024C1  |.^ EB CF         \jmp     short 00402492
004024C3  |>  8B4D F0       mov     ecx, dword ptr [ebp-10]          ;  取结果
004024C6  |.  6BC9 FF       imul    ecx, ecx, -1                     ;  取相反数
004024C9  |.  894D F0       mov     dword ptr [ebp-10], ecx          ;  再存回去
004024CC  |.  837D E8 00    cmp     dword ptr [ebp-18], 0            ;  用户名长度为0?
004024D0  |.  74 2F         je      short 00402501                   ;  为0则破解失败
004024D2  |.  8B55 F0       mov     edx, dword ptr [ebp-10]
004024D5  |.  0FAF55 F0     imul    edx, dword ptr [ebp-10]          ;  相反数 * 相反数
004024D9  |.  8B45 F0       mov     eax, dword ptr [ebp-10]          ;  取出结果
004024DC  |.  0FAF45 E8     imul    eax, dword ptr [ebp-18]          ;  结果乘以用户名长度
004024E0  |.  8B4D F4       mov     ecx, dword ptr [ebp-C]           ;  取F(用户名)
004024E3  |.  03CA          add     ecx, edx                         ;  累加之前的结果
004024E5  |.  03C1          add     eax, ecx
004024E7  |.  85C0          test    eax, eax                         ;  eax为0?
004024E9  |.  75 16         jnz     short 00402501                   ;  不为0则破解失败
004024EB  |.  6A 00         push    0
004024ED  |.  68 20514100   push    00415120                         ;  恭喜你
004024F2  |.  68 14514100   push    00415114                         ;  破解成功!
004024F7  |.  8B4D FC       mov     ecx, dword ptr [ebp-4]
004024FA  |.  E8 71ECFFFF   call    <jmp.&MFC42D.#3517>
004024FF  |.  EB 14         jmp     short 00402515
00402501  |>  6A 00         push    0
00402503  |.  68 08514100   push    00415108                         ;  破解失败
00402508  |.  68 58504100   push    00415058                         ;  重试?
0040250D  |.  8B4D FC       mov     ecx, dword ptr [ebp-4]
00402510  |.  E8 5BECFFFF   call    <jmp.&MFC42D.#3517>

算法比较简单,就不一一说明了,直接修改4024E9处的跳转指令就可以完成爆破。

有兴趣的朋友可以尝试写出注册机。

时间: 2024-10-14 02:44:58

Bxm做的第一个CrackMe的相关文章

u3d做的第一个test:局域网聊天,移动

using UnityEngine; using System.Collections; public class server : MonoBehaviour { //端口號 int port =10000; //聊天信息 string Message = ""; //移動信息 string moveinfo = ""; //滾動視圖位置 Vector2 scrollPosition; // Use this for initialization void Sta

[BUG]Dreamweaver6做网页的一个图片文字不清晰的问题

自己用Dreamweaver6做一个网页,使用PS做图片,为了节约下载流量,我把图片裁剪为GIF格式,通过系统自带的图片浏览器和美图看看,图片上的文字都是清晰的. 我把图片加载进入DW中后,在DW界面中显示也是清晰的,但是我用浏览器调试,就发现图片上的文字变得不清晰了,我重复试了几次,包括清除浏览器缓存,问题都没有解决. 我用了猎豹,360,IE分别测试,都没有解决问题,我把图片格式换为JPG格式,还是存在问题. 我把文件上传到网站,然后打开网站查看,还是如此. 时间已经过去快1个小时了,我仔细

一个crackme的分析

是看雪合集的一个,因为老师让我们多练习,所以我就找了个crackme来练习 http://images2015.cnblogs.com/blog/638600/201612/638600-20161204133021912-1043107339.jpg 因为似乎传不了附件,所以我就把zip压缩包改成.jpg扩展名,作为图片插入了. 下载完后,把jpg,改成.zip就可以了 这个crackme名字叫Imagination, 是有关bmp的文件验证.

为什么做了这样一个框架工具

做开发框架是进入软件行业没多久就有的一个想法,真正开始做的是在盐城出差的那一次,头一次加班!做程序员加班是很正常的,但是我很少加班,可以说"惯坏了". 多数情况,项目比较急,公司为了效益会接一些项目,客户给的Deadline正常工作时间内根本就是不可能完成的,这种情况的加班是不可避免的,人性一点的公司会考虑增加项目人员,招人或者从别的项目组里调外援,但是这就意味着成本的增加.多数的公司是直接要求加班,而且甚至会将加班作为一个考核内容,加的多说明你工作态度好,认真负责,我记得有一次我在的

【2019-11-16】做人和做企业是一个同心圆

10:00 “过去,全球化是大企业为主导,未来全球化是好企业主导,只有产品好.服务好.体验好.为他人好的企业才能走得更好.” ——马云 把外在问题转化为自己内在的问题后,会让自己主动起来.如果一切问题都是自己的问题,我们在解决问题的过程就是一个自我专注的过程,因为我们都全心全意地解决自己的问题.领导的问题就是自己晋升的机会,客户的问题就是自我扩展的机会,如果我懂得把别人的问题转化为自己的问题,我做事的态度和积极性会很不一样,既能专注自己的事业,又能为自己赢得利益,难道这不是最高效.最大化的双赢或

我做的第一个dedecms网站出现的一些问题归纳下

今天刚用DEDECMS做好一个网站,作为新手真是被折腾的死去活来的,期间出现了大量问题,在这里记录下,一方面方便自己以后不犯同样的错误,一方面给大家看看 做好之后刚想上传就出现 php.ini register_globals must is Off 去百度了下找到解决方案: 错误提示:dedecms安装中php.ini register_globals must is Off! 的解决方法 原因分析:我们只要把php中的register_globals 改成on即可. 解决办法在你的php.i

结合AnyChart做报表:一个生成AnyChart图形XML数据的工具类

今天头有点痛,所以不能详细地写了,先把代码贴上来,等身体状况稍微好一点,再继续完善. 1.(主角)一个使用XML模板生成Anychart XML数据的工具类 /** * */ package com.common.anychart; import java.io.InputStream; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.l

delphi directui 做界面的一个例子

现在很多CS系统或者软件界面都做的非常好看,比如:QQ皮肤,迅雷下载,360杀毒界面等.这些都是运用的流行的DIRECTUI 技术,基本上有的资料都是基于C++的,很少有同仁将C++下的DIRECT UI 转换到DELPHI, 这真是个悲哀,我最近也想美化一下界面,但厌倦了皮肤控件.在CSDN上搜索到了这个例子,不过需要积分下载,我也转载分享在这里. directui, 其实有很多地方还是用到GDI,GDI+ 实现的,所以下面这个例子就是用的GDI+ 的DELPHI库完成的: 貌似样子还不错,里

自己做的第一个JS特效

星星闪烁效果 <body bgcolor="black"></body>    <script type="text/JavaScript">        //循环遍历div    for (var i = 0; i < 50; i++) {        document.write("<div name='shuzi' style='font-size: 20px;color: yellow;posit