先运行看看,,,哦这个注册机制很聪明。。。注册完了就重新运行。。
如果想从此处下手是不能做任何事的。。。
它实际上是把你的注册信息保存到了注册表中。。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\gb2big5]
"RegUser"="123456"
"RegNo"="00000000"
它在你按下那个按钮时做的就是这些
这怎么办呢。。。
先用W32ASM看看吧。。。
看看有那些字符给我们引路。。
哦。。
我们看到了两处
"RegUser
"RegNo"
;..............
"RegUser"
"RegNo"
点击看看之后发现有一处是我们刚才注册用到的位置..
另一处就是我们要找的位置。。。
0058387A |. 8D4D FC lea ecx, dword ptr [ebp-4]
0058387D |. BA BC395800 mov edx, 005839BC ; reguser
00583882 |. 8BC3 mov eax, ebx
00583884 |. E8 8F4CF1FF call 00498518
00583889 |. 8B55 FC mov edx, dword ptr [ebp-4]
0058388C |. B8 00EC5B00 mov eax, 005BEC00
00583891 |. E8 7E0DE8FF call 00404614
00583896 |. 8D4D F8 lea ecx, dword ptr [ebp-8]
00583899 |. BA CC395800 mov edx, 005839CC ; regno
0058389E |. 8BC3 mov eax, ebx
005838A0 |. E8 734CF1FF call 00498518
005838A5 |. 8B45 F8 mov eax, dword ptr [ebp-8]
005838A8 |. 50 push eax
005838A9 |. 8D4D F4 lea ecx, dword ptr [ebp-C]
005838AC |. BA DC395800 mov edx, 005839DC ; gb2big5china
005838B1 |. A1 00EC5B00 mov eax, dword ptr [5BEC00]
005838B6 |. E8 1147FDFF call 00557FCC //此处产生序列号
005838BB |. 8B55 F4 mov edx, dword ptr [ebp-C]
005838BE |. 58 pop eax
005838BF |. E8 F810E8FF call 004049BC 此处比较 可在这里找到序烈号
005838C4 |. 75 07 jnz short 005838CD 不同就跳咯。。。想爆就改这。。。
call 00557FCC //此处产生序列号
代码有点长。。。
0055752E |. BE 3CA15800 mov esi, 0058A13C
00557533 |. BF 1CA15800 mov edi, 0058A11C
00557538 |. 8BEC mov ebp, esp
0055753A |. 8A55 07 mov dl, byte ptr [ebp+7] ;dl=a7
0055753D |. F6C2 40 test dl, 40
00557540 |. 0F97C0 seta al ;
00557543 |. 8807 mov byte ptr [edi], al
00557545 |. F6C2 80 test dl, 80
00557548 |. 0F97C0 seta al
0055754B |. 8806 mov byte ptr [esi], al
/////////////////////////////////////
0055754D |. 8A4D 06 mov cl, byte ptr [ebp+6] ;cl=a6
00557550 |. F6C1 40 test cl, 40
00557553 |. 0F97C0 seta al
00557556 |. 8847 01 mov byte ptr [edi+1], al
00557559 |. F6C1 80 test cl, 80
0055755C |. 0F97C0 seta al
0055755F |. 8846 01 mov byte ptr [esi+1], al
///////////////////////////
00557562 |. 8A45 05 mov al, byte ptr [ebp+5] ;al=a5
00557565 |. F6C0 40 test al, 40
00557568 |. 0F97C3 seta bl
0055756B |. 885F 02 mov byte ptr [edi+2], bl
0055756E |. F6C0 80 test al, 80
00557571 |. 0F97C3 seta bl
00557574 |. 885E 02 mov byte ptr [esi+2], bl
//////////////////////////////
00557577 |. F645 04 40 test byte ptr [ebp+4], 40
0055757B |. 0F97C3 seta bl
0055757E |. 885F 03 mov byte ptr [edi+3], bl
00557581 |. F645 04 80 test byte ptr [ebp+4], 80
00557585 |. 0F97C3 seta bl
00557588 |. 885E 03 mov byte ptr [esi+3], bl
///////////////////////////////
0055758B |. F645 03 40 test byte ptr [ebp+3], 40
0055758F |. 0F97C3 seta bl
00557592 |. 885F 04 mov byte ptr [edi+4], bl
00557595 |. F645 03 80 test byte ptr [ebp+3], 80
00557599 |. 0F97C3 seta bl
0055759C |. 885E 04 mov byte ptr [esi+4], bl
///////////////////////
0055759F |. F645 02 40 test byte ptr [ebp+2], 40
005575A3 |. 0F97C3 seta bl
005575A6 |. 885F 05 mov byte ptr [edi+5], bl
005575A9 |. F645 02 80 test byte ptr [ebp+2], 80
005575AD |. 0F97C3 seta bl
005575B0 |. 885E 05 mov byte ptr [esi+5], bl
//////////////////////////
005575B3 |. F645 01 40 test byte ptr [ebp+1], 40
005575B7 |. 0F97C3 seta bl
005575BA |. 885F 06 mov byte ptr [edi+6], bl
005575BD |. F645 01 80 test byte ptr [ebp+1], 80
005575C1 |. 0F97C3 seta bl
005575C4 |. 885E 06 mov byte ptr [esi+6], bl
/////////////////////////
005575C7 |. F645 00 40 test byte ptr [ebp], 40
005575CB |. 0F97C3 seta bl
005575CE |. 885F 07 mov byte ptr [edi+7], bl
005575D1 |. F645 00 80 test byte ptr [ebp], 80
005575D5 |. 0F97C3 seta bl
005575D8 |. 885E 07 mov byte ptr [esi+7], bl
上面的代码就是把输入的用户名的前8个字符的ASCLL依次和$ 40 $ 80 比较 来生成
两个序列 si di
==========================================================
005575DB |. F6C2 10 test dl, 10 ;dl=a7
005575DE |. 0F97C3 seta bl
005575E1 |. 885F 08 mov byte ptr [edi+8], bl bl<<<<
005575E4 |. F6C2 20 test dl, 20
005575E7 |. 0F97C2 seta dl
005575EA |. 8856 08 mov byte ptr [esi+8], dl
//////////////////////////
005575ED |. F6C1 10 test cl, 10 ;cl=a6
005575F0 |. 0F97C2 seta dl
005575F3 |. 8857 09 mov byte ptr [edi+9], dl
005575F6 |. F6C1 20 test cl, 20
005575F9 |. 0F97C2 seta dl
005575FC |. 8856 09 mov byte ptr [esi+9], dl
//////////////////////////
005575FF |. F6C0 10 test al, 10 al=a5
00557602 |. 0F97C2 seta dl
00557605 |. 8857 0A mov byte ptr [edi+A], dl dl<<<<<<<<<
00557608 |. F6C0 20 test al, 20
0055760B |. 0F97C0 seta al
0055760E |. 8846 0A mov byte ptr [esi+A], al
//////////////////////////////
00557611 |. F645 04 10 test byte ptr [ebp+4], 10
00557615 |. 0F97C0 seta al
00557618 |. 8847 0B mov byte ptr [edi+B], al
0055761B |. F645 04 20 test byte ptr [ebp+4], 20
0055761F |. 0F97C0 seta al
00557622 |. 8846 0B mov byte ptr [esi+B], al
/////////////////////////////////
00557625 |. F645 03 10 test byte ptr [ebp+3], 10
00557629 |. 0F97C0 seta al
0055762C |. 8847 0C mov byte ptr [edi+C], al
0055762F |. F645 03 20 test byte ptr [ebp+3], 20
00557633 |. 0F97C0 seta al
00557636 |. 8846 0C mov byte ptr [esi+C], al
////////////////////////
00557639 |. F645 02 10 test byte ptr [ebp+2], 10
0055763D |. 0F97C0 seta al
00557640 |. 8847 0D mov byte ptr [edi+D], al
00557643 |. F645 02 20 test byte ptr [ebp+2], 20
00557647 |. 0F97C0 seta al
0055764A |. 8846 0D mov byte ptr [esi+D], al
///////////////////////
0055764D |. F645 01 10 test byte ptr [ebp+1], 10
00557651 |. 0F97C0 seta al
00557654 |. 8847 0E mov byte ptr [edi+E], al
00557657 |. F645 01 20 test byte ptr [ebp+1], 20
0055765B |. 0F97C0 seta al
0055765E |. 8846 0E mov byte ptr [esi+E], al
///////////////////////
00557661 |. F645 00 10 test byte ptr [ebp], 10
00557665 |. 0F97C0 seta al
00557668 |. 8847 0F mov byte ptr [edi+F], al
0055766B |. F645 00 20 test byte ptr [ebp], 20
0055766F |. 0F97C0 seta al
00557672 |. 8846 0F mov byte ptr [esi+F], al
上面的代码就是把输入的用户名的前8个字符的ASCLL依次和$ 10 $ 20 比较 改变
两个序列 si di的值
//////////////////////////>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
00557675 |. F645 07 04 test byte ptr [ebp+7], 4
00557679 |. 0F97C0 seta al
0055767C |. 8847 10 mov byte ptr [edi+10], al
0055767F |. F645 07 08 test byte ptr [ebp+7], 8
00557683 |. 0F97C0 seta al
00557686 |. 8846 10 mov byte ptr [esi+10], al
////////////////////////
00557689 |. F645 06 04 test byte ptr [ebp+6], 4
0055768D |. 0F97C0 seta al
00557690 |. 8847 11 mov byte ptr [edi+11], al
00557693 |. F645 06 08 test byte ptr [ebp+6], 8
00557697 |. 0F97C0 seta al
0055769A |. 8846 11 mov byte ptr [esi+11], al
///////////////////
0055769D |. F645 05 04 test byte ptr [ebp+5], 4
005576A1 |. 0F97C0 seta al
005576A4 |. 8847 12 mov byte ptr [edi+12], al
005576A7 |. F645 05 08 test byte ptr [ebp+5], 8
005576AB |. 0F97C0 seta al
005576AE |. 8846 12 mov byte ptr [esi+12], al
/////////////////////////////
005576B1 |. F645 04 04 test byte ptr [ebp+4], 4
005576B5 |. 0F97C0 seta al
005576B8 |. 8847 13 mov byte ptr [edi+13], al
005576BB |. F645 04 08 test byte ptr [ebp+4], 8
005576BF |. 0F97C0 seta al
005576C2 |. 8846 13 mov byte ptr [esi+13], al
////////////////////////////////
005576C5 |. F645 03 04 test byte ptr [ebp+3], 4
005576C9 |. 0F97C0 seta al
005576CC |. 8847 14 mov byte ptr [edi+14], al
005576CF |. F645 03 08 test byte ptr [ebp+3], 8
005576D3 |. 0F97C0 seta al
005576D6 |. 8846 14 mov byte ptr [esi+14], al
////////////////////////
005576D9 |. F645 02 04 test byte ptr [ebp+2], 4
005576DD |. 0F97C0 seta al
005576E0 |. 8847 15 mov byte ptr [edi+15], al
005576E3 |. F645 02 08 test byte ptr [ebp+2], 8
005576E7 |. 0F97C0 seta al
005576EA |. 8846 15 mov byte ptr [esi+15], al
////////////////////////
005576ED |. F645 01 04 test byte ptr [ebp+1], 4
005576F1 |. 0F97C0 seta al
005576F4 |. 8847 16 mov byte ptr [edi+16], al
005576F7 |. F645 01 08 test byte ptr [ebp+1], 8
005576FB |. 0F97C0 seta al
005576FE |. 8846 16 mov byte ptr [esi+16], al
//////////////////////
00557701 |. F645 00 04 test byte ptr [ebp], 4
00557705 |. 0F97C0 seta al
00557708 |. 8847 17 mov byte ptr [edi+17], al
0055770B |. F645 00 08 test byte ptr [ebp], 8
0055770F |. 0F97C0 seta al
00557712 |. 8846 17 mov byte ptr [esi+17], al
///////////////////////////////
上面的代码就是把输入的用户名的前8个字符的ASCLL依次和$ 4 $8 比较 改变
两个序列 si di的值
00557715 |. 8A45 07 mov al, byte ptr [ebp+7] `%%%%%%%%%%%%%%%%
00557718 |. 24 01 and al, 1
0055771A |. 8847 18 mov byte ptr [edi+18], al
0055771D |. F645 07 02 test byte ptr [ebp+7], 2
00557721 |. 0F97C0 seta al
00557724 |. 8846 18 mov byte ptr [esi+18], al
/////////////////////
00557727 |. 8A45 06 mov al, byte ptr [ebp+6]
0055772A |. 24 01 and al, 1
0055772C |. 8847 19 mov byte ptr [edi+19], al
0055772F |. F645 06 02 test byte ptr [ebp+6], 2
00557733 |. 0F97C0 seta al
00557736 |. 8846 19 mov byte ptr [esi+19], al
///////////////////////
00557739 |. 8A45 05 mov al, byte ptr [ebp+5]
0055773C |. 24 01 and al, 1
0055773E |. 8847 1A mov byte ptr [edi+1A], al
00557741 |. F645 05 02 test byte ptr [ebp+5], 2
00557745 |. 0F97C0 seta al
00557748 |. 8846 1A mov byte ptr [esi+1A], al
///////////////////////
0055774B |. 8A45 04 mov al, byte ptr [ebp+4]
0055774E |. 24 01 and al, 1
00557750 |. 8847 1B mov byte ptr [edi+1B], al
00557753 |. F645 04 02 test byte ptr [ebp+4], 2
00557757 |. 0F97C0 seta al
0055775A |. 8846 1B mov byte ptr [esi+1B], al
////////////////////////
0055775D |. 8A45 03 mov al, byte ptr [ebp+3]
00557760 |. 24 01 and al, 1
00557762 |. 8847 1C mov byte ptr [edi+1C], al
00557765 |. F645 03 02 test byte ptr [ebp+3], 2
00557769 |. 0F97C0 seta al
0055776C |. 8846 1C mov byte ptr [esi+1C], al
//////////////////////////////
0055776F |. 8A45 02 mov al, byte ptr [ebp+2]
00557772 |. 24 01 and al, 1
00557774 |. 8847 1D mov byte ptr [edi+1D], al
00557777 |. F645 02 02 test byte ptr [ebp+2], 2
0055777B |. 0F97C0 seta al
0055777E |. 8846 1D mov byte ptr [esi+1D], al
/////////////////////////////
00557781 |. 8A45 01 mov al, byte ptr [ebp+1]
00557784 |. 24 01 and al, 1
00557786 |. 8847 1E mov byte ptr [edi+1E], al
00557789 |. F645 01 02 test byte ptr [ebp+1], 2
0055778D |. 0F97C0 seta al
00557790 |. 8846 1E mov byte ptr [esi+1E], al
//////////////////////////
00557793 |. 8A45 00 mov al, byte ptr [ebp]
00557796 |. 24 01 and al, 1
00557798 |. 8847 1F mov byte ptr [edi+1F], al
0055779B |. F645 00 02 test byte ptr [ebp], 2
0055779F |. 0F97C0 seta al
005577A2 |. 8846 1F mov byte ptr [esi+1F], al
上面的代码就是把输入的用户名的前8个字符的ASCLL依次和$ 4 $8 比较 改变
两个序列 si di的值
/////////////////////////
005577A5 |. B2 10 mov dl, 10 //循环16次
005577A7 |. B8 1C9E5800 mov eax, 00589E1C //另一个己预先生成的加密序列称为b[]
005577AC |> 8A4E 1F /mov cl, byte ptr [esi+1F]
005577AF |. 3208 |xor cl, byte ptr [eax]
005577B1 |. 81E1 FF000000 |and ecx, 0FF
005577B7 |. C1E1 05 |shl ecx, 5
005577BA |. 8A5E 04 |mov bl, byte ptr [esi+4]
005577BD |. 3258 05 |xor bl, byte ptr [eax+5]
005577C0 |. 81E3 FF000000 |and ebx, 0FF
005577C6 |. C1E3 04 |shl ebx, 4
005577C9 |. 66:0BCB |or cx, bx
005577CC |. 8A1E |mov bl, byte ptr [esi]
005577CE |. 3258 01 |xor bl, byte ptr [eax+1]
005577D1 |. 81E3 FF000000 |and ebx, 0FF
005577D7 |. C1E3 03 |shl ebx, 3
005577DA |. 66:0BCB |or cx, bx
005577DD |. 8A5E 01 |mov bl, byte ptr [esi+1]
005577E0 |. 3258 02 |xor bl, byte ptr [eax+2]
005577E3 |. 81E3 FF000000 |and ebx, 0FF
005577E9 |. C1E3 02 |shl ebx, 2
005577EC |. 66:0BCB |or cx, bx
005577EF |. 8A5E 02 |mov bl, byte ptr [esi+2]
005577F2 |. 3258 03 |xor bl, byte ptr [eax+3]
005577F5 |. 81E3 FF000000 |and ebx, 0FF
005577FB |. 03DB |add ebx, ebx &&&&&&&&&&&&&&&&
005577FD |. 66:0BCB |or cx, bx
00557800 |. 8A5E 03 |mov bl, byte ptr [esi+3]
00557803 |. 3258 04 |xor bl, byte ptr [eax+4]
00557806 |. 81E3 FF000000 |and ebx, 0FF
0055780C |. 66:0BCB |or cx, bx
0055780F |. 0FB7D9 |movzx ebx, cx
00557812 |. 8A9B C4715800 |mov bl, byte ptr [ebx+5871C4]
00557818 |. 325F 08 |xor bl, byte ptr [edi+8]
0055781B |. 881D 64A15800 |mov byte ptr [58A164], bl 用来改变C[]的值
00557821 |. 0FB7D9 |movzx ebx, cx
00557824 |. 8A9B C4735800 |mov bl, byte ptr [ebx+5873C4]
0055782A |. 325F 10 |xor bl, byte ptr [edi+10]
0055782D |. 881D 6CA15800 |mov byte ptr [58A16C], bl用来改变C[]的值
00557833 |. 0FB7D9 |movzx ebx, cx
00557836 |. 8A9B C4755800 |mov bl, byte ptr [ebx+5875C4]
0055783C |. 325F 16 |xor bl, byte ptr [edi+16]
0055783F |. 881D 72A15800 |mov byte ptr [58A172], bl用来改变C[]的值
00557845 |. 0FB7C9 |movzx ecx, cx
00557848 |. 8A89 C4775800 |mov cl, byte ptr [ecx+5877C4]
0055784E |. 324F 1E |xor cl, byte ptr [edi+1E]
00557851 |. 880D 7AA15800 |mov byte ptr [58A17A], cl用来改变C[]的值
/////////////////////////////////////1
一共有8个这样的小循环
00557857 |. 8A4E 03 |mov cl, byte ptr [esi+3]
0055785A |. 3248 06 |xor cl, byte ptr [eax+6]
0055785D |. 81E1 FF000000 |and ecx, 0FF
00557863 |. C1E1 05 |shl ecx, 5
00557866 |. 8A5E 08 |mov bl, byte ptr [esi+8]
00557869 |. 3258 0B |xor bl, byte ptr [eax+B]
0055786C |. 81E3 FF000000 |and ebx, 0FF
00557872 |. C1E3 04 |shl ebx, 4
00557875 |. 66:0BCB |or cx, bx
00557878 |. 8A5E 04 |mov bl, byte ptr [esi+4]
0055787B |. 3258 07 |xor bl, byte ptr [eax+7]
0055787E |. 81E3 FF000000 |and ebx, 0FF
00557884 |. C1E3 03 |shl ebx, 3
00557887 |. 66:0BCB |or cx, bx
0055788A |. 8A5E 05 |mov bl, byte ptr [esi+5]
0055788D |. 3258 08 |xor bl, byte ptr [eax+8]
00557890 |. 81E3 FF000000 |and ebx, 0FF
00557896 |. C1E3 02 |shl ebx, 2
00557899 |. 66:0BCB |or cx, bx
0055789C |. 8A5E 06 |mov bl, byte ptr [esi+6]
0055789F |. 3258 09 |xor bl, byte ptr [eax+9]
005578A2 |. 81E3 FF000000 |and ebx, 0FF
005578A8 |. 03DB |add ebx, ebx
005578AA |. 66:0BCB |or cx, bx
005578AD |. 8A5E 07 |mov bl, byte ptr [esi+7]
005578B0 |. 3258 0A |xor bl, byte ptr [eax+A]
005578B3 |. 81E3 FF000000 |and ebx, 0FF
005578B9 |. 66:0BCB |or cx, bx
005578BC |. 0FB7D9 |movzx ebx, cx
005578BF |. 8A9B 04725800 |mov bl, byte ptr [ebx+587204]
005578C5 |. 325F 0C |xor bl, byte ptr [edi+C]
005578C8 |. 881D 68A15800 |mov byte ptr [58A168], bl
005578CE |. 0FB7D9 |movzx ebx, cx
005578D1 |. 8A9B 04745800 |mov bl, byte ptr [ebx+587404]
005578D7 |. 325F 1B |xor bl, byte ptr [edi+1B]
005578DA |. 881D 77A15800 |mov byte ptr [58A177], bl
005578E0 |. 0FB7D9 |movzx ebx, cx
005578E3 |. 8A9B 04765800 |mov bl, byte ptr [ebx+587604]
005578E9 |. 325F 01 |xor bl, byte ptr [edi+1]
005578EC |. 881D 5DA15800 |mov byte ptr [58A15D], bl
005578F2 |. 0FB7C9 |movzx ecx, cx
005578F5 |. 8A89 04785800 |mov cl, byte ptr [ecx+587804]
005578FB |. 324F 11 |xor cl, byte ptr [edi+11]
005578FE |. 880D 6DA15800 |mov byte ptr [58A16D], cl
/////////////////2
00557904 |. 8A4E 07 |mov cl, byte ptr [esi+7]
00557907 |. 3248 0C |xor cl, byte ptr [eax+C]
0055790A |. 81E1 FF000000 |and ecx, 0FF
00557910 |. C1E1 05 |shl ecx, 5
00557913 |. 8A5E 0C |mov bl, byte ptr [esi+C]
00557916 |. 3258 11 |xor bl, byte ptr [eax+11]
00557919 |. 81E3 FF000000 |and ebx, 0FF
0055791F |. C1E3 04 |shl ebx, 4
00557922 |. 66:0BCB |or cx, bx
00557925 |. 8A5E 08 |mov bl, byte ptr [esi+8]
00557928 |. 3258 0D |xor bl, byte ptr [eax+D]
0055792B |. 81E3 FF000000 |and ebx, 0FF
00557931 |. C1E3 03 |shl ebx, 3
00557934 |. 66:0BCB |or cx, bx
00557937 |. 8A5E 09 |mov bl, byte ptr [esi+9]
0055793A |. 3258 0E |xor bl, byte ptr [eax+E]
0055793D |. 81E3 FF000000 |and ebx, 0FF
00557943 |. C1E3 02 |shl ebx, 2
00557946 |. 66:0BCB |or cx, bx
00557949 |. 8A5E 0A |mov bl, byte ptr [esi+A]
0055794C |. 3258 0F |xor bl, byte ptr [eax+F]
0055794F |. 81E3 FF000000 |and ebx, 0FF
00557955 |. 03DB |add ebx, ebx
00557957 |. 66:0BCB |or cx, bx
0055795A |. 8A5E 0B |mov bl, byte ptr [esi+B]
0055795D |. 3258 10 |xor bl, byte ptr [eax+10]
00557960 |. 81E3 FF000000 |and ebx, 0FF
00557966 |. 66:0BCB |or cx, bx
00557969 |. 0FB7D9 |movzx ebx, cx
0055796C |. 8A9B 44725800 |mov bl, byte ptr [ebx+587244]
00557972 |. 325F 17 |xor bl, byte ptr [edi+17]
00557975 |. 881D 73A15800 |mov byte ptr [58A173], bl
0055797B |. 0FB7D9 |movzx ebx, cx
0055797E |. 8A9B 44745800 |mov bl, byte ptr [ebx+587444]
00557984 |. 325F 0F |xor bl, byte ptr [edi+F]
00557987 |. 881D 6BA15800 |mov byte ptr [58A16B], bl
0055798D |. 0FB7D9 |movzx ebx, cx
00557990 |. 8A9B 44765800 |mov bl, byte ptr [ebx+587644]
00557996 |. 325F 1D |xor bl, byte ptr [edi+1D]
00557999 |. 881D 79A15800 |mov byte ptr [58A179], bl
0055799F |. 0FB7C9 |movzx ecx, cx
005579A2 |. 8A89 44785800 |mov cl, byte ptr [ecx+587844]
005579A8 |. 324F 05 |xor cl, byte ptr [edi+5]
005579AB |. 880D 61A15800 |mov byte ptr [58A161], cl
//////////////////3
005579B1 |. 8A4E 0B |mov cl, byte ptr [esi+B]
005579B4 |. 3248 12 |xor cl, byte ptr [eax+12]
005579B7 |. 81E1 FF000000 |and ecx, 0FF
005579BD |. C1E1 05 |shl ecx, 5
005579C0 |. 8A5E 10 |mov bl, byte ptr [esi+10]
005579C3 |. 3258 17 |xor bl, byte ptr [eax+17]
005579C6 |. 81E3 FF000000 |and ebx, 0FF
005579CC |. C1E3 04 |shl ebx, 4
005579CF |. 66:0BCB |or cx, bx
005579D2 |. 8A5E 0C |mov bl, byte ptr [esi+C]
005579D5 |. 3258 13 |xor bl, byte ptr [eax+13]
005579D8 |. 81E3 FF000000 |and ebx, 0FF
005579DE |. C1E3 03 |shl ebx, 3
005579E1 |. 66:0BCB |or cx, bx
005579E4 |. 8A5E 0D |mov bl, byte ptr [esi+D]
005579E7 |. 3258 14 |xor bl, byte ptr [eax+14]
005579EA |. 81E3 FF000000 |and ebx, 0FF
005579F0 |. C1E3 02 |shl ebx, 2
005579F3 |. 66:0BCB |or cx, bx
005579F6 |. 8A5E 0E |mov bl, byte ptr [esi+E]
005579F9 |. 3258 15 |xor bl, byte ptr [eax+15]
005579FC |. 81E3 FF000000 |and ebx, 0FF
00557A02 |. 03DB |add ebx, ebx
00557A04 |. 66:0BCB |or cx, bx
00557A07 |. 8A5E 0F |mov bl, byte ptr [esi+F]
00557A0A |. 3258 16 |xor bl, byte ptr [eax+16]
00557A0D |. 81E3 FF000000 |and ebx, 0FF
00557A13 |. 66:0BCB |or cx, bx
00557A16 |. 0FB7D9 |movzx ebx, cx
00557A19 |. 8A9B 84725800 |mov bl, byte ptr [ebx+587284]
00557A1F |. 325F 19 |xor bl, byte ptr [edi+19]
00557A22 |. 881D 75A15800 |mov byte ptr [58A175], bl
00557A28 |. 0FB7D9 |movzx ebx, cx
00557A2B |. 8A9B 84745800 |mov bl, byte ptr [ebx+587484]
00557A31 |. 325F 13 |xor bl, byte ptr [edi+13]
00557A34 |. 881D 6FA15800 |mov byte ptr [58A16F], bl
00557A3A |. 0FB7D9 |movzx ebx, cx
00557A3D |. 8A9B 84765800 |mov bl, byte ptr [ebx+587684]
00557A43 |. 325F 09 |xor bl, byte ptr [edi+9]
00557A46 |. 881D 65A15800 |mov byte ptr [58A165], bl
00557A4C |. 0FB7C9 |movzx ecx, cx
00557A4F |. 8A89 84785800 |mov cl, byte ptr [ecx+587884]
00557A55 |. 320F |xor cl, byte ptr [edi]
00557A57 |. 880D 5CA15800 |mov byte ptr [58A15C], cl
////////////////////4
00557A5D |. 8A4E 0F |mov cl, byte ptr [esi+F]
00557A60 |. 3248 18 |xor cl, byte ptr [eax+18]
00557A63 |. 81E1 FF000000 |and ecx, 0FF
00557A69 |. C1E1 05 |shl ecx, 5
00557A6C |. 8A5E 14 |mov bl, byte ptr [esi+14]
00557A6F |. 3258 1D |xor bl, byte ptr [eax+1D]
00557A72 |. 81E3 FF000000 |and ebx, 0FF
00557A78 |. C1E3 04 |shl ebx, 4
00557A7B |. 66:0BCB |or cx, bx
00557A7E |. 8A5E 10 |mov bl, byte ptr [esi+10]
00557A81 |. 3258 19 |xor bl, byte ptr [eax+19]
00557A84 |. 81E3 FF000000 |and ebx, 0FF
00557A8A |. C1E3 03 |shl ebx, 3
00557A8D |. 66:0BCB |or cx, bx
00557A90 |. 8A5E 11 |mov bl, byte ptr [esi+11]
00557A93 |. 3258 1A |xor bl, byte ptr [eax+1A]
00557A96 |. 81E3 FF000000 |and ebx, 0FF
00557A9C |. C1E3 02 |shl ebx, 2
00557A9F |. 66:0BCB |or cx, bx
00557AA2 |. 8A5E 12 |mov bl, byte ptr [esi+12]
00557AA5 |. 3258 1B |xor bl, byte ptr [eax+1B]
00557AA8 |. 81E3 FF000000 |and ebx, 0FF
00557AAE |. 03DB |add ebx, ebx
00557AB0 |. 66:0BCB |or cx, bx
00557AB3 |. 8A5E 13 |mov bl, byte ptr [esi+13]
00557AB6 |. 3258 1C |xor bl, byte ptr [eax+1C]
00557AB9 |. 81E3 FF000000 |and ebx, 0FF
00557ABF |. 66:0BCB |or cx, bx
00557AC2 |. 0FB7D9 |movzx ebx, cx
00557AC5 |. 8A9B C4725800 |mov bl, byte ptr [ebx+5872C4]
00557ACB |. 325F 07 |xor bl, byte ptr [edi+7]
00557ACE |. 881D 63A15800 |mov byte ptr [58A163], bl
00557AD4 |. 0FB7D9 |movzx ebx, cx
00557AD7 |. 8A9B C4745800 |mov bl, byte ptr [ebx+5874C4]
00557ADD |. 325F 0D |xor bl, byte ptr [edi+D]
00557AE0 |. 881D 69A15800 |mov byte ptr [58A169], bl
00557AE6 |. 0FB7D9 |movzx ebx, cx
00557AE9 |. 8A9B C4765800 |mov bl, byte ptr [ebx+5876C4]
00557AEF |. 325F 18 |xor bl, byte ptr [edi+18]
00557AF2 |. 881D 74A15800 |mov byte ptr [58A174], bl
00557AF8 |. 0FB7C9 |movzx ecx, cx
00557AFB |. 8A89 C4785800 |mov cl, byte ptr [ecx+5878C4]
00557B01 |. 324F 02 |xor cl, byte ptr [edi+2]
00557B04 |. 880D 5EA15800 |mov byte ptr [58A15E], cl
//////////////////////5
00557B0A |. 8A4E 13 |mov cl, byte ptr [esi+13]
00557B0D |. 3248 1E |xor cl, byte ptr [eax+1E]
00557B10 |. 81E1 FF000000 |and ecx, 0FF
00557B16 |. C1E1 05 |shl ecx, 5
00557B19 |. 8A5E 18 |mov bl, byte ptr [esi+18]
00557B1C |. 3258 23 |xor bl, byte ptr [eax+23]
00557B1F |. 81E3 FF000000 |and ebx, 0FF
00557B25 |. C1E3 04 |shl ebx, 4
00557B28 |. 66:0BCB |or cx, bx
00557B2B |. 8A5E 14 |mov bl, byte ptr [esi+14]
00557B2E |. 3258 1F |xor bl, byte ptr [eax+1F]
00557B31 |. 81E3 FF000000 |and ebx, 0FF
00557B37 |. C1E3 03 |shl ebx, 3
00557B3A |. 66:0BCB |or cx, bx
00557B3D |. 8A5E 15 |mov bl, byte ptr [esi+15]
00557B40 |. 3258 20 |xor bl, byte ptr [eax+20]
00557B43 |. 81E3 FF000000 |and ebx, 0FF
00557B49 |. C1E3 02 |shl ebx, 2
00557B4C |. 66:0BCB |or cx, bx
00557B4F |. 8A5E 16 |mov bl, byte ptr [esi+16]
00557B52 |. 3258 21 |xor bl, byte ptr [eax+21]
00557B55 |. 81E3 FF000000 |and ebx, 0FF
00557B5B |. 03DB |add ebx, ebx
00557B5D |. 66:0BCB |or cx, bx
00557B60 |. 8A5E 17 |mov bl, byte ptr [esi+17]
00557B63 |. 3258 22 |xor bl, byte ptr [eax+22]
00557B66 |. 81E3 FF000000 |and ebx, 0FF
00557B6C |. 66:0BCB |or cx, bx
00557B6F |. 0FB7D9 |movzx ebx, cx
00557B72 |. 8A9B 04735800 |mov bl, byte ptr [ebx+587304]
00557B78 |. 325F 03 |xor bl, byte ptr [edi+3]
00557B7B |. 881D 5FA15800 |mov byte ptr [58A15F], bl
00557B81 |. 0FB7D9 |movzx ebx, cx
00557B84 |. 8A9B 04755800 |mov bl, byte ptr [ebx+587504]
00557B8A |. 325F 1C |xor bl, byte ptr [edi+1C]
00557B8D |. 881D 78A15800 |mov byte ptr [58A178], bl
00557B93 |. 0FB7D9 |movzx ebx, cx
00557B96 |. 8A9B 04775800 |mov bl, byte ptr [ebx+587704]
00557B9C |. 325F 0A |xor bl, byte ptr [edi+A]
00557B9F |. 881D 66A15800 |mov byte ptr [58A166], bl
00557BA5 |. 0FB7C9 |movzx ecx, cx
00557BA8 |. 8A89 04795800 |mov cl, byte ptr [ecx+587904]
00557BAE |. 324F 12 |xor cl, byte ptr [edi+12]
00557BB1 |. 880D 6EA15800 |mov byte ptr [58A16E], cl
////////////////////6
00557BB7 |. 8A4E 17 |mov cl, byte ptr [esi+17]
00557BBA |. 3248 24 |xor cl, byte ptr [eax+24]
00557BBD |. 81E1 FF000000 |and ecx, 0FF
00557BC3 |. C1E1 05 |shl ecx, 5
00557BC6 |. 8A5E 1C |mov bl, byte ptr [esi+1C]
00557BC9 |. 3258 29 |xor bl, byte ptr [eax+29]
00557BCC |. 81E3 FF000000 |and ebx, 0FF
00557BD2 |. C1E3 04 |shl ebx, 4
00557BD5 |. 66:0BCB |or cx, bx
00557BD8 |. 8A5E 18 |mov bl, byte ptr [esi+18]
00557BDB |. 3258 25 |xor bl, byte ptr [eax+25]
00557BDE |. 81E3 FF000000 |and ebx, 0FF
00557BE4 |. C1E3 03 |shl ebx, 3
00557BE7 |. 66:0BCB |or cx, bx
00557BEA |. 8A5E 19 |mov bl, byte ptr [esi+19]
00557BED |. 3258 26 |xor bl, byte ptr [eax+26]
00557BF0 |. 81E3 FF000000 |and ebx, 0FF
00557BF6 |. C1E3 02 |shl ebx, 2
00557BF9 |. 66:0BCB |or cx, bx
00557BFC |. 8A5E 1A |mov bl, byte ptr [esi+1A]
00557BFF |. 3258 27 |xor bl, byte ptr [eax+27]
00557C02 |. 81E3 FF000000 |and ebx, 0FF
00557C08 |. 03DB |add ebx, ebx
00557C0A |. 66:0BCB |or cx, bx
00557C0D |. 8A5E 1B |mov bl, byte ptr [esi+1B]
00557C10 |. 3258 28 |xor bl, byte ptr [eax+28]
00557C13 |. 81E3 FF000000 |and ebx, 0FF
00557C19 |. 66:0BCB |or cx, bx
00557C1C |. 0FB7D9 |movzx ebx, cx
00557C1F |. 8A9B 44735800 |mov bl, byte ptr [ebx+587344]
00557C25 |. 325F 1F |xor bl, byte ptr [edi+1F]
00557C28 |. 881D 7BA15800 |mov byte ptr [58A17B], bl
00557C2E |. 0FB7D9 |movzx ebx, cx
00557C31 |. 8A9B 44755800 |mov bl, byte ptr [ebx+587544]
00557C37 |. 325F 0B |xor bl, byte ptr [edi+B]
00557C3A |. 881D 67A15800 |mov byte ptr [58A167], bl
00557C40 |. 0FB7D9 |movzx ebx, cx
00557C43 |. 8A9B 44775800 |mov bl, byte ptr [ebx+587744]
00557C49 |. 325F 15 |xor bl, byte ptr [edi+15]
00557C4C |. 881D 71A15800 |mov byte ptr [58A171], bl
00557C52 |. 0FB7C9 |movzx ecx, cx
00557C55 |. 8A89 44795800 |mov cl, byte ptr [ecx+587944]
00557C5B |. 324F 06 |xor cl, byte ptr [edi+6]
00557C5E |. 880D 62A15800 |mov byte ptr [58A162], cl
/////////////7
00557C64 |. 8A4E 1B |mov cl, byte ptr [esi+1B]
00557C67 |. 3248 2A |xor cl, byte ptr [eax+2A]
00557C6A |. 81E1 FF000000 |and ecx, 0FF
00557C70 |. C1E1 05 |shl ecx, 5
00557C73 |. 8A1E |mov bl, byte ptr [esi]
00557C75 |. 3258 2F |xor bl, byte ptr [eax+2F]
00557C78 |. 81E3 FF000000 |and ebx, 0FF
00557C7E |. C1E3 04 |shl ebx, 4
00557C81 |. 66:0BCB |or cx, bx
00557C84 |. 8A5E 1C |mov bl, byte ptr [esi+1C]
00557C87 |. 3258 2B |xor bl, byte ptr [eax+2B]
00557C8A |. 81E3 FF000000 |and ebx, 0FF
00557C90 |. C1E3 03 |shl ebx, 3
00557C93 |. 66:0BCB |or cx, bx
00557C96 |. 8A5E 1D |mov bl, byte ptr [esi+1D]
00557C99 |. 3258 2C |xor bl, byte ptr [eax+2C]
00557C9C |. 81E3 FF000000 |and ebx, 0FF
00557CA2 |. C1E3 02 |shl ebx, 2
00557CA5 |. 66:0BCB |or cx, bx
00557CA8 |. 8A5E 1E |mov bl, byte ptr [esi+1E]
00557CAB |. 3258 2D |xor bl, byte ptr [eax+2D]
00557CAE |. 81E3 FF000000 |and ebx, 0FF
00557CB4 |. 03DB |add ebx, ebx
00557CB6 |. 66:0BCB |or cx, bx
00557CB9 |. 8A5E 1F |mov bl, byte ptr [esi+1F]
00557CBC |. 3258 2E |xor bl, byte ptr [eax+2E]
00557CBF |. 81E3 FF000000 |and ebx, 0FF
00557CC5 |. 66:0BCB |or cx, bx
00557CC8 |. 0FB7D9 |movzx ebx, cx
00557CCB |. 8A9B 84735800 |mov bl, byte ptr [ebx+587384]
00557CD1 |. 325F 04 |xor bl, byte ptr [edi+4]
00557CD4 |. 881D 60A15800 |mov byte ptr [58A160], bl
00557CDA |. 0FB7D9 |movzx ebx, cx
00557CDD |. 8A9B 84755800 |mov bl, byte ptr [ebx+587584]
00557CE3 |. 325F 1A |xor bl, byte ptr [edi+1A]
00557CE6 |. 881D 76A15800 |mov byte ptr [58A176], bl
00557CEC |. 0FB7D9 |movzx ebx, cx
00557CEF |. 8A9B 84775800 |mov bl, byte ptr [ebx+587784]
00557CF5 |. 325F 0E |xor bl, byte ptr [edi+E]
00557CF8 |. 881D 6AA15800 |mov byte ptr [58A16A], bl
00557CFE |. 0FB7C9 |movzx ecx, cx
00557D01 |. 8A89 84795800 |mov cl, byte ptr [ecx+587984]
00557D07 |. 324F 14 |xor cl, byte ptr [edi+14]
00557D0A |. 880D 70A15800 |mov byte ptr [58A170], cl
//////////////////////8
00557D10 |. 56 |push esi
00557D11 |. 57 |push edi
00557D12 |. B9 08000000 |mov ecx, 8
00557D17 |. F3:A5 |rep movs dword ptr es:[edi], dword ptr [esi] //si 复制到DI
00557D19 |. 5F |pop edi
00557D1A |. 5E |pop esi
00557D1B |. 56 |push esi
00557D1C |. 57 |push edi
00557D1D |. 8BFE |mov edi, esi
00557D1F |. BE 5CA15800 |mov esi, 0058A15C //此处属于C[] 为了方便称为e[] (e[] si[] di[] 大小相同)
00557D24 |. B9 08000000 |mov ecx, 8
00557D29 |. F3:A5 |rep movs dword ptr es:[edi], dword ptr [esi ]//e[]复制到si[]
00557D2B |. 5F |pop edi
00557D2C |. 5E |pop esi
00557D2D |. 83C0 30 |add eax, 30 //把C[]的指针移动48位
00557D30 |. FECA |dec dl
00557D32 |.^ 0F85 74FAFFFF \jnz 005577AC //循环16次
前面的代码主要是用输入的名字和己生成的序列生成两个新的序列
下面就是用这两个序列生成序列号
00557D38 |. 8A47 07 mov al, byte ptr [edi+7]
00557D3B |. C1E0 07 shl eax, 7
00557D3E |. 8A56 07 mov dl, byte ptr [esi+7]
00557D41 |. C1E2 06 shl edx, 6
00557D44 |. 0AC2 or al, dl
00557D46 |. 8A57 0F mov dl, byte ptr [edi+F]
00557D49 |. C1E2 05 shl edx, 5
00557D4C |. 0AC2 or al, dl
00557D4E |. 8A56 0F mov dl, byte ptr [esi+F]
00557D51 |. C1E2 04 shl edx, 4
00557D54 |. 0AC2 or al, dl
00557D56 |. 8A57 17 mov dl, byte ptr [edi+17]
00557D59 |. C1E2 03 shl edx, 3
00557D5C |. 0AC2 or al, dl
00557D5E |. 8A56 17 mov dl, byte ptr [esi+17]
00557D61 |. C1E2 02 shl edx, 2
00557D64 |. 0AC2 or al, dl
00557D66 |. 8A57 1F mov dl, byte ptr [edi+1F]
00557D69 |. 03D2 add edx, edx
00557D6B |. 0AC2 or al, dl
00557D6D |. 0A46 1F or al, byte ptr [esi+1F]
00557D70 |. 8B5424 08 mov edx, dword ptr [esp+8]
00557D74 |. 8802 mov byte ptr [edx], al ; 第1个字节
00557D76 |. 8A47 06 mov al, byte ptr [edi+6]
00557D79 |. C1E0 07 shl eax, 7
00557D7C |. 8A56 06 mov dl, byte ptr [esi+6]
00557D7F |. C1E2 06 shl edx, 6
00557D82 |. 0AC2 or al, dl
00557D84 |. 8A57 0E mov dl, byte ptr [edi+E]
00557D87 |. C1E2 05 shl edx, 5
00557D8A |. 0AC2 or al, dl
00557D8C |. 8A56 0E mov dl, byte ptr [esi+E]
00557D8F |. C1E2 04 shl edx, 4
00557D92 |. 0AC2 or al, dl
00557D94 |. 8A57 16 mov dl, byte ptr [edi+16]
00557D97 |. C1E2 03 shl edx, 3
00557D9A |. 0AC2 or al, dl
00557D9C |. 8A56 16 mov dl, byte ptr [esi+16]
00557D9F |. C1E2 02 shl edx, 2
00557DA2 |. 0AC2 or al, dl
00557DA4 |. 8A57 1E mov dl, byte ptr [edi+1E]
00557DA7 |. 03D2 add edx, edx
00557DA9 |. 0AC2 or al, dl
00557DAB |. 0A46 1E or al, byte ptr [esi+1E]
00557DAE |. 8B5424 08 mov edx, dword ptr [esp+8]
00557DB2 |. 8842 01 mov byte ptr [edx+1], al ; 第2个字节
00557DB5 |. 8A47 05 mov al, byte ptr [edi+5]
00557DB8 |. C1E0 07 shl eax, 7
00557DBB |. 8A56 05 mov dl, byte ptr [esi+5]
00557DBE |. C1E2 06 shl edx, 6
00557DC1 |. 0AC2 or al, dl
00557DC3 |. 8A57 0D mov dl, byte ptr [edi+D]
00557DC6 |. C1E2 05 shl edx, 5
00557DC9 |. 0AC2 or al, dl
00557DCB |. 8A56 0D mov dl, byte ptr [esi+D]
00557DCE |. C1E2 04 shl edx, 4
00557DD1 |. 0AC2 or al, dl
00557DD3 |. 8A57 15 mov dl, byte ptr [edi+15]
00557DD6 |. C1E2 03 shl edx, 3
00557DD9 |. 0AC2 or al, dl
00557DDB |. 8A56 15 mov dl, byte ptr [esi+15]
00557DDE |. C1E2 02 shl edx, 2
00557DE1 |. 0AC2 or al, dl
00557DE3 |. 8A57 1D mov dl, byte ptr [edi+1D]
00557DE6 |. 03D2 add edx, edx
00557DE8 |. 0AC2 or al, dl
00557DEA |. 0A46 1D or al, byte ptr [esi+1D]
00557DED |. 8B5424 08 mov edx, dword ptr [esp+8]
00557DF1 |. 8842 02 mov byte ptr [edx+2], al ; 第3个字节
00557DF4 |. 8A47 04 mov al, byte ptr [edi+4]
00557DF7 |. C1E0 07 shl eax, 7
00557DFA |. 8A56 04 mov dl, byte ptr [esi+4]
00557DFD |. C1E2 06 shl edx, 6
00557E00 |. 0AC2 or al, dl
00557E02 |. 8A57 0C mov dl, byte ptr [edi+C]
00557E05 |. C1E2 05 shl edx, 5
00557E08 |. 0AC2 or al, dl
00557E0A |. 8A56 0C mov dl, byte ptr [esi+C]
00557E0D |. C1E2 04 shl edx, 4
00557E10 |. 0AC2 or al, dl
00557E12 |. 8A57 14 mov dl, byte ptr [edi+14]
00557E15 |. C1E2 03 shl edx, 3
00557E18 |. 0AC2 or al, dl
00557E1A |. 8A56 14 mov dl, byte ptr [esi+14]
00557E1D |. C1E2 02 shl edx, 2
00557E20 |. 0AC2 or al, dl
00557E22 |. 8A57 1C mov dl, byte ptr [edi+1C]
00557E25 |. 03D2 add edx, edx
00557E27 |. 0AC2 or al, dl
00557E29 |. 0A46 1C or al, byte ptr [esi+1C]
00557E2C |. 8B5424 08 mov edx, dword ptr [esp+8]
00557E30 |. 8842 03 mov byte ptr [edx+3], al ; 第4个字节
00557E33 |. 8A47 03 mov al, byte ptr [edi+3]
00557E36 |. C1E0 07 shl eax, 7
00557E39 |. 8A56 03 mov dl, byte ptr [esi+3]
00557E3C |. C1E2 06 shl edx, 6
00557E3F |. 0AC2 or al, dl
00557E41 |. 8A57 0B mov dl, byte ptr [edi+B]
00557E44 |. C1E2 05 shl edx, 5
00557E47 |. 0AC2 or al, dl
00557E49 |. 8A56 0B mov dl, byte ptr [esi+B]
00557E4C |. C1E2 04 shl edx, 4
00557E4F |. 0AC2 or al, dl
00557E51 |. 8A57 13 mov dl, byte ptr [edi+13]
00557E54 |. C1E2 03 shl edx, 3
00557E57 |. 0AC2 or al, dl
00557E59 |. 8A56 13 mov dl, byte ptr [esi+13]
00557E5C |. C1E2 02 shl edx, 2
00557E5F |. 0AC2 or al, dl
00557E61 |. 8A57 1B mov dl, byte ptr [edi+1B]
00557E64 |. 03D2 add edx, edx
00557E66 |. 0AC2 or al, dl
00557E68 |. 0A46 1B or al, byte ptr [esi+1B]
00557E6B |. 8B5424 08 mov edx, dword ptr [esp+8]
00557E6F |. 8842 04 mov byte ptr [edx+4], al ; 第5个字节
00557E72 |. 8A47 02 mov al, byte ptr [edi+2]
00557E75 |. C1E0 07 shl eax, 7
00557E78 |. 8A56 02 mov dl, byte ptr [esi+2]
00557E7B |. C1E2 06 shl edx, 6
00557E7E |. 0AC2 or al, dl
00557E80 |. 8A57 0A mov dl, byte ptr [edi+A]
00557E83 |. C1E2 05 shl edx, 5
00557E86 |. 0AC2 or al, dl
00557E88 |. 8A56 0A mov dl, byte ptr [esi+A]
00557E8B |. C1E2 04 shl edx, 4
00557E8E |. 0AC2 or al, dl
00557E90 |. 8A57 12 mov dl, byte ptr [edi+12]
00557E93 |. C1E2 03 shl edx, 3
00557E96 |. 0AC2 or al, dl
00557E98 |. 8A56 12 mov dl, byte ptr [esi+12]
00557E9B |. C1E2 02 shl edx, 2
00557E9E |. 0AC2 or al, dl
00557EA0 |. 8A57 1A mov dl, byte ptr [edi+1A]
00557EA3 |. 03D2 add edx, edx
00557EA5 |. 0AC2 or al, dl
00557EA7 |. 0A46 1A or al, byte ptr [esi+1A]
00557EAA |. 8B5424 08 mov edx, dword ptr [esp+8]
00557EAE |. 8842 05 mov byte ptr [edx+5], al ; 第6个字节
00557EB1 |. 8A47 01 mov al, byte ptr [edi+1]
00557EB4 |. C1E0 07 shl eax, 7
00557EB7 |. 8A56 01 mov dl, byte ptr [esi+1]
00557EBA |. C1E2 06 shl edx, 6
00557EBD |. 0AC2 or al, dl
00557EBF |. 8A57 09 mov dl, byte ptr [edi+9]
00557EC2 |. C1E2 05 shl edx, 5
00557EC5 |. 0AC2 or al, dl
00557EC7 |. 8A56 09 mov dl, byte ptr [esi+9]
00557ECA |. C1E2 04 shl edx, 4
00557ECD |. 0AC2 or al, dl
00557ECF |. 8A57 11 mov dl, byte ptr [edi+11]
00557ED2 |. C1E2 03 shl edx, 3
00557ED5 |. 0AC2 or al, dl
00557ED7 |. 8A56 11 mov dl, byte ptr [esi+11]
00557EDA |. C1E2 02 shl edx, 2
00557EDD |. 0AC2 or al, dl
00557EDF |. 8A57 19 mov dl, byte ptr [edi+19]
00557EE2 |. 03D2 add edx, edx
00557EE4 |. 0AC2 or al, dl
00557EE6 |. 0A46 19 or al, byte ptr [esi+19]
00557EE9 |. 8B5424 08 mov edx, dword ptr [esp+8]
00557EED |. 8842 06 mov byte ptr [edx+6], al ; 第7个字节
00557EF0 |. 8A07 mov al, byte ptr [edi]
00557EF2 |. C1E0 07 shl eax, 7
00557EF5 |. 8A16 mov dl, byte ptr [esi]
00557EF7 |. C1E2 06 shl edx, 6
00557EFA |. 0AC2 or al, dl
00557EFC |. 8A57 08 mov dl, byte ptr [edi+8]
00557EFF |. C1E2 05 shl edx, 5
00557F02 |. 0AC2 or al, dl
00557F04 |. 8A56 08 mov dl, byte ptr [esi+8]
00557F07 |. C1E2 04 shl edx, 4
00557F0A |. 0AC2 or al, dl
00557F0C |. 8A57 10 mov dl, byte ptr [edi+10]
00557F0F |. C1E2 03 shl edx, 3
00557F12 |. 0AC2 or al, dl
00557F14 |. 8A56 10 mov dl, byte ptr [esi+10]
00557F17 |. C1E2 02 shl edx, 2
00557F1A |. 0AC2 or al, dl
00557F1C |. 8A57 18 mov dl, byte ptr [edi+18]
00557F1F |. 03D2 add edx, edx
00557F21 |. 0AC2 or al, dl
00557F23 |. 0A46 18 or al, byte ptr [esi+18]
00557F26 |. 8B5424 08 mov edx, dword ptr [esp+8]
00557F2A |. 8842 07 mov byte ptr [edx+7], al ; 第8个字节
其中b[]是程序中定义的
C[]是后来生成的不知道是怎样生成的 但每次都一样。。。
b[]
005871AF 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 ............
005871BF 00 00 00 20 00 01 00 01 00 00 01 01 01 00 01 00 ... ......
005871CF 01 00 01 00 00 00 01 00 00 01 00 01 00 01 00 01 .........
005871DF 01 01 00 00 01 00 00 01 01 01 00 00 01 01 01 01 ......
005871EF 00 00 01 00 00 01 01 01 00 00 01 00 00 00 01 00 ..........
005871FF 01 01 00 00 01 01 00 01 01 00 01 00 00 01 00 00 ........
0058720F 01 01 00 00 01 00 01 00 00 01 00 01 01 01 00 00 ........
0058721F 01 00 01 01 00 00 01 00 01 01 00 01 00 00 01 01 .......
0058722F 00 01 00 00 01 01 01 01 00 00 01 00 00 01 00 00 .........
0058723F 01 00 00 01 01 01 00 01 01 00 00 01 00 00 01 01 .......
0058724F 00 01 00 00 01 01 00 00 01 00 00 00 01 00 01 00 ..........
0058725F 01 01 01 01 00 01 00 00 01 01 01 00 00 01 00 00 .......
0058726F 01 00 01 01 00 00 01 01 00 00 01 01 00 00 01 01 .......
0058727F 00 01 00 00 01 00 01 01 00 00 00 01 01 00 00 01 .........
0058728F 00 01 01 00 01 01 01 01 00 00 01 00 00 00 00 00 .........
0058729F 01 00 01 01 01 01 00 01 00 01 01 00 01 01 00 00 ......
005872AF 01 00 00 01 00 00 01 00 00 01 00 01 01 01 00 00 .........
005872BF 01 01 00 00 01 00 01 00 00 00 01 01 00 01 00 00 .........
005872CF 01 01 00 01 01 01 01 00 01 00 00 01 00 00 00 01 .......
005872DF 01 00 01 01 00 00 00 00 01 01 01 00 01 01 01 01 ......
005872EF 00 00 00 00 01 01 01 01 00 00 01 00 01 00 01 00 .........
005872FF 01 01 00 00 00 01 00 01 01 01 00 00 01 00 01 00 ........
0058730F 00 01 00 00 01 01 01 00 00 00 01 01 00 00 00 01 .........
0058731F 01 00 01 00 01 01 01 01 00 00 01 01 00 00 00 00 ........
0058732F 01 00 01 01 00 00 00 00 01 01 00 01 01 01 01 00 .......
0058733F 00 00 00 01 01 00 01 00 01 01 00 01 01 00 01 01 .......
0058734F 00 00 01 00 00 01 00 01 00 00 01 00 01 01 00 00 ..........
0058735F 01 00 01 01 00 00 00 01 01 01 00 00 01 01 01 00 .......
0058736F 01 00 00 01 00 00 01 01 01 00 00 01 00 01 00 00 .........
0058737F 01 01 00 00 01 01 00 01 00 00 01 01 00 01 01 00 .......
0058738F 01 00 00 01 00 00 01 01 01 01 00 00 00 01 00 00 .........
0058739F 01 00 01 01 00 00 01 00 00 01 01 01 00 00 00 01 ........
005873AF 01 01 00 00 01 00 00 01 00 00 01 01 01 01 01 01 ......
005873BF 00 00 00 00 01 01 01 01 00 00 01 00 00 00 00 01 ..........
005873CF 01 01 00 00 01 00 01 01 01 01 00 01 00 00 01 01 ......
005873DF 00 00 01 00 00 01 00 01 00 01 01 00 00 01 01 00 .........
005873EF 01 00 00 01 00 01 01 00 00 01 00 00 01 01 00 00 .........
005873FF 01 00 00 01 01 01 00 00 01 01 00 00 01 00 01 00 ........
0058740F 01 01 00 01 00 00 01 01 01 01 00 00 01 01 00 00 .......
0058741F 00 01 00 00 01 00 01 01 00 00 01 01 00 01 00 01 ........
0058742F 01 00 00 00 01 01 00 00 00 00 01 01 00 00 01 01 .........
0058743F 01 00 01 01 00 00 00 00 01 01 00 01 01 00 01 01 .......
0058744F 01 00 01 00 00 01 01 00 00 00 01 01 00 00 00 01 .........
0058745F 01 01 00 01 00 01 01 01 00 00 01 00 00 00 00 00 .........
0058746F 01 01 00 01 01 00 00 01 00 01 00 00 01 01 01 01 ......
0058747F 00 00 01 00 01 01 01 01 00 00 01 00 00 00 00 00 ..........
0058748F 01 00 01 01 01 01 00 00 01 01 01 00 00 01 01 00 ......
0058749F 01 00 00 01 00 00 01 00 00 01 00 01 01 01 00 00 .........
005874AF 01 01 00 00 01 00 01 00 01 00 00 01 00 00 01 01 ........
005874BF 00 01 01 00 01 00 01 01 00 01 00 00 01 00 01 00 ........
005874CF 01 01 00 01 00 01 00 00 01 01 01 01 00 01 00 01 ......
005874DF 00 00 00 00 01 01 00 00 00 00 01 01 00 01 00 01 ..........
005874EF 01 01 00 00 01 00 00 01 01 00 01 00 01 01 01 00 .......
005874FF 00 00 01 01 00 01 00 00 01 00 00 01 00 00 01 00 ..........
0058750F 01 01 01 01 00 00 01 01 00 01 01 00 01 01 00 01 .....
0058751F 01 00 00 00 00 00 01 01 01 00 00 01 00 01 00 01 .........
0058752F 00 00 01 00 01 01 00 00 01 00 01 01 00 00 01 00 .........
0058753F 01 01 00 00 01 01 00 00 01 01 00 00 01 00 01 00 ........
0058754F 01 01 00 01 00 01 00 00 01 01 00 00 00 01 00 01 ........
0058755F 01 00 01 00 01 00 01 00 01 01 00 01 01 00 01 01 ......
0058756F 00 00 01 00 00 01 00 01 00 00 01 00 01 00 01 00 ..........
0058757F 01 01 00 00 01 01 00 00 01 01 01 00 00 00 00 00 .........
0058758F 01 01 00 01 01 00 01 01 00 00 00 01 01 01 01 01 .....
0058759F 00 00 01 00 00 01 00 01 00 00 01 01 00 00 01 00 ..........
005875AF 01 01 00 01 00 00 00 01 01 01 00 00 01 01 01 00 .......
005875BF 00 00 01 01 00 01 00 00 00 01 01 01 00 01 01 01 .......
005875CF 00 00 00 00 01 00 01 01 00 01 01 00 00 01 01 00 .........
005875DF 01 00 00 01 00 00 00 01 00 00 01 01 01 01 00 00 .........
005875EF 01 01 01 00 00 01 00 00 01 00 00 00 01 00 01 01 ........
005875FF 01 01 00 01 00 01 00 00 01 01 01 01 00 00 01 01 ......
0058760F 00 00 00 00 01 01 00 00 01 01 01 00 01 00 00 00 ..........
0058761F 01 01 00 01 00 00 01 01 01 01 00 00 00 00 00 00 .........
0058762F 01 00 01 01 01 00 00 01 00 01 01 00 01 01 01 01 .....
0058763F 00 00 00 01 00 01 00 00 01 01 01 01 00 00 00 00 ..........
0058764F 01 01 00 01 00 00 01 00 00 01 00 01 01 01 00 00 ........
0058765F 01 00 01 01 00 00 01 00 00 00 01 01 00 01 00 01 ........
0058766F 00 00 01 01 01 00 01 00 00 01 00 00 01 00 01 01 ........
0058767F 01 01 00 01 00 01 00 01 01 00 01 00 01 00 01 00 .......
0058768F 00 01 00 00 01 00 00 01 00 01 01 00 01 00 01 01 ........
0058769F 00 00 01 01 00 01 01 00 00 00 01 01 00 01 00 01 ........
005876AF 01 00 01 00 00 01 01 00 01 01 00 00 00 00 00 00 ..........
005876BF 01 00 01 01 01 01 00 00 00 01 01 01 01 00 00 01 ......
005876CF 01 00 00 01 00 01 01 01 00 00 01 00 00 00 00 01 .........
005876DF 01 01 00 00 01 00 01 00 01 01 00 01 00 01 00 00 ........
005876EF 00 01 01 00 01 01 00 00 01 00 01 01 00 01 01 00 .......
005876FF 00 01 00 00 01 00 00 01 01 00 01 01 00 00 00 01 .........
0058770F 00 01 01 00 01 01 01 00 01 01 00 00 00 01 00 00 ........
0058771F 01 00 01 01 00 00 01 01 00 01 00 00 01 01 00 00 ........
0058772F 01 00 00 01 01 00 01 01 00 00 00 01 01 01 01 00 .......
0058773F 01 01 00 00 00 00 01 01 01 01 00 00 00 01 00 00 .........
0058774F 01 00 01 01 00 00 00 01 01 00 00 00 01 01 01 00 ........
0058775F 00 01 01 00 01 00 00 01 00 00 01 01 01 01 01 01 ......
0058776F 00 00 00 00 01 01 01 00 00 00 00 01 01 00 00 00 ...........
0058777F 01 01 01 01 00 00 01 00 00 01 01 01 00 01 00 01 ......
0058778F 01 00 00 00 01 00 01 00 00 01 01 01 00 00 00 01 .........
0058779F 01 00 01 00 01 01 01 00 00 00 00 01 01 00 01 01 .......
005877AF 00 01 01 00 00 01 00 01 01 00 01 00 00 01 00 00 .........
005877BF 00 01 00 01 01 00 00 01 01 00 01 01 00 01 00 00 ........
005877CF 00 01 01 00 01 00 01 01 00 00 00 01 01 00 00 00 .........
005877DF 01 01 01 01 00 00 01 00 00 01 00 00 01 01 00 01 .......
005877EF 01 01 00 01 00 01 00 00 00 00 01 01 01 01 01 01 ......
005877FF 00 00 00 00 01 01 01 00 00 00 01 01 00 01 01 00 .........
0058780F 01 00 00 01 00 01 01 00 01 01 00 00 00 00 00 01 .........
0058781F 00 00 01 01 01 00 00 01 01 00 00 01 01 01 00 00 ........
0058782F 00 01 01 00 01 01 00 00 01 01 01 00 00 01 00 01 .......
0058783F 00 00 01 00 01 00 00 01 00 00 01 01 01 01 01 00 ........
0058784F 01 01 00 00 00 01 01 00 01 01 00 00 00 00 00 01 .........
0058785F 00 00 01 01 01 01 00 00 01 00 01 01 00 01 01 00 .......
0058786F 00 01 00 00 01 01 00 01 00 00 01 00 01 00 01 00 .........
0058787F 01 01 01 00 00 01 01 00 01 00 00 01 00 01 00 00 ........
0058788F 01 01 00 00 01 01 00 01 01 00 01 00 01 00 01 00 .......
0058789F 00 01 00 00 01 00 00 01 00 00 01 01 01 01 01 01 .......
005878AF 00 01 00 00 00 01 01 00 00 00 01 01 00 01 00 01 .........
005878BF 01 00 01 00 00 00 00 00 01 01 00 01 00 00 01 01 .........
005878CF 01 01 00 00 01 00 01 00 00 00 01 01 01 01 00 01 .......
005878DF 00 01 01 00 00 00 00 01 01 00 01 01 00 01 01 00 ........
005878EF 01 00 01 00 00 01 00 00 01 01 00 00 01 00 01 00 .........
005878FF 01 00 00 01 01 00 01 00 01 01 00 00 00 00 01 01 ........
0058790F 00 00 01 01 01 00 01 00 00 01 00 01 01 00 01 01 .......
0058791F 00 00 01 01 00 01 00 01 01 00 00 00 01 01 00 00 .........
0058792F 00 01 01 01 00 00 01 00 00 01 01 01 00 01 00 01 .......
0058793F 01 00 00 00 01 00 01 00 00 01 00 00 01 01 00 01 .........
0058794F 01 01 00 00 01 01 00 01 01 00 01 01 00 00 01 01 ......
0058795F 00 00 01 00 00 01 00 01 01 00 01 01 00 00 01 00 .........
0058796F 00 00 01 01 00 00 01 01 00 01 00 00 01 01 01 00 ........
0058797F 01 00 00 01 00 01 00 00 00 00 01 01 01 00 01 01 ........
0058798F 00 01 00 00 01 01 01 01 00 00 01 01 00 00 01 00 ........
0058799F 01 00 00 01 00 01 01 00 01 01 00 00 00 00 00 00 ..........
005879AF 01 01 01 01 00 00 01 00 01 00 00 00 01 01 00 01 .......
005879BF 00 01 01 00 01 0F 12 0C 19 02 06 04 01 10 07 16 ...
c[]
00589E1C 01 01 01 01 00 01 01 00 01 01 00 01 00 00 00 01 ......//////1
00589E2C 00 00 01 00 00 01 01 00 00 00 01 01 00 00 00 00 ...........
00589E3C 00 00 01 00 00 01 00 00 01 00 01 01 01 01 01 00 ........
00589E4C 01 01 00 00 00 01 01 00 01 00 00 01 01 01 01 01 ......////////2
00589E5C 00 01 01 00 00 00 01 01 01 00 00 00 00 00 01 00 ..........
00589E6C 00 01 01 01 00 01 00 01 01 00 00 00 00 01 00 01 ........
00589E7C 01 01 01 00 01 00 01 01 01 01 01 01 00 00 01 00 ...../////////4
00589E8C 00 01 00 01 00 00 01 01 00 00 01 00 01 00 01 00 .........
00589E9C 00 00 01 00 00 00 01 01 01 00 01 00 00 00 00 01 ..........
00589EAC 00 00 01 00 01 01 00 01 01 01 00 01 00 01 01 01 ....../////////5
00589EBC 01 01 00 00 01 00 01 00 01 01 01 01 00 00 01 00 .......
00589ECC 00 01 00 00 01 00 00 01 00 00 00 00 00 00 01 01 .........../
00589EDC 00 01 01 01 00 00 01 00 00 01 00 01 00 00 00 01 .........///////6
00589EEC 01 01 00 01 01 00 01 01 00 01 00 00 00 01 01 00 .......
00589EFC 00 00 00 00 00 00 01 01 00 00 00 01 01 00 01 00 ...........
00589F0C 00 00 01 01 01 01 00 01 01 01 00 00 01 00 00 01 .......///////7
00589F1C 00 01 00 01 00 00 00 01 01 01 00 01 00 01 00 01 ........
00589F2C 00 00 01 01 00 00 00 01 00 01 00 00 01 00 00 00 ...........
00589F3C 00 00 00 00 00 01 01 01 00 01 01 00 01 00 00 01 .........////////8
00589F4C 01 00 00 01 01 01 01 01 00 01 01 00 00 00 00 00 ........
00589F5C 01 00 00 01 00 00 01 00 00 01 01 00 01 00 00 00 .........
00589F6C 00 00 01 01 01 01 01 01 00 00 01 00 00 01 00 01 .......////////9
00589F7C 01 00 00 01 00 01 00 01 00 01 00 01 00 00 00 00 .........
00589F8C 01 00 01 01 01 01 00 00 00 00 01 00 01 01 01 00 .......
00589F9C 00 01 00 01 01 00 01 01 00 01 00 01 01 01 00 01 .....///////////10
00589FAC 00 00 00 00 01 01 00 01 00 00 00 00 01 00 00 00 ............/
00589FBC 01 01 00 01 00 01 00 01 00 00 00 00 01 01 00 01 ........
00589FCC 00 01 00 00 01 00 00 01 01 00 01 00 01 00 00 01 .........///////11
00589FDC 01 01 01 00 01 00 00 01 01 00 00 00 01 00 01 00 ........
00589FEC 00 01 01 01 00 01 00 00 01 00 01 00 00 00 00 00 ..........
00589FFC 01 00 00 01 00 00 00 01 01 01 01 00 01 01 00 00 ........////////12
0058A00C 01 00 01 00 01 01 01 01 01 01 01 00 01 00 00 00 ......
0058A01C 00 01 00 00 01 00 01 01 00 00 01 00 00 00 00 01 ..........///////13
0058A02C 01 01 01 01 00 00 00 01 00 00 01 00 01 01 01 01 ......
0058A03C 01 00 00 00 00 00 01 00 01 00 00 01 00 00 01 00 ...........
0058A04C 00 01 00 00 01 00 01 00 00 00 00 01 01 00 01 00 ..........///////14
0058A05C 00 01 01 01 00 00 00 00 01 00 01 01 01 01 01 00 .......
0058A06C 01 00 01 00 00 01 00 01 01 01 00 01 00 01 00 01 .......
0058A07C 00 00 00 01 00 00 01 01 00 00 00 01 00 00 00 00 ............///////15
0058A08C 01 01 00 01 00 00 00 01 01 00 01 01 00 01 00 00 ........
0058A09C 00 01 00 01 00 01 01 00 01 00 00 01 00 00 00 01 .........
0058A0AC 00 00 01 00 00 00 01 00 00 01 01 00 01 00 00 00 ...........////////16
0058A0BC 00 01 01 00 00 01 00 00 01 01 00 00 00 01 01 00 .........
0058A0CC 01 01 01 01 00 01 01 00 00 01 01 01 00 00 00 00 .......
0058A0DC 01 00 01 01 01 00 01 00 00 00 00 00 00 01 00 00 ..........
0058A0EC 01 01 01 00 00 01 00 00 01 01 01 01 00 01 01 01 .....
0058A0FC 00 00 01 01 00 00 00 00 00 00 00 01 01 00 01 00 ...........
0058A10C 01 00 00 00 00 00 00 00 01 00 00 00 01 01 00 01 ...........
0058A11C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0058A12C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0058A13C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0058A14C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0058A15C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0058A16C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0058A17C 00 00 00 01 01 01 01 00 00 01 01 01 00 01 01 01 ......
0058A18C 01 01 01 00 01 00 00 00 01 00 00 00 00 01 00 01 .........
0058A19C 00 01 01 01 01 01 00 00 00 00 01 00 00 00 01 00 .........
经过分析之后.算法就是这样的
依次把输入字符的前8位拿出来
从第8位开始把字符ASCLL的第2位为1 $01放入di 为0$00放入di 中 第1位为1 $01放入SI 为 0 $00放入SI中
依次把输入字符的前8位拿出来
从第8位开始把字符ASCLL的第4位为1 $01放入di 为0$00放入di 中 第3位为1 $01放入SI 为 0 $00放入SI中
依次把输入字符的前8位拿出来
从第8位开始把字符ASCLL的第6位为1 $01放入di 为0$00放入di 中 第5位为1 $01放入SI 为 0 $00放入SI中
依次把输入字符的前8位拿出来
从第8位开始把字符ASCLL的与1的结果放入DI中 第7位为1 $01放入si 为0$00放入si
用b[] c[]中的值生成 e[]
si->di
e[]->si
这样16次
用di si 生成序列号字节
然后就是做注册机了
//源码如下
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,Unit2;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Label3: TLabel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
Edit1: TEdit;
Edit2: TEdit;
procedure Panel7Click(Sender: TObject);
procedure Panel6Click(Sender: TObject);
procedure Panel5Click(Sender: TObject);
private
{ Private declarations }
procedure caculate(str:string;var resl:string);
public
{ Public declarations }
end;
var
Form1: TForm1;
Form2: TForm2;
const
b: array[0..2079] of byte =
(
$00, $00, $00, $02, $00, $00, $00, $04, $00, $00, $00, $08, $00, $00, $00, $10,
$00, $00, $00, $20, $00, $01, $00, $01, $00, $00, $01, $01, $01, $00, $01, $00,
$01, $00, $01, $00, $00, $00, $01, $00, $00, $01, $00, $01, $00, $01, $00, $01,
$01, $01, $00, $00, $01, $00, $00, $01, $01, $01, $00, $00, $01, $01, $01, $01,
$00, $00, $01, $00, $00, $01, $01, $01, $00, $00, $01, $00, $00, $00, $01, $00,
$01, $01, $00, $00, $01, $01, $00, $01, $01, $00, $01, $00, $00, $01, $00, $00,
$01, $01, $00, $00, $01, $00, $01, $00, $00, $01, $00, $01, $01, $01, $00, $00,
$01, $00, $01, $01, $00, $00, $01, $00, $01, $01, $00, $01, $00, $00, $01, $01,
$00, $01, $00, $00, $01, $01, $01, $01, $00, $00, $01, $00, $00, $01, $00, $00,
$01, $00, $00, $01, $01, $01, $00, $01, $01, $00, $00, $01, $00, $00, $01, $01,
$00, $01, $00, $00, $01, $01, $00, $00, $01, $00, $00, $00, $01, $00, $01, $00,
$01, $01, $01, $01, $00, $01, $00, $00, $01, $01, $01, $00, $00, $01, $00, $00,
$01, $00, $01, $01, $00, $00, $01, $01, $00, $00, $01, $01, $00, $00, $01, $01,
$00, $01, $00, $00, $01, $00, $01, $01, $00, $00, $00, $01, $01, $00, $00, $01,
$00, $01, $01, $00, $01, $01, $01, $01, $00, $00, $01, $00, $00, $00, $00, $00,
$01, $00, $01, $01, $01, $01, $00, $01, $00, $01, $01, $00, $01, $01, $00, $00,
$01, $00, $00, $01, $00, $00, $01, $00, $00, $01, $00, $01, $01, $01, $00, $00,
$01, $01, $00, $00, $01, $00, $01, $00, $00, $00, $01, $01, $00, $01, $00, $00,
$01, $01, $00, $01, $01, $01, $01, $00, $01, $00, $00, $01, $00, $00, $00, $01,
$01, $00, $01, $01, $00, $00, $00, $00, $01, $01, $01, $00, $01, $01, $01, $01,
$00, $00, $00, $00, $01, $01, $01, $01, $00, $00, $01, $00, $01, $00, $01, $00,
$01, $01, $00, $00, $00, $01, $00, $01, $01, $01, $00, $00, $01, $00, $01, $00,
$00, $01, $00, $00, $01, $01, $01, $00, $00, $00, $01, $01, $00, $00, $00, $01,
$01, $00, $01, $00, $01, $01, $01, $01, $00, $00, $01, $01, $00, $00, $00, $00,
$01, $00, $01, $01, $00, $00, $00, $00, $01, $01, $00, $01, $01, $01, $01, $00,
$00, $00, $00, $01, $01, $00, $01, $00, $01, $01, $00, $01, $01, $00, $01, $01,
$00, $00, $01, $00, $00, $01, $00, $01, $00, $00, $01, $00, $01, $01, $00, $00,
$01, $00, $01, $01, $00, $00, $00, $01, $01, $01, $00, $00, $01, $01, $01, $00,
$01, $00, $00, $01, $00, $00, $01, $01, $01, $00, $00, $01, $00, $01, $00, $00,
$01, $01, $00, $00, $01, $01, $00, $01, $00, $00, $01, $01, $00, $01, $01, $00,
$01, $00, $00, $01, $00, $00, $01, $01, $01, $01, $00, $00, $00, $01, $00, $00,
$01, $00, $01, $01, $00, $00, $01, $00, $00, $01, $01, $01, $00, $00, $00, $01,
$01, $01, $00, $00, $01, $00, $00, $01, $00, $00, $01, $01, $01, $01, $01, $01,
$00, $00, $00, $00, $01, $01, $01, $01, $00, $00, $01, $00, $00, $00, $00, $01,
$01, $01, $00, $00, $01, $00, $01, $01, $01, $01, $00, $01, $00, $00, $01, $01,
$00, $00, $01, $00, $00, $01, $00, $01, $00, $01, $01, $00, $00, $01, $01, $00,
$01, $00, $00, $01, $00, $01, $01, $00, $00, $01, $00, $00, $01, $01, $00, $00,
$01, $00, $00, $01, $01, $01, $00, $00, $01, $01, $00, $00, $01, $00, $01, $00,
$01, $01, $00, $01, $00, $00, $01, $01, $01, $01, $00, $00, $01, $01, $00, $00,
$00, $01, $00, $00, $01, $00, $01, $01, $00, $00, $01, $01, $00, $01, $00, $01,
$01, $00, $00, $00, $01, $01, $00, $00, $00, $00, $01, $01, $00, $00, $01, $01,
$01, $00, $01, $01, $00, $00, $00, $00, $01, $01, $00, $01, $01, $00, $01, $01,
$01, $00, $01, $00, $00, $01, $01, $00, $00, $00, $01, $01, $00, $00, $00, $01,
$01, $01, $00, $01, $00, $01, $01, $01, $00, $00, $01, $00, $00, $00, $00, $00,
$01, $01, $00, $01, $01, $00, $00, $01, $00, $01, $00, $00, $01, $01, $01, $01,
$00, $00, $01, $00, $01, $01, $01, $01, $00, $00, $01, $00, $00, $00, $00, $00,
$01, $00, $01, $01, $01, $01, $00, $00, $01, $01, $01, $00, $00, $01, $01, $00,
$01, $00, $00, $01, $00, $00, $01, $00, $00, $01, $00, $01, $01, $01, $00, $00,
$01, $01, $00, $00, $01, $00, $01, $00, $01, $00, $00, $01, $00, $00, $01, $01,
$00, $01, $01, $00, $01, $00, $01, $01, $00, $01, $00, $00, $01, $00, $01, $00,
$01, $01, $00, $01, $00, $01, $00, $00, $01, $01, $01, $01, $00, $01, $00, $01,
$00, $00, $00, $00, $01, $01, $00, $00, $00, $00, $01, $01, $00, $01, $00, $01,
$01, $01, $00, $00, $01, $00, $00, $01, $01, $00, $01, $00, $01, $01, $01, $00,
$00, $00, $01, $01, $00, $01, $00, $00, $01, $00, $00, $01, $00, $00, $01, $00,
$01, $01, $01, $01, $00, $00, $01, $01, $00, $01, $01, $00, $01, $01, $00, $01,
$01, $00, $00, $00, $00, $00, $01, $01, $01, $00, $00, $01, $00, $01, $00, $01,
$00, $00, $01, $00, $01, $01, $00, $00, $01, $00, $01, $01, $00, $00, $01, $00,
$01, $01, $00, $00, $01, $01, $00, $00, $01, $01, $00, $00, $01, $00, $01, $00,
$01, $01, $00, $01, $00, $01, $00, $00, $01, $01, $00, $00, $00, $01, $00, $01,
$01, $00, $01, $00, $01, $00, $01, $00, $01, $01, $00, $01, $01, $00, $01, $01,
$00, $00, $01, $00, $00, $01, $00, $01, $00, $00, $01, $00, $01, $00, $01, $00,
$01, $01, $00, $00, $01, $01, $00, $00, $01, $01, $01, $00, $00, $00, $00, $00,
$01, $01, $00, $01, $01, $00, $01, $01, $00, $00, $00, $01, $01, $01, $01, $01,
$00, $00, $01, $00, $00, $01, $00, $01, $00, $00, $01, $01, $00, $00, $01, $00,
$01, $01, $00, $01, $00, $00, $00, $01, $01, $01, $00, $00, $01, $01, $01, $00,
$00, $00, $01, $01, $00, $01, $00, $00, $00, $01, $01, $01, $00, $01, $01, $01,
$00, $00, $00, $00, $01, $00, $01, $01, $00, $01, $01, $00, $00, $01, $01, $00,
$01, $00, $00, $01, $00, $00, $00, $01, $00, $00, $01, $01, $01, $01, $00, $00,
$01, $01, $01, $00, $00, $01, $00, $00, $01, $00, $00, $00, $01, $00, $01, $01,
$01, $01, $00, $01, $00, $01, $00, $00, $01, $01, $01, $01, $00, $00, $01, $01,
$00, $00, $00, $00, $01, $01, $00, $00, $01, $01, $01, $00, $01, $00, $00, $00,
$01, $01, $00, $01, $00, $00, $01, $01, $01, $01, $00, $00, $00, $00, $00, $00,
$01, $00, $01, $01, $01, $00, $00, $01, $00, $01, $01, $00, $01, $01, $01, $01,
$00, $00, $00, $01, $00, $01, $00, $00, $01, $01, $01, $01, $00, $00, $00, $00,
$01, $01, $00, $01, $00, $00, $01, $00, $00, $01, $00, $01, $01, $01, $00, $00,
$01, $00, $01, $01, $00, $00, $01, $00, $00, $00, $01, $01, $00, $01, $00, $01,
$00, $00, $01, $01, $01, $00, $01, $00, $00, $01, $00, $00, $01, $00, $01, $01,
$01, $01, $00, $01, $00, $01, $00, $01, $01, $00, $01, $00, $01, $00, $01, $00,
$00, $01, $00, $00, $01, $00, $00, $01, $00, $01, $01, $00, $01, $00, $01, $01,
$00, $00, $01, $01, $00, $01, $01, $00, $00, $00, $01, $01, $00, $01, $00, $01,
$01, $00, $01, $00, $00, $01, $01, $00, $01, $01, $00, $00, $00, $00, $00, $00,
$01, $00, $01, $01, $01, $01, $00, $00, $00, $01, $01, $01, $01, $00, $00, $01,
$01, $00, $00, $01, $00, $01, $01, $01, $00, $00, $01, $00, $00, $00, $00, $01,
$01, $01, $00, $00, $01, $00, $01, $00, $01, $01, $00, $01, $00, $01, $00, $00,
$00, $01, $01, $00, $01, $01, $00, $00, $01, $00, $01, $01, $00, $01, $01, $00,
$00, $01, $00, $00, $01, $00, $00, $01, $01, $00, $01, $01, $00, $00, $00, $01,
$00, $01, $01, $00, $01, $01, $01, $00, $01, $01, $00, $00, $00, $01, $00, $00,
$01, $00, $01, $01, $00, $00, $01, $01, $00, $01, $00, $00, $01, $01, $00, $00,
$01, $00, $00, $01, $01, $00, $01, $01, $00, $00, $00, $01, $01, $01, $01, $00,
$01, $01, $00, $00, $00, $00, $01, $01, $01, $01, $00, $00, $00, $01, $00, $00,
$01, $00, $01, $01, $00, $00, $00, $01, $01, $00, $00, $00, $01, $01, $01, $00,
$00, $01, $01, $00, $01, $00, $00, $01, $00, $00, $01, $01, $01, $01, $01, $01,
$00, $00, $00, $00, $01, $01, $01, $00, $00, $00, $00, $01, $01, $00, $00, $00,
$01, $01, $01, $01, $00, $00, $01, $00, $00, $01, $01, $01, $00, $01, $00, $01,
$01, $00, $00, $00, $01, $00, $01, $00, $00, $01, $01, $01, $00, $00, $00, $01,
$01, $00, $01, $00, $01, $01, $01, $00, $00, $00, $00, $01, $01, $00, $01, $01,
$00, $01, $01, $00, $00, $01, $00, $01, $01, $00, $01, $00, $00, $01, $00, $00,
$00, $01, $00, $01, $01, $00, $00, $01, $01, $00, $01, $01, $00, $01, $00, $00,
$00, $01, $01, $00, $01, $00, $01, $01, $00, $00, $00, $01, $01, $00, $00, $00,
$01, $01, $01, $01, $00, $00, $01, $00, $00, $01, $00, $00, $01, $01, $00, $01,
$01, $01, $00, $01, $00, $01, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01,
$00, $00, $00, $00, $01, $01, $01, $00, $00, $00, $01, $01, $00, $01, $01, $00,
$01, $00, $00, $01, $00, $01, $01, $00, $01, $01, $00, $00, $00, $00, $00, $01,
$00, $00, $01, $01, $01, $00, $00, $01, $01, $00, $00, $01, $01, $01, $00, $00,
$00, $01, $01, $00, $01, $01, $00, $00, $01, $01, $01, $00, $00, $01, $00, $01,
$00, $00, $01, $00, $01, $00, $00, $01, $00, $00, $01, $01, $01, $01, $01, $00,
$01, $01, $00, $00, $00, $01, $01, $00, $01, $01, $00, $00, $00, $00, $00, $01,
$00, $00, $01, $01, $01, $01, $00, $00, $01, $00, $01, $01, $00, $01, $01, $00,
$00, $01, $00, $00, $01, $01, $00, $01, $00, $00, $01, $00, $01, $00, $01, $00,
$01, $01, $01, $00, $00, $01, $01, $00, $01, $00, $00, $01, $00, $01, $00, $00,
$01, $01, $00, $00, $01, $01, $00, $01, $01, $00, $01, $00, $01, $00, $01, $00,
$00, $01, $00, $00, $01, $00, $00, $01, $00, $00, $01, $01, $01, $01, $01, $01,
$00, $01, $00, $00, $00, $01, $01, $00, $00, $00, $01, $01, $00, $01, $00, $01,
$01, $00, $01, $00, $00, $00, $00, $00, $01, $01, $00, $01, $00, $00, $01, $01,
$01, $01, $00, $00, $01, $00, $01, $00, $00, $00, $01, $01, $01, $01, $00, $01,
$00, $01, $01, $00, $00, $00, $00, $01, $01, $00, $01, $01, $00, $01, $01, $00,
$01, $00, $01, $00, $00, $01, $00, $00, $01, $01, $00, $00, $01, $00, $01, $00,
$01, $00, $00, $01, $01, $00, $01, $00, $01, $01, $00, $00, $00, $00, $01, $01,
$00, $00, $01, $01, $01, $00, $01, $00, $00, $01, $00, $01, $01, $00, $01, $01,
$00, $00, $01, $01, $00, $01, $00, $01, $01, $00, $00, $00, $01, $01, $00, $00,
$00, $01, $01, $01, $00, $00, $01, $00, $00, $01, $01, $01, $00, $01, $00, $01,
$01, $00, $00, $00, $01, $00, $01, $00, $00, $01, $00, $00, $01, $01, $00, $01,
$01, $01, $00, $00, $01, $01, $00, $01, $01, $00, $01, $01, $00, $00, $01, $01,
$00, $00, $01, $00, $00, $01, $00, $01, $01, $00, $01, $01, $00, $00, $01, $00,
$00, $00, $01, $01, $00, $00, $01, $01, $00, $01, $00, $00, $01, $01, $01, $00,
$01, $00, $00, $01, $00, $01, $00, $00, $00, $00, $01, $01, $01, $00, $01, $01,
$00, $01, $00, $00, $01, $01, $01, $01, $00, $00, $01, $01, $00, $00, $01, $00,
$01, $00, $00, $01, $00, $01, $01, $00, $01, $01, $00, $00, $00, $00, $00, $00,
$01, $01, $01, $01, $00, $00, $01, $00, $01, $00, $00, $00, $01, $01, $00, $01,
$00, $01, $01, $00, $01, $0F, $12, $0C, $19, $02, $06, $04, $01, $10, $07, $16
);
const
d: array[0..911] of byte =
(
$01, $01, $01, $01, $00, $01, $01, $00, $01, $01, $00, $01, $00, $00, $00, $01,
$00, $00, $01, $00, $00, $01, $01, $00, $00, $00, $01, $01, $00, $00, $00, $00,
$00, $00, $01, $00, $00, $01, $00, $00, $01, $00, $01, $01, $01, $01, $01, $00,
$01, $01, $00, $00, $00, $01, $01, $00, $01, $00, $00, $01, $01, $01, $01, $01,
$00, $01, $01, $00, $00, $00, $01, $01, $01, $00, $00, $00, $00, $00, $01, $00,
$00, $01, $01, $01, $00, $01, $00, $01, $01, $00, $00, $00, $00, $01, $00, $01,
$01, $01, $01, $00, $01, $00, $01, $01, $01, $01, $01, $01, $00, $00, $01, $00,
$00, $01, $00, $01, $00, $00, $01, $01, $00, $00, $01, $00, $01, $00, $01, $00,
$00, $00, $01, $00, $00, $00, $01, $01, $01, $00, $01, $00, $00, $00, $00, $01,
$00, $00, $01, $00, $01, $01, $00, $01, $01, $01, $00, $01, $00, $01, $01, $01,
$01, $01, $00, $00, $01, $00, $01, $00, $01, $01, $01, $01, $00, $00, $01, $00,
$00, $01, $00, $00, $01, $00, $00, $01, $00, $00, $00, $00, $00, $00, $01, $01,
$00, $01, $01, $01, $00, $00, $01, $00, $00, $01, $00, $01, $00, $00, $00, $01,
$01, $01, $00, $01, $01, $00, $01, $01, $00, $01, $00, $00, $00, $01, $01, $00,
$00, $00, $00, $00, $00, $00, $01, $01, $00, $00, $00, $01, $01, $00, $01, $00,
$00, $00, $01, $01, $01, $01, $00, $01, $01, $01, $00, $00, $01, $00, $00, $01,
$00, $01, $00, $01, $00, $00, $00, $01, $01, $01, $00, $01, $00, $01, $00, $01,
$00, $00, $01, $01, $00, $00, $00, $01, $00, $01, $00, $00, $01, $00, $00, $00,
$00, $00, $00, $00, $00, $01, $01, $01, $00, $01, $01, $00, $01, $00, $00, $01,
$01, $00, $00, $01, $01, $01, $01, $01, $00, $01, $01, $00, $00, $00, $00, $00,
$01, $00, $00, $01, $00, $00, $01, $00, $00, $01, $01, $00, $01, $00, $00, $00,
$00, $00, $01, $01, $01, $01, $01, $01, $00, $00, $01, $00, $00, $01, $00, $01,
$01, $00, $00, $01, $00, $01, $00, $01, $00, $01, $00, $01, $00, $00, $00, $00,
$01, $00, $01, $01, $01, $01, $00, $00, $00, $00, $01, $00, $01, $01, $01, $00,
$00, $01, $00, $01, $01, $00, $01, $01, $00, $01, $00, $01, $01, $01, $00, $01,
$00, $00, $00, $00, $01, $01, $00, $01, $00, $00, $00, $00, $01, $00, $00, $00,
$01, $01, $00, $01, $00, $01, $00, $01, $00, $00, $00, $00, $01, $01, $00, $01,
$00, $01, $00, $00, $01, $00, $00, $01, $01, $00, $01, $00, $01, $00, $00, $01,
$01, $01, $01, $00, $01, $00, $00, $01, $01, $00, $00, $00, $01, $00, $01, $00,
$00, $01, $01, $01, $00, $01, $00, $00, $01, $00, $01, $00, $00, $00, $00, $00,
$01, $00, $00, $01, $00, $00, $00, $01, $01, $01, $01, $00, $01, $01, $00, $00,
$01, $00, $01, $00, $01, $01, $01, $01, $01, $01, $01, $00, $01, $00, $00, $00,
$00, $01, $00, $00, $01, $00, $01, $01, $00, $00, $01, $00, $00, $00, $00, $01,
$01, $01, $01, $01, $00, $00, $00, $01, $00, $00, $01, $00, $01, $01, $01, $01,
$01, $00, $00, $00, $00, $00, $01, $00, $01, $00, $00, $01, $00, $00, $01, $00,
$00, $01, $00, $00, $01, $00, $01, $00, $00, $00, $00, $01, $01, $00, $01, $00,
$00, $01, $01, $01, $00, $00, $00, $00, $01, $00, $01, $01, $01, $01, $01, $00,
$01, $00, $01, $00, $00, $01, $00, $01, $01, $01, $00, $01, $00, $01, $00, $01,
$00, $00, $00, $01, $00, $00, $01, $01, $00, $00, $00, $01, $00, $00, $00, $00,
$01, $01, $00, $01, $00, $00, $00, $01, $01, $00, $01, $01, $00, $01, $00, $00,
$00, $01, $00, $01, $00, $01, $01, $00, $01, $00, $00, $01, $00, $00, $00, $01,
$00, $00, $01, $00, $00, $00, $01, $00, $00, $01, $01, $00, $01, $00, $00, $00,
$00, $01, $01, $00, $00, $01, $00, $00, $01, $01, $00, $00, $00, $01, $01, $00,
$01, $01, $01, $01, $00, $01, $01, $00, $00, $01, $01, $01, $00, $00, $00, $00,
$01, $00, $01, $01, $01, $00, $01, $00, $00, $00, $00, $00, $00, $01, $00, $00,
$01, $01, $01, $00, $00, $01, $00, $00, $01, $01, $01, $01, $00, $01, $01, $01,
$00, $00, $01, $01, $00, $00, $00, $00, $00, $00, $00, $01, $01, $00, $01, $00,
$01, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $01, $01, $00, $01,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $01, $01, $01, $01, $00, $00, $01, $01, $01, $00, $01, $01, $01,
$01, $01, $01, $00, $01, $00, $00, $00, $01, $00, $00, $00, $00, $01, $00, $01,
$00, $01, $01, $01, $01, $01, $00, $00, $00, $00, $01, $00, $00, $00, $01, $00
);
const
keyA: array[0..127]of byte =
(
$1F, $0 , $4 , $5, $0, $1 , $1 , $2, $2, $3 , $3 , $4 , $8, $10, $16, $1E ,
$3, $6 , $8, $B, $4 , $7, $5, $8, $6, $9, $7, $A , $C, $1B, $1, $11,
$7, $C, $C, $11, $8, $D , $9, $E, $A , $F, $B, $10, $17, $F, $1D, $5,
$B, $12, $10, $17, $C, $13, $D, $14, $E, $15, $F, $16, $19, $13, $9, $0,
$F, $18, $14, $1D, $10, $19, $11, $1A, $12, $1B, $13, $1C, $7, $D, $18, $2,
$13, $1E, $18, $23, $14, $1F, $15, $20, $16, $21, $17, $22, $3, $1C, $A, $12,
$17, $24, $1C, $29, $18, $25, $19, $26, $1A, $27, $1B, $28, $1F, $B, $15, $6,
$1B, $2A, $0, $2F, $1C, $2B, $1D, $2C, $1E, $2D, $1F, $2E, $4, $1A, $E, $14
);
const
keyB: array[0..7]of word = ( $15, $55 , $95 ,$D5, $115, $155 , $195 , $1D5 );
const
Digits: array[0..15] of char =
('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
const ddi:array[0..31]of byte=
(
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01,
$00, $00, $01, $01, $01, $00, $00, $00, $00, $00, $00, $01, $00, $01, $00, $01
) ;
const dsi:array[0..31]of byte=
(
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $01, $01, $00
);
implementation
{$R *.dfm}
procedure tform1.caculate(str:string;var resl:string);
var
i,j,k:integer;
di: array[0..31]of byte ;
si: array[0..31]of byte ;
e:array[0..31]of byte;
kc:array[0..15]of byte ;
c:array[0..47]of byte ;
a:byte;
name:string ;
result:string;
begin
Result := '';
name:=str;
j:=0;
i:=8;
while i>0 do
begin
if ((ord(name[i])and $40 )= $40) then di[j] :=$01 else di[j]:=$00;
if ((ord(name[i])and $80 )= $80) then si[j] :=$01 else si[j]:=$00;
inc(j);
dec(i);
end;
i:=8;
while i>0 do
begin
if ((ord(name[i])and $10 )= $10) then di[j] :=$01 else di[j]:=$00;
if ((ord(name[i])and $20 )= $20) then si[j] :=$01 else si[j]:=$00;
inc(j);
dec(i);
end;
i:=8;
while i>0 do
begin
if ((ord(name[i])and $4 )= $4) then di[j] :=$01 else di[j]:=$00;
if ((ord(name[i])and $8 )= $8) then si[j] :=$01 else si[j]:=$00;
inc(j);
dec(i);
end;
i:=8;
while i>0 do
begin
di[j] :=ord(name[i]) and $01;
if ((ord(name[i])and $2)= $2) then si[j] :=$01 else si[j]:=$00;
inc(j);
dec(i);
end;
for i:=0 to 31 do e[i]:=$00;
for k:=0 to 15 do
begin
for i:=0 to 47 do c[i]:=d[k*48+i] ;
for i:=0 to 7 do
begin
for j:=0 to 15 do kc[j]:=keyA[i*16+j];
a:=
(((si[kc[0]] xor c[kc[1]]) and $0FF)shl 5) or
(((si[kc[2]] xor c[kc[3]]) and $0FF)shl 4) or
(((si[kc[4]] xor c[kc[5]]) and $0FF)shl 3) or
(((si[kc[6]] xor c[kc[7]]) and $0FF)shl 2) or
(((si[kc[8]] xor c[kc[9]]) and $0FF)shl 1) or
(((si[kc[10]] xor c[kc[11]]) and $0FF)shl 0);
asm
//mov bl, byte ptr[b+$53] ;
end;
e[kc[12]] :=b[a+keyB[i]+$000] xor di[kc[12]] ;
e[kc[13]] :=b[a+keyB[i]+$200] xor di[kc[13]] ;
e[kc[14]] :=b[a+keyB[i]+$400] xor di[kc[14]] ;
e[kc[15]] :=b[a+keyB[i]+$600] xor di[kc[15]] ;
end;
for i:=0 to 31 do di[i]:=si[i];
for i:=0 to 31 do si[i]:=e[i];
end;
for i:=0 to 7 do
begin
a :=
di[7-i]shl 7 or
si[7-i]shl 6 or
di[15-i]shl 5 or
si[15-i]shl 4 or
di[23-i]shl 3 or
si[23-i]shl 2 or
di[31-i]shl 1 or
si[31-i]shl 0 ;
Result := Result + Digits[(ord(a)and $f0) shr 4] + Digits[ord(a) and $0f];
end;
resl:=result;
end;
procedure TForm1.Panel7Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Panel6Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Panel5Click(Sender: TObject);
var intext:string;
var outtext:string;
begin
intext:=edit1.text;
if (length(intext)<4) then
begin
Form2:=TForm2.Create(self);
Form2.Showmodal; //showmessage('输入字符应大于4位!');
exit;
end;
caculate(intext,outtext);
edit2.text:=outtext;
end;
end.
时间仓促不周之处请包涵....有什么问题请指出...
395940818@qq.com