吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11886|回复: 16
收起左侧

[原创] 一个论坛大牛的crackme

[复制链接]
枫笑九洲 发表于 2018-2-24 16:56
【文章标题】: 一个论坛大牛的crackme
【文章作者】: 就是我自己
【下载地址】: https://www.52pojie.cn/thread-642649-1-1.html
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
一路磕磕碰碰,总算出来了。

载入,输入注册码12345678,下易语言按钮事件:FF 55 FC 5F 5E,F9走起:
[Asm] 纯文本查看 复制代码
0041AC6D  |> \FF55 FC       call [local.1]                                          ;  CrackMe.0040105B
0041AC70  |.  5F            pop edi                                                 ;  00A25518
0041AC71  |.  5E            pop esi                                                 ;  00A25518
0041AC72  |.  895D F4       mov [local.3],ebx


1、第一处判断:

[Asm] 纯文本查看 复制代码
0040105B  /.  55            push ebp
0040105C  |.  8BEC          mov ebp,esp
0040105E  |.  81EC 40000000 sub esp,0x40
00401064  |.  C745 FC 00000>mov [local.1],0x0
0040106B  |.  C745 F8 00000>mov [local.2],0x0
00401072  |.  C745 F4 00000>mov [local.3],0x0
00401079  |.  6A FF         push -0x1
0040107B  |.  6A 08         push 0x8
0040107D  |.  68 04000116   push 0x16010004
00401082  |.  68 01000152   push 0x52010001
00401087  |.  E8 68080000   call CrackMe.004018F4                                   ;  得假码
0040108C  |.  83C4 10       add esp,0x10
0040108F  |.  8945 F0       mov [local.4],eax
00401092  |.  6A 00         push 0x0
00401094  |.  6A 00         push 0x0
00401096  |.  6A 00         push 0x0
00401098  |.  68 04000080   push 0x80000004
0040109D  |.  6A 00         push 0x0
0040109F  |.  68 5C3C4800   push CrackMe.00483C5C                                   ;  -
004010A4  |.  68 04000080   push 0x80000004
004010A9  |.  6A 00         push 0x0
004010AB  |.  8B45 F0       mov eax,[local.4]
004010AE  |.  85C0          test eax,eax
004010B0  |.  75 05         jnz short CrackMe.004010B7
004010B2  |.  B8 5E3C4800   mov eax,CrackMe.00483C5E
004010B7  |>  50            push eax                                                ;  注册码入栈
004010B8  |.  68 03000000   push 0x3
004010BD  |.  BB 101D4000   mov ebx,CrackMe.00401D10
004010C2  |.  E8 1B080000   call CrackMe.004018E2                                   ;  计算第一个判断,由- 分段,不是5段死

0040113C  |.  8B43 04       mov eax,dword ptr ds:[ebx+0x4]
0040113F  |>  8945 EC       mov [local.5],eax                                       ;  eax不等于5就死
00401142  |.  837D EC 05    cmp [local.5],0x5
00401146  |.  0F84 41000000 je CrackMe.0040118D


注册码改成123-123-123-123-123

2、第二处判断
[Asm] 纯文本查看 复制代码
004011C8  |.  E8 15070000   call CrackMe.004018E2                                   ;  第二个
004011CD  |.  83C4 10       add esp,0x10
004011D0  |.  8945 EC       mov [local.5],eax
004011D3  |.  8D45 FC       lea eax,[local.1]
004011D6  |.  50            push eax
004011D7  |.  68 40000000   push 0x40
004011DC  |.  68 04000000   push 0x4
004011E1  |.  FF75 EC       push [local.5]                                          ;  CrackMe.00483CB5
004011E4  |.  B8 00000000   mov eax,0x0
004011E9  |.  E8 00070000   call CrackMe.004018EE
004011EE  |.  8945 E4       mov [local.7],eax
004011F1  |.  837D E4 00    cmp [local.7],0x0
004011F5  |.  0F85 41000000 jnz CrackMe.0040123C                                    ;如果强行改jmp,下面会出现内存不可读的错误


根据004011D0 和内存不可读的那里,可知道,注册码第一项的16进制应该是内存中的地址,所以我们假定一个:

4321123-123-123-123-123,这样就可以过了第二处验证,继续跟:

3、继续向下

[Asm] 纯文本查看 复制代码
0040125E  |.  8B5D F0       mov ebx,[local.4]                                       ;  第二段注册码送ebx
00401261  |.  8B03          mov eax,dword ptr ds:[ebx]
00401263  |.  85C0          test eax,eax
00401265  |.  75 05         jnz short CrackMe.0040126C
00401267  |.  B8 5E3C4800   mov eax,CrackMe.00483C5E
0040126C  |>  50            push eax
0040126D  |.  68 01000000   push 0x1
00401272  |.  BB E01A4000   mov ebx,CrackMe.00401AE0
00401277  |.  E8 66060000   call CrackMe.004018E2                                   ;  第二段变16进制送al

004012BE  |.  8B5D E4       mov ebx,[local.7]
004012C1  |.  8B03          mov eax,dword ptr ds:[ebx]
004012C3  |.  85C0          test eax,eax
004012C5  |.  75 05         jnz short CrackMe.004012CC
004012C7  |.  B8 5E3C4800   mov eax,CrackMe.00483C5E
004012CC  |>  50            push eax
004012CD  |.  68 01000000   push 0x1
004012D2  |.  BB E01A4000   mov ebx,CrackMe.00401AE0
004012D7  |.  E8 06060000   call CrackMe.004018E2                                   ;  第三段

0040131E  |.  8B5D D8       mov ebx,[local.10]                                      ;  CrackMe.004147F6
00401321  |.  8B03          mov eax,dword ptr ds:[ebx]
00401323  |.  85C0          test eax,eax
00401325  |.  75 05         jnz short CrackMe.0040132C
00401327  |.  B8 5E3C4800   mov eax,CrackMe.00483C5E
0040132C  |>  50            push eax
0040132D  |.  68 01000000   push 0x1
00401332  |.  BB E01A4000   mov ebx,CrackMe.00401AE0
00401337  |.  E8 A6050000   call CrackMe.004018E2                                   ;  第四段

0040137E  |.  8B5D CC       mov ebx,[local.13]
00401381  |.  8B03          mov eax,dword ptr ds:[ebx]
00401383  |.  85C0          test eax,eax
00401385  |.  75 05         jnz short CrackMe.0040138C
00401387  |.  B8 5E3C4800   mov eax,CrackMe.00483C5E
0040138C  |>  50            push eax
0040138D  |.  68 01000000   push 0x1
00401392  |.  BB E01A4000   mov ebx,CrackMe.00401AE0
00401397  |.  E8 46050000   call CrackMe.004018E2                                   ;  第五段


一直向下,来到这里

[Asm] 纯文本查看 复制代码
004014C2  |.  68 03000000   push 0x3
004014C7  |.  BB F0234000   mov ebx,CrackMe.004023F0
004014CC  |.  E8 11040000   call CrackMe.004018E2                                   ;  跟进去看看
004014D1  |.  83C4 28       add esp,0x28


F7单步到这
[Asm] 纯文本查看 复制代码
004023F0   .  57            push edi
004023F1   .  8B7C24 10     mov edi,dword ptr ss:[esp+0x10]
004023F5   .  8B47 08       mov eax,dword ptr ds:[edi+0x8]
004023F8   .  8BC8          mov ecx,eax
004023FA   .  C1E8 1D       shr eax,0x1D


F8向下走

********

[Asm] 纯文本查看 复制代码
00402466   .  C1E9 02       shr ecx,0x2
00402469   .  F3:A5         rep movs dword ptr es:[edi],dword ptr ds:[esi]          ;  
0040246B   .  8BCA          mov ecx,edx
0040246D   .  83E1 03       and ecx,0x3
00402470   .  F3:A4         rep movs byte ptr es:[edi],byte ptr ds:[esi]


********

这里注意00402469,这里是把ds:[esi]里面的数据copy到自己乱写的地址处,而ds:[esi]里的数据是什么呢?
看数据窗口
ds:[esi]=[00173BD0]=7B7B7B7B    ,发现了吗就是我们后面四段的数据,改成10进制就是123123123123
es:[edi]=[0041EF63]=52FF6A14

暂时不知道这里什么用,我们F8接着向下走,来到

[Asm] 纯文本查看 复制代码
00401521  |.  68 04000000   push 0x4
00401526  |.  FF75 EC       push [local.5]                                          ;  CrackMe.0041EF63
00401529  |.  B8 00000000   mov eax,0x0
0040152E  |.  E8 BB030000   call CrackMe.004018EE
00401533  |.  E8 57020000   call CrackMe.0040178F                                   ;  跟进去看看


0040178F  /$  55            push ebp
00401790  |.  8BEC          mov ebp,esp
00401792  |.  81EC 20000000 sub esp,0x20
00401798  |.  8B1D C08E4A00 mov ebx,dword ptr ds:[0x4A8EC0]
0040179E  |.  8B0B          mov ecx,dword ptr ds:[ebx]
004017A0  |.  41            inc ecx


一直来到

[Asm] 纯文本查看 复制代码
00401807  |.  DD45 E8       fld qword ptr ss:[ebp-0x18]                             ;  把ss:[ebp-0x18]浮点数弹到ST0
0040180A  |.  DC05 B13C4800 fadd qword ptr ds:[0x483CB1]                            ;  ST0里的浮点数加上ds:[0x483CB1]里的浮点数
00401810  |.  DD5D E0       fstp qword ptr ss:[ebp-0x20]
00401813  |.  DD45 E0       fld qword ptr ss:[ebp-0x20]
00401816  |.  E8 4DFFFFFF   call CrackMe.00401768                                   ;  跟进去看看


00401768  /$  55            push ebp
00401769  |.  8BEC          mov ebp,esp
0040176B  |.  83C4 F4       add esp,-0xC
0040176E  |.  D97D FE       fstcw word ptr ss:[ebp-0x2]
00401771  |.  66:8B45 FE    mov ax,word ptr ss:[ebp-0x2]
00401775  |.  80CC 0C       or ah,0xC
00401778  |.  66:8945 FC    mov word ptr ss:[ebp-0x4],ax
0040177C  |.  D96D FC       fldcw word ptr ss:[ebp-0x4]
0040177F  |.  DF7D F4       fistp qword ptr ss:[ebp-0xC]                            ;  把ST0弹到ss:[ebp-0xC]
00401782  |.  D96D FE       fldcw word ptr ss:[ebp-0x2]
00401785  |.  8B45 F4       mov eax,[local.3]                                       ;  把ss:[ebp-0xC]的值给eax
00401788  |.  8B55 F8       mov edx,[local.2]                                       ;  CrackMe.0041EF63
0040178B  |.  8BE5          mov esp,ebp
0040178D  |.  5D            pop ebp
0040178E  \.  C3            retn


向下走

[Asm] 纯文本查看 复制代码
00401538  |.  8945 EC       mov [local.5],eax                                       ;  CrackMe.0041EF65
0040153B  |.  837D EC 01    cmp [local.5],0x1
0040153F  |.  0F84 41000000 je CrackMe.00401586                                     ;  eax与1比较,不为1就死


还记得eax现在是什么值吗?对了,就是00401785处给他赋的值,也就是st0的值,那怎么办呢?

还记得*****段的copy语句吗?是的,我们只要把我们注册码第一段的地址改成483CB1+4(双精度高8位)处,不就可以改ds:[0x483CB1]里面的数值了吗?

那数值改成多少呢?

现在我们第一位注册码为483CB5,十进制是4734133,他要加上那个数值第于1,就可以通过,那么我们就改那个数值为-4734132,换成浮点数是:C1520F2D00000000

他的高8位在内存中的写应该是 2D 0F 52 C1 这与就是代表了我们后面四段的注册码,

所以注册码连起来就是4734133-45-15-82-193

------------------------------------------------------------------------------

                                                       2018年02月24日 16:54:40

免费评分

参与人数 6威望 +1 吾爱币 +18 热心值 +6 收起 理由
喵~~~呜 + 1 + 1 我很赞同!
zbnysjwsnd8 + 3 + 1 我很赞同!
Hmily + 1 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
℡LOVE + 2 + 1 NB
专修火箭卫星 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
蓝余 + 1 + 1 2008的元老等级好低

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

就是随便看看 发表于 2018-3-11 00:01 来自手机
枫笑九洲 发表于 2018-2-24 17:00
注册码不止一个
4734133-45-271-82-449也行,后面四段只要低2位符合规律都成


根据004011D0 和内存不可读的那里,可知道,注册码第一项的16进制应该是内存中的地址,
这段话不理解
就是随便看看 发表于 2018-2-26 10:58 来自手机
枫笑九洲 发表于 2018-2-24 17:00
注册码不止一个
4734133-45-271-82-449也行,后面四段只要低2位符合规律都成

大佬,第二个验证不太明白是怎么来的
 楼主| 枫笑九洲 发表于 2018-2-24 17:00
注册码不止一个
4734133-45-271-82-449也行,后面四段只要低2位符合规律都成
Hmily 发表于 2018-2-24 17:27
代码可以用代码框处理一下,会好看很多。
小火龙 发表于 2018-2-24 18:23
谢谢分享,学习一下!
雪.|有妳、 发表于 2018-2-24 18:47
谢谢分享 学习
vanapple1 发表于 2018-2-24 20:35
云里雾里,好牛掰的
zbnysjwsnd8 发表于 2018-2-24 22:15
厉害 支持一下。
头像被屏蔽
onlyjim 发表于 2018-2-25 11:59
提示: 作者被禁止或删除 内容自动屏蔽
山塘街 发表于 2018-2-25 12:25
谢谢分享,学习一下
linuxprobe 发表于 2018-2-25 13:28
你太谦虚了,像你这种一发帖子就自称大牛的人,我们和你都不是一个档次的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 03:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表