首页
社区
课程
招聘
这个是我自己写的CRACKME,可是我自己实在是跟不下来,哪位有时间,跟一下,写个注释让我看看,谢谢了
发表于: 2007-12-23 18:05 4594

这个是我自己写的CRACKME,可是我自己实在是跟不下来,哪位有时间,跟一下,写个注释让我看看,谢谢了

2007-12-23 18:05
4594
OD下断点00450428

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
name:  lgjxj

code:   lgjxjgxl

很简单的 CM ,下面就是处理的位置了,我没空看了
——————————————————————————
0045069C  |> /33DB          /xor     ebx, ebx
0045069E  |. |BF 801D4500   |mov     edi, 00451D80
004506A3  |> |8D45 88       |/lea     eax, dword ptr [ebp-78]
004506A6  |. |8B55 F8       ||mov     edx, dword ptr [ebp-8]         ;  用户名补足8位
004506A9  |. |8A5432 FF     ||mov     dl, byte ptr [edx+esi-1]       ;  用户名字符
004506AD  |. |E8 923AFBFF   ||call    00404144
004506B2  |. |8B45 88       ||mov     eax, dword ptr [ebp-78]
004506B5  |. |50            ||push    eax
004506B6  |. |8D55 84       ||lea     edx, dword ptr [ebp-7C]
004506B9  |. |8BC3          ||mov     eax, ebx
004506BB  |. |E8 DC75FBFF   ||call    00407C9C
004506C0  |. |8B55 84       ||mov     edx, dword ptr [ebp-7C]
004506C3  |. |58            ||pop     eax
004506C4  |. |E8 9F3CFBFF   ||call    00404368
004506C9  |. |75 0E         ||jnz     short 004506D9
004506CB  |. |8D45 F8       ||lea     eax, dword ptr [ebp-8]
004506CE  |. |E8 A13DFBFF   ||call    00404474
004506D3  |. |8A17          ||mov     dl, byte ptr [edi]
004506D5  |. |885430 FF     ||mov     byte ptr [eax+esi-1], dl
004506D9  |> |43            ||inc     ebx
004506DA  |. |47            ||inc     edi
004506DB  |. |83FB 0A       ||cmp     ebx, 0A
004506DE  |.^|75 C3         |\jnz     short 004506A3
004506E0  |. |8B45 F8       |mov     eax, dword ptr [ebp-8]
004506E3  |. |8A5C30 FF     |mov     bl, byte ptr [eax+esi-1]
004506E7  |. |8BC3          |mov     eax, ebx
004506E9  |. |3C 41         |cmp     al, 41
004506EB  |. |72 17         |jb      short 00450704
004506ED  |. |3C 5A         |cmp     al, 5A
004506EF  |. |77 13         |ja      short 00450704
004506F1  |. |8D45 F8       |lea     eax, dword ptr [ebp-8]
004506F4  |. |E8 7B3DFBFF   |call    00404474
004506F9  |. |33D2          |xor     edx, edx
004506FB  |. |8AD3          |mov     dl, bl
004506FD  |. |83C2 20       |add     edx, 20
00450700  |. |885430 FF     |mov     byte ptr [eax+esi-1], dl
00450704  |> |46            |inc     esi
00450705  |. |83FE 09       |cmp     esi, 9
00450708  |.^\75 92         \jnz     short 0045069C
0045070A  |.  8D55 80       lea     edx, dword ptr [ebp-80]
0045070D  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
00450710  |.  8B80 FC020000 mov     eax, dword ptr [eax+2FC]
00450716  |.  E8 55EEFDFF   call    0042F570
0045071B  |.  8B45 80       mov     eax, dword ptr [ebp-80]
0045071E  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
00450721  |.  E8 423CFBFF   call    00404368                          最后比较的 CALL
00450726  |.  75 10         jnz     short 00450738
2007-12-23 23:42
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
当然很简单了,没敢向麻烦的写,怕自己跟不下来
结果,虽然简单,还是跟不下来,郁闷
2007-12-24 06:50
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
过程刚开始就来了一个16次循环,这个是什么意思呢???
00450428  /.  55            push    ebp                              ;  点击注册按钮后的处理流程
00450429  |.  8BEC          mov     ebp, esp
0045042B  |.  B9 10000000   mov     ecx, 10
00450430  |>  6A 00         /push    0
00450432  |.  6A 00         |push    0
00450434  |.  49            |dec     ecx
00450435  |.^ 75 F9         \jnz     short 00450430

我记得程序中没这么写啊
2007-12-24 07:59
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
5
是不是给你的局部变量清理地方呢?我没分析,只是猜测
2007-12-24 08:29
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
恩,是有一个SETLENGTH(AA,8) 这个语句,可是这是给AA弄8个字节的空间,不是16个啊

还有这个语句是什么意思
00450562  |.  8D55 C4       lea     edx, dword ptr [ebp-3C]
00450565  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
00450568  |.  8B80 F8020000 mov     eax, dword ptr [eax+2F8]         ;  EDIT1.HANDLE
0045056E  |.  E8 FDEFFDFF   call    0042F570
00450573  |.  FF75 C4       push    dword ptr [ebp-3C]
00450576  |.  8D55 BC       lea     edx, dword ptr [ebp-44]
00450579  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
0045057C  |.  8B80 F8020000 mov     eax, dword ptr [eax+2F8]         ;  EDIT1.HANDLE
00450582  |.  E8 E9EFFDFF   call    0042F570
00450587  |.  8B45 BC       mov     eax, dword ptr [ebp-44]
0045058A  |.  8A50 01       mov     dl, byte ptr [eax+1]
0045058D  |.  8D45 C0       lea     eax, dword ptr [ebp-40]
00450590  |.  E8 AF3BFBFF   call    00404144

一堆的EBP+- 一堆的MOV LEA CALL 这都怎么分析啊 ???
就是我自己写的,我也看不懂啊
2007-12-24 08:51
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
7
一般情况下,EBP+XXX 是在取所分析函数的参数,EBP-XXX是在操作所分析函数的局部变量.
LEA 是用来取地址的,不知道你用什么语言写的,相当于取指针,可能不太确切.你多观察一下每条指令执行完,各操作数的变化就会发现他在做什么了.
搜索了一下 SetLongth 好像是在给数组分配空间 ,其实上面的程序分配的可不仅仅是16个字节,而是1次循环就8个字节了。之所以这样分配应该跟你的数组大小相关吧
2007-12-24 09:20
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
原代码没在身边
我的大致思路就是,取用户名,如果用户长度小于4 ,程序直接退出
如果大于8 截取前8位
如果=4 那么用输入的注册名的第2位第4位第 1位第 3位 补足8位
如果=5 那么用输入的注册名的第2位第4位第 1位  补足8位
如果=6 那么用输入的注册名的第2位第4位  补足8位
如果=7 那么用输入的注册名的第2位  补足8位
如果有数字,则另有一个表,采用查表法替代字符
字符补完8位,就是序列号了,我只写到这,没敢往深了写
2007-12-24 09:47
0
游客
登录 | 注册 方可回帖
返回
//