首页
社区
课程
招聘
[原创]简单算法分析 适合各大小鸟,虽然简单,但十分经典!
发表于: 2006-8-5 20:17 4421

[原创]简单算法分析 适合各大小鸟,虽然简单,但十分经典!

2006-8-5 20:17
4421
今天在收集资料中无意发现一段算法代码,虽然很简单,但十分经典,适合学习进阶用,大家一起来分析一下吧,看完了你会有很大的收获的

有效注册码为 01234567881=5009990001

代码如下:

0047C43A   |.  8B8C24 2C01>mov ecx,dword ptr ss:[esp+12C]              ; 把01234567881=5009990001  (注册码)放到ecx里
0047C441   |.  B3 0C       mov bl,0C
0047C443   |.  BA 09000000 mov edx,9                //这里别去多想,注册码我省略了部分,因为是双重验证,这里只给了一重验证!
0047C448   |.  8A41 04     mov al,byte ptr ds:[ecx+4]                  ;  依次读入0123456788
0047C44B   |.  04 05       add al,5
0047C44D   |>  02040A      /add al,byte ptr ds:[edx+ecx]
0047C450   |.  42          |inc edx
0047C451   |.  83FA 13     |cmp edx,13
0047C454   |.^ 7C F7       \jl short Jensoft.0047C44D
0047C456   |.  BA 15000000 mov edx,15
0047C45B   |>  02040A      /add al,byte ptr ds:[edx+ecx]               ;  依次读入5009990001
0047C45E   |.  42          |inc edx
0047C45F   |.  83FA 1F     |cmp edx,1F
0047C462   |.^ 7C F7       \jl short Jensoft.0047C45B
0047C464   |.  884424 10   mov byte ptr ss:[esp+10],al
0047C468   |.  B8 09000000 mov eax,9
0047C46D   |>  8A1408      /mov dl,byte ptr ds:[eax+ecx]               ;  依次取0123456788 的16进制值
0047C470   |.  2ADA        |sub bl,dl                                  ;  b1=b1-dl
0047C472   |.  40          |inc eax
0047C473   |.  83F8 13     |cmp eax,13                                
0047C476   |.^ 7C F5       \jl short Jensoft.0047C46D                   //没读完继续读,读完了就向下
0047C478   |.  B8 15000000 mov eax,15
0047C47D   |>  8A1408      /mov dl,byte ptr ds:[eax+ecx]               ;  依次取5009990001的16进制值
0047C480   |.  2ADA        |sub bl,dl
0047C482   |.  40          |inc eax
0047C483   |.  83F8 1F     |cmp eax,1F
0047C486   |.^ 7C F5       \jl short Jensoft.0047C47D                   //没读完继续读,读完了就向下

下面是关键运算部分:
0047C488   |.  8B5424 10   mov edx,dword ptr ss:[esp+10]
0047C48C   |.  889C24 2401>mov byte ptr ss:[esp+124],bl
0047C493   |.  8B8424 2401>mov eax,dword ptr ss:[esp+124]
0047C49A   |.  81E2 FF0000>and edx,0FF
0047C4A0   |.  25 FF000000 and eax,0FF
0047C4A5   |.  BE D7000000 mov esi,0D7
0047C4AA   |.  0FAFC2      imul eax,edx
0047C4AD   |.  99          cdq
0047C4AE   |.  F7FE        idiv esi
0047C4B0   |.  0FBE71 05   movsx esi,byte ptr ds:[ecx+5]
0047C4B4   |.  885424 10   mov byte ptr ss:[esp+10],dl
0047C4B8   |.  889424 2401>mov byte ptr ss:[esp+124],dl
0047C4BF   |.  8B4424 10   mov eax,dword ptr ss:[esp+10]
0047C4C3   |.  33D2        xor edx,edx
0047C4C5   |.  25 FF000000 and eax,0FF
0047C4CA   |.  8BE8        mov ebp,eax
0047C4CC   |.  8A5404 14   mov dl,byte ptr ss:[esp+eax+14]
0047C4D0   |.  3BF2        cmp esi,edx                                  ;  对比 esi和edx
0047C4D2   |.  74 0E       je short Jensoft.0047C4E2                    ;  相等就是正确的注册码,否则就是错误跳向OVER

-----------------请大家一起分析,并给出算法,他是怎么让esi 和 edx 相等的~~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
支持的说!!
2006-8-9 17:09
0
游客
登录 | 注册 方可回帖
返回
//