首页
社区
课程
招聘
[分享]利用OllyICE进行的一个crackme破解过程,高手飘过
发表于: 2008-3-7 13:55 6315

[分享]利用OllyICE进行的一个crackme破解过程,高手飘过

2008-3-7 13:55
6315
作者:newrain(ubunoon)
日期:2008-03-07
email:ubunoon@sina.com
软件下载地址:0bcK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3y4J5j5h3y4C8L8h3g2K6i4K6u0W2k6r3g2Q4x3V1k6#2M7$3g2J5M7#2)9J5c8Y4y4A6L8X3!0C8i4K6u0r3j5%4u0S2j5$3E0E0k6g2)9#2k6U0q4Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4c8e0g2Q4z5e0m8Q4z5p5c8Q4c8e0N6Q4b7e0N6Q4b7U0m8Q4c8e0c8Q4b7U0S2Q4b7V1q4o6M7X3q4U0K9$3#2W2i4K6t1$3L8X3u0K6M7q4)9K6b7W2)9J5x3K6q4Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4K6u0V1i4K6t1$3L8X3u0K6M7q4)9K6b7Y4k6W2M7Y4W2Q4x3U0k6F1j5Y4y4H3i4K6y4n7M7$3W2E0M7r3I4W2i4K6t1$3L8X3u0K6M7q4)9K6b7W2N6A6L8X3c8G2N6%4y4Q4x3U0k6F1j5Y4y4H3i4K6y4n7j5%4u0S2j5$3E0E0k6g2)9J5y4X3&6T1M7%4m8Q4x3@1u0T1P5g2)9J5y4X3&6T1M7%4m8Q4x3@1u0e0K9h3&6G2K9H3`.`.

下载后首先运行crack.exe
提示password:
输入ubunoon 回车后提示bad出错信息。

打开OllyICE,载入crack.exe文件
在'反汇编'中选择'查找' '所有参考文本字串',出现
文本字串参考位于 crack:.text
地址       反汇编                                    文本字串
00401219   ascii   "嵓'",0
00401220   push    ebp                               (初始 CPU 选择)
00401396   mov     dword ptr [esp], 00442000         ASCII "cls"
004013A2   mov     dword ptr [esp+4], 00442004       ASCII "Good"
004013CE   mov     dword ptr [esp], 00442000         ASCII "cls"
004013DA   mov     dword ptr [esp+4], 00442009       ASCII "Bad"
0040142A   mov     dword ptr [esp+4], 0044200D       ASCII "Password: "
....
0043EFA1   mov     dword ptr [esp], 00442126         ASCII "basic_string::_M_replace_aux"

由于初始时提示password,因此双击password,跳转到password的汇编代码窗口
00401425  |.  E8 F6BD0000   call    0040D220
0040142A  |.  C74424 04 0D2>mov     dword ptr [esp+4], 0044200D      ;  ASCII "Password: "
00401432  |.  C70424 D05344>mov     dword ptr [esp], 004453D0
00401439  |.  E8 CACE0300   call    0043E308
0040143E  |.  C74424 04 145>mov     dword ptr [esp+4], 00445014
00401446  |.  C70424 705444>mov     dword ptr [esp], 00445470
0040144D  |.  E8 36E20300   call    0043F688
00401452  |.  E8 1D0D0300   call    00432174
00401457  |.  894424 08     mov     dword ptr [esp+8], eax
0040145B  |.  C74424 04 010>mov     dword ptr [esp+4], 1
00401463  |.  C70424 705444>mov     dword ptr [esp], 00445470
0040146A  |.  E8 75750200   call    004289E4
0040146F  |.  C74424 04 105>mov     dword ptr [esp+4], 00445010
00401477  |.  C70424 145044>mov     dword ptr [esp], 00445014
0040147E  |.  E8 45CE0300   call    0043E2C8
00401483  |.  84C0          test    al, al
00401485 >    74 07         je      short 0040148E                   ;  输入password后的第一个跳转
00401487      E8 04FFFFFF   call    00401390
0040148C  |.  EB 05         jmp     short 00401493
0040148E  |>  E8 35FFFFFF   call    004013C8
00401493  |>  C70424 705444>mov     dword ptr [esp], 00445470
0040149A  |.  E8 25680200   call    00427CC4

看到此处可能不是很明白,提示信息中有bad信息出现,再回到文本字串中,选择bad行,双击跳转到bad代码中
004013C8  /$  55            push    ebp
004013C9  |.  89E5          mov     ebp, esp
004013CB  |.  83EC 08       sub     esp, 8
004013CE  |.  C70424 002044>mov     dword ptr [esp], 00442000        ; |ASCII "cls"
004013D5  |.  E8 F6F70000   call    <jmp.&msvcrt.system>             ; \system
004013DA  |.  C74424 04 092>mov     dword ptr [esp+4], 00442009      ;  ASCII "Bad"
004013E2  |.  C70424 D05344>mov     dword ptr [esp], 004453D0
004013E9  |.  E8 1ACF0300   call    0043E308
004013EE  |.  C74424 04 A8D>mov     dword ptr [esp+4], 0043D0A8
004013F6  |.  890424        mov     dword ptr [esp], eax
004013F9  |.  E8 26AE0200   call    0042C224
004013FE  |.  C9            leave
004013FF  \.  C3            retn

很明显上面的一段代码是一个标准的函数调用,在 004013D5调用system("cls")进行清屏操作,之后调用函数进行输出处理。再来看一下函数的起始地址,004013C8,这不是我们在前面的password中jmp后面call的地址嘛,呵呵,此时,你可以再往上看看:
00401390  /$  55            push    ebp
00401391  |.  89E5          mov     ebp, esp
00401393  |.  83EC 08       sub     esp, 8
00401396  |.  C70424 002044>mov     dword ptr [esp], 00442000        ; |ASCII "cls"
0040139D  |.  E8 2EF80000   call    <jmp.&msvcrt.system>             ; \system
004013A2  |.  C74424 04 042>mov     dword ptr [esp+4], 00442004      ;  ASCII "Good"
004013AA  |.  C70424 D05344>mov     dword ptr [esp], 004453D0
004013B1  |.  E8 52CF0300   call    0043E308
004013B6  |.  C74424 04 A8D>mov     dword ptr [esp+4], 0043D0A8
004013BE  |.  890424        mov     dword ptr [esp], eax
004013C1  |.  E8 5EAE0200   call    0042C224
004013C6  |.  C9            leave
004013C7  \.  C3            retn
也是一个标准的函数调用,首地址是password字串中第一个跳转语句后面的call制定调用的地址。现在是je之后跳转call出错提示,那么我们把je改为jne,就可以直接进入
00401487      E8 04FFFFFF   call    00401390
这一条语句了。选中下面的语句,右击选择汇编,把je修改为jne
00401485 >    74 07         je      short 0040148E                   ;  输入password后的第一个跳转
然后右击选择'复制到可执行文件'-'选择',转到

之后点击右键保存,完成破解

第一次破解,与大家分享。

暴力破解Crackme.doc

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
接上一贴,从password后的第一个跳转前的call进入(此处设置断点),按F7进入:
0043E2C8  /$  55            push    ebp
0043E2C9  |.  89E5          mov     ebp, esp                         ;  ebp = 0022FF48
0043E2CB  |.  83EC 18       sub     esp, 18                          ;  增加18个字节的堆栈空间,ESP=0022ff30
0043E2CE  |.  8B45 0C       mov     eax, dword ptr [ebp+C]           ;  eax=00445470
0043E2D1  |.  894424 04     mov     dword ptr [esp+4], eax
0043E2D5  |.  8B45 08       mov     eax, dword ptr [ebp+8]
0043E2D8  |.  890424        mov     dword ptr [esp], eax             ; 运行到此处,都在堆栈上赋值操作
0043E2DB  |.  E8 A460FDFF   call    00414384                             ;进入关键调用函数,按F7进入
0043E2E0  |.  8945 FC       mov     dword ptr [ebp-4], eax
0043E2E3  |.  837D FC 00    cmp     dword ptr [ebp-4], 0
0043E2E7  |.  0F94C0        sete    al
0043E2EA  |.  0FB6C0        movzx   eax, al
0043E2ED  |.  8945 FC       mov     dword ptr [ebp-4], eax
0043E2F0  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
0043E2F3  |.  C9            leave
0043E2F4  \.  C3            retn

00414384      55            push    ebp
00414385  |.  89E5          mov     ebp, esp
00414387  |.  83EC 20       sub     esp, 20                          ;  开辟20个字节的堆栈空间
0041438A  |.  895D F4       mov     dword ptr [ebp-C], ebx           ;  ebp-C = 0033FF1C
0041438D  |.  8B45 08       mov     eax, dword ptr [ebp+8]           ;  EAX = 00445014
00414390  |.  8975 F8       mov     dword ptr [ebp-8], esi
00414393  |.  897D FC       mov     dword ptr [ebp-4], edi
00414396  |.  8B00          mov     eax, dword ptr [eax]             ;  输入的password在004A2654,EAX=00445014 ,输入的字串:ubunoon
00414398  |.  8945 E0       mov     dword ptr [ebp-20], eax
0041439B  |.  8B40 F4       mov     eax, dword ptr [eax-C]           ;  EAX-C = 004a2648,赋值后为7
0041439E  |.  8945 E4       mov     dword ptr [ebp-1C], eax          ;  [ebp-1c 0022FF0C]=7
004143A1  |.  8945 F0       mov     dword ptr [ebp-10], eax
004143A4  |.  8B45 0C       mov     eax, dword ptr [ebp+C]           ;  EAX=00445010
004143A7  |.  8B10          mov     edx, dword ptr [eax]
004143A9  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
004143AC  |.  8B5A F4       mov     ebx, dword ptr [edx-C]           ;  EAX=0022ff14,ebx=19
004143AF  |.  3B5D E4       cmp     ebx, dword ptr [ebp-1C]          ;  是否有19个字符比较,小于19个字符的,跳转返回,否则,进入下面的字符比较
004143B2  |.  895D EC       mov     dword ptr [ebp-14], ebx          ;  0022FF14 = 19
004143B5  |.  72 03         jb      short 004143BA
004143B7  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
004143BA  |>  FC            cld
004143BB  |.  8B08          mov     ecx, dword ptr [eax]
004143BD  |.  89D7          mov     edi, edx   ; 出现(ASCII "YAYTHISISTHEPASSWORDBITCH"),后面的repe比较可以看出,是和该字符串进行比较,因此这个就是我们要找的password

004143BF  |.  8B75 E0       mov     esi, dword ptr [ebp-20]
004143C2  |.  39C9          cmp     ecx, ecx
004143C4  |.  F3:A6         repe    cmps byte ptr es:[edi], byte ptr>
004143C6  |.  0F92C0        setb    al
004143C9  |.  0F97C2        seta    dl
004143CC  |.  28C2          sub     dl, al
004143CE  |.  0FBEC2        movsx   eax, dl
004143D1  |.  85C0          test    eax, eax
004143D3  |.  75 05         jnz     short 004143DA
004143D5  |.  8B45 E4       mov     eax, dword ptr [ebp-1C]
004143D8  |.  29D8          sub     eax, ebx
004143DA  |>  8B5D F4       mov     ebx, dword ptr [ebp-C]
004143DD  |.  8B75 F8       mov     esi, dword ptr [ebp-8]
004143E0  |.  8B7D FC       mov     edi, dword ptr [ebp-4]
004143E3  |.  89EC          mov     esp, ebp
004143E5  |.  5D            pop     ebp
004143E6  \.  C3            retn

之后输入字符串:
YAYTHISTISTHEPASSWORDBITCH
出现good提示信息
破解成功
2008-3-7 16:57
0
游客
登录 | 注册 方可回帖
返回