首页
社区
课程
招聘
[旧帖] [求助]帮忙分析破解过程 0.00雪花
发表于: 2008-8-26 10:27 4212

[旧帖] [求助]帮忙分析破解过程 0.00雪花

2008-8-26 10:27
4212
请求老鸟指点。。。。。

文章里的好多问号

和空注释的地方(不是所有。。)

都是不懂。。不明白的地方。。。

希望老鸟。。。达人们指点。。。。

004417C6    55              push    ebp
004417C7    68 60184400     push    00441860
004417CC    64:FF30         push    dword ptr fs:[eax]
004417CF    64:8920         mov     dword ptr fs:[eax], esp
004417D2    8D55 FC         lea     edx, dword ptr [ebp-4]
004417D5    8B83 C8020000   mov     eax, dword ptr [ebx+2C8]
004417DB    E8 C419FEFF     call    004231A4                         ; 放入假注册码
004417E0    8B45 FC         mov     eax, dword ptr [ebp-4]
004417E3    50              push    eax                              ; 压入EAX
004417E4    8D55 F4         lea     edx, dword ptr [ebp-C]
004417E7    8B83 C4020000   mov     eax, dword ptr [ebx+2C4]
004417ED    E8 B219FEFF     call    004231A4
004417F2    8B45 F4         mov     eax, dword ptr [ebp-C]           ; 放入用户名
004417F5    8D55 F8         lea     edx, dword ptr [ebp-8]
004417F8    E8 FBFEFFFF     call    004416F8                         ; 这里是算法。。。F7进入
004417FD    8B55 F8         mov     edx, dword ptr [ebp-8]           ; 这里出现了注册码
00441800    58              pop     eax                              ; 弹出注册码
00441801    E8 3E23FCFF     call    00403B44                         ; 关键CALL(跟进去吧。。)
00441806    75 1A           jnz     short 00441822                   ; 爆破地点
00441808    6A 40           push    40
0044180A    B9 6C184400     mov     ecx, 0044186C                    ; ASCII "U made it"
0044180F    BA 78184400     mov     edx, 00441878                    ; ASCII "Right Code"
00441814    A1 302C4400     mov     eax, dword ptr [442C30]
00441819    8B00            mov     eax, dword ptr [eax]
0044181B    E8 D4D6FFFF     call    0043EEF4
00441820    EB 18           jmp     short 0044183A
00441822    6A 10           push    10
00441824    B9 84184400     mov     ecx, 00441884                    ; ASCII "Error"
00441829    BA 8C184400     mov     edx, 0044188C                    ; ASCII "Wrong Code"
0044182E    A1 302C4400     mov     eax, dword ptr [442C30]
00441833    8B00            mov     eax, dword ptr [eax]
00441835    E8 BAD6FFFF     call    0043EEF4
0044183A    33C0            xor     eax, eax
0044183C    5A              pop     edx
0044183D    59              pop     ecx
0044183E    59              pop     ecx

进入关键CALL(call    00403B44)

004416F8    53              push    ebx
004416F9    56              push    esi
004416FA    57              push    edi
004416FB    83C4 DC         add     esp, -24
004416FE    891424          mov     dword ptr [esp], edx
00441701    8BF8            mov     edi, eax                         ; 将用户名放入EDI中
00441703    BB 05033949     mov     ebx, 49390305                    ; 某个固定值放入EBX
00441708    BE 20126348     mov     esi, 48631220                    ; 某个固定值放入ESI
0044170D    8BC7            mov     eax, edi                         ; 怎么有放回去了??? 不明白??在搞什么?
0044170F    E8 2023FCFF     call    00403A34                         ; 比较什么???去看看??
00441714    85C0            test    eax, eax                         ; 出来了。。。上面比较用户名是否为空
00441716    7E 2E           jle     short 00441746                   ; 若小于等于则跳
00441718    BA 01000000     mov     edx, 1                           ; 将1放入EDX中
0044171D    33C9            xor     ecx, ecx
0044171F    8A4C17 FF       mov     cl, byte ptr [edi+edx-1]         ; 取用户名的第一位
00441723    33D9            xor     ebx, ecx                         ; 异或它们
00441725    33F3            xor     esi, ebx                         ; 异或它们
00441727    F6C3 01         test    bl, 1                            ; EBX的低八位和1比较?
0044172A    74 0F           je      short 0044173B                   ; 相等~~跳了
0044172C    D1FB            sar     ebx, 1
0044172E    79 03           jns     short 00441733
00441730    83D3 00         adc     ebx, 0
00441733    81F3 11032001   xor     ebx, 1200311
00441739    EB 07           jmp     short 00441742
0044173B    D1FB            sar     ebx, 1
0044173D    79 03           jns     short 00441742
0044173F    83D3 00         adc     ebx, 0
00441742    42              inc     edx
00441743    48              dec     eax
00441744  ^ 75 D7           jnz     short 0044171D                   ; 回跳了。。。。(算法?)
00441746    8B0424          mov     eax, dword ptr [esp]             ; 上面逐位取用户名。。。看不懂算法。。F4直接到这里
00441749    50              push    eax
0044174A    8BC3            mov     eax, ebx
0044174C    25 FFFF0000     and     eax, 0FFFF
00441751    894424 08       mov     dword ptr [esp+8], eax
00441755    C64424 0C 00    mov     byte ptr [esp+C], 0
0044175A    C1EB 10         shr     ebx, 10
0044175D    895C24 10       mov     dword ptr [esp+10], ebx          ; 出现用户名
00441761    C64424 14 00    mov     byte ptr [esp+14], 0
00441766    8BC6            mov     eax, esi
00441768    25 FFFF0000     and     eax, 0FFFF
0044176D    894424 18       mov     dword ptr [esp+18], eax
00441771    C64424 1C 00    mov     byte ptr [esp+1C], 0
00441776    C1EE 10         shr     esi, 10
00441779    897424 20       mov     dword ptr [esp+20], esi
0044177D    C64424 24 00    mov     byte ptr [esp+24], 0
00441782    8D5424 08       lea     edx, dword ptr [esp+8]
00441786    B9 03000000     mov     ecx, 3
0044178B    B8 A4174400     mov     eax, 004417A4                    ; ASCII "%.4x-%.4x-%.4x-%.4x"
00441790    E8 6F68FCFF     call    00408004                         ; 这里进去看过了。。。是出现注册码的地方。根本就看不懂(略过)
00441795    83C4 24         add     esp, 24
00441798    5F              pop     edi                              ; 堆栈里开始出现真码
00441799    5E              pop     esi
0044179A    5B              pop     ebx
0044179B    C3              retn

文章里的好多问号

和空注释的地方(不是所有。。)

都是不懂。。不明白的地方。。。

希望老鸟。。。达人们指点。。。。

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
00441701    8BF8            mov     edi, eax                         ; 将用户名放入EDI中
00441703    BB 05033949     mov     ebx, 49390305                    ; 某个固定值放入EBX
00441708    BE 20126348     mov     esi, 48631220                    ; 某个固定值放入ESI
0044170D    8BC7            mov     eax, edi                         ; 怎么有放回去了??? 不明白??在搞什么?  将用户名放入EAX中
2008-8-27 12:13
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
0044171D   > /33C9          xor     ecx, ecx       清空

0044171F   . |8A4C17 FF     mov     cl, byte ptr [edi+edx-1]   获取下一字节

00441723   . |33D9          xor     ebx, ecx         关键了   EBX  当循环结束后 得到了注册码的前 8 位
00441725   . |33F3          xor     esi, ebx                  ESI                             后 8 位

00441727   . |F6C3 01       test    bl, 1
0044172A   . |74 0F         je      short 0044173B
0044172C   . |D1FB          sar     ebx, 1
0044172E   . |79 03         jns     short 00441733
00441730   . |83D3 00       adc     ebx, 0
00441733   > |81F3 11032001 xor     ebx, 1200311
00441739   . |EB 07         jmp     short 00441742
0044173B   > |D1FB          sar     ebx, 1
0044173D   . |79 03         jns     short 00441742
0044173F   . |83D3 00       adc     ebx, 0
00441742   > |42            inc     edx
00441743   . |48            dec     eax
00441744   .^\75 D7         jnz     short 0044171D        判断循环是否结束

00441746   >  8B0424        mov     eax, dword ptr [esp]
00441749   .  50            push    eax
0044174A   .  8BC3          mov     eax, ebx
0044174C   .  25 FFFF0000   and     eax, 0FFFF              取 EBX 的 前四位 作为第一段  注册码
00441751   .  894424 08     mov     dword ptr [esp+8], eax  
00441755   .  C64424 0C 00  mov     byte ptr [esp+C], 0
0044175A   .  C1EB 10       shr     ebx, 10
0044175D   .  895C24 10     mov     dword ptr [esp+10], ebx                      第二段
00441761   .  C64424 14 00  mov     byte ptr [esp+14], 0
00441766   .  8BC6          mov     eax, esi
00441768   .  25 FFFF0000   and     eax, 0FFFF
0044176D   .  894424 18     mov     dword ptr [esp+18], eax 取 ESI 的 前四位 作为第三段
00441771   .  C64424 1C 00  mov     byte ptr [esp+1C], 0
00441776   .  C1EE 10       shr     esi, 10
00441779   .  897424 20     mov     dword ptr [esp+20], esi                      第 四 段

其实很多CM都有比较想尽的分析,我这里只是粗略帮你看一下 ,一切靠自己
2008-8-27 12:47
0
雪    币: 200
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=yingyue;501695]0044171D   > /33C9          xor     ecx, ecx       清空

0044171F   . |8A4C17 FF     mov     cl, byte ptr [edi+edx-1]   获取下一字节

00441723   . |33...[/QUOTE]

谢谢  我知道了
2008-8-27 17:58
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还是比较简单的
上传的附件:
2008-8-27 18:31
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
都是高手哦,我来踩 一下
2008-8-27 21:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
啊,看不懂啊!
2008-8-28 21:45
0
雪    币: 889
活跃值: (4027)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
8
学习了  算法俺根本看不懂  
2008-8-30 10:53
0
游客
登录 | 注册 方可回帖
返回
//