首页
社区
课程
招聘
HELP~!注册算法!请问下面的代码是怎么变换字符串的???
发表于: 2004-4-23 18:14 9475

HELP~!注册算法!请问下面的代码是怎么变换字符串的???

2004-4-23 18:14
9475
0046E874   55                     push    ebp
0046E875   8BEC                   mov     ebp, esp
0046E877   83C4F0                 add     esp, -$10
0046E87A   53                     push    ebx
0046E87B   56                     push    esi
0046E87C   57                     push    edi
0046E87D   33C9                   xor     ecx, ecx
0046E87F   894DF0                 mov     [ebp-$10], ecx
0046E882   894DF4                 mov     [ebp-$0C], ecx
0046E885   8955FC                 mov     [ebp-$04], edx
0046E888   8BF8                   mov     edi, eax
0046E88A   33C0                   xor     eax, eax
0046E88C   55                     push    ebp

* Possible String Reference to: '椐U?腚_^[?]?勒??鹩VW3?M?M?U
|                                ?E?勒h?F'
|
0046E88D   6804E94600             push    $0046E904

***** TRY
|
0046E892   64FF30                 push    dword ptr fs:[eax]
0046E895   648920                 mov     fs:[eax], esp
0046E898   8D45F4                 lea     eax, [ebp-$0C]

* Reference to: System.@LStrClr(void;void);
|
0046E89B   E8E85BF9FF             call    00404488
0046E8A0   8BC7                   mov     eax, edi

* Reference to: System.@LStrLen(String):Integer;
|           or: System.@DynArrayLength;
|           or: System.DynArraySize(Pointer):Integer;
|
0046E8A2   E8995EF9FF             call    00404740
0046E8A7   8945F8                 mov     [ebp-$08], eax
0046E8AA   8BC7                   mov     eax, edi

* Reference to: System.@LStrLen(String):Integer;
|           or: System.@DynArrayLength;
|           or: System.DynArraySize(Pointer):Integer;
|
0046E8AC   E88F5EF9FF             call    00404740
0046E8B1   8BF0                   mov     esi, eax
0046E8B3   85F6                   test    esi, esi
0046E8B5   7E27                   jle     0046E8DE
0046E8B7   BB01000000             mov     ebx, $00000001
0046E8BC   8D45F0                 lea     eax, [ebp-$10]

* Reference to Screen
|
0046E8BF   8B55F8                 mov     edx, [ebp-$08]
0046E8C2   2BD3                   sub     edx, ebx
0046E8C4   0FB61417               movzx   edx, byte ptr [edi+edx]
0046E8C8   03D3                   add     edx, ebx

* Reference to: System.@LStrFromChar(String;String;Char);
|           or: System.@LStrFromWChar(String;String;WideChar);
|           or: System.@WStrFromChar(WideString;WideString;Char);
|           or: System.@WStrFromWChar(WideString;WideString;WideChar);
|
0046E8CA   E8995DF9FF             call    00404668
0046E8CF   8B55F0                 mov     edx, [ebp-$10]
0046E8D2   8D45F4                 lea     eax, [ebp-$0C]

* Reference to: System.@LStrCat;
|
0046E8D5   E86E5EF9FF             call    00404748
0046E8DA   43                     inc     ebx
0046E8DB   4E                     dec     esi
0046E8DC   75DE                   jnz     0046E8BC
0046E8DE   8B45FC                 mov     eax, [ebp-$04]
0046E8E1   8B55F4                 mov     edx, [ebp-$0C]

* Reference to: System.@LStrAsg(void;void;void;void);
|
0046E8E4   E8F35BF9FF             call    004044DC
0046E8E9   33C0                   xor     eax, eax
0046E8EB   5A                     pop     edx
0046E8EC   59                     pop     ecx
0046E8ED   59                     pop     ecx
0046E8EE   648910                 mov     fs:[eax], edx

****** FINALLY
|

* Possible String Reference to: '_^[?]?勒??鹩VW3?M?M?U?E?勒
|                                h?F'
|
0046E8F1   680BE94600             push    $0046E90B
0046E8F6   8D45F0                 lea     eax, [ebp-$10]
0046E8F9   BA02000000             mov     edx, $00000002

* Reference to: System.@LStrArrayClr(void;void;Integer);
|
0046E8FE   E8A95BF9FF             call    004044AC
0046E903   C3                     ret

* Reference to: System.@HandleFinally;
|
0046E904   E9A755F9FF             jmp     00403EB0
0046E909   EBEB                   jmp     0046E8F6

****** END
|
0046E90B   5F                     pop     edi
0046E90C   5E                     pop     esi
0046E90D   5B                     pop     ebx
0046E90E   8BE5                   mov     esp, ebp
0046E910   5D                     pop     ebp
0046E911   C3                     ret

local varriables:
                [exp-$04]
                [exp-$08]
                [exp-$0c]
                [exp-$10]

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

收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 207
活跃值: (56)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
0046E874   55                     push    ebp
0046E875   8BEC                   mov     ebp, esp
0046E877   83C4F0                 add     esp, -$10
0046E87A   53                     push    ebx
0046E87B   56                     push    esi
0046E87C   57                     push    edi
0046E87D   33C9                   xor     ecx, ecx
0046E87F   894DF0                 mov     [ebp-$10], ecx
0046E882   894DF4                 mov     [ebp-$0C], ecx
0046E885   8955FC                 mov     [ebp-$04], edx
0046E888   8BF8                   mov     edi, eax
0046E88A   33C0                   xor     eax, eax
0046E88C   55                     push    ebp

* Possible String Reference to: '椐U?腚_^[?]?勒??鹩VW3?M?M?U
|                                ?E?勒h?F'
|
0046E88D   6804E94600             push    $0046E904

***** TRY
|
0046E892   64FF30                 push    dword ptr fs:[eax]
0046E895   648920                 mov     fs:[eax], esp
0046E898   8D45F4                 lea     eax, [ebp-$0C]

* Reference to: System.@LStrClr(void;void);
|
0046E89B   E8E85BF9FF             call    00404488
0046E8A0   8BC7                   mov     eax, edi

* Reference to: System.@LStrLen(String):Integer;
|           or: System.@DynArrayLength;
|           or: System.DynArraySize(Pointer):Integer;
|
0046E8A2   E8995EF9FF             call    00404740
0046E8A7   8945F8                 mov     [ebp-$08], eax                        ;[ebp-$08] save the String Length
0046E8AA   8BC7                   mov     eax, edi                                ;edi the save the String pointer

* Reference to: System.@LStrLen(String):Integer;
|           or: System.@DynArrayLength;
|           or: System.DynArraySize(Pointer):Integer;
|
0046E8AC   E88F5EF9FF             call    00404740
0046E8B1   8BF0                   mov     esi, eax                                ;esi为计数器
0046E8B3   85F6                   test    esi, esi                                ;为空?
0046E8B5   7E27                   jle     0046E8DE                                ;就跳走
0046E8B7   BB01000000             mov     ebx, $00000001                       

;******************************************************************                ;loop start

0046E8BC   8D45F0                 lea     eax, [ebp-$10]

* Reference to Screen
|
0046E8BF   8B55F8                 mov     edx, [ebp-$08]                        ;       
0046E8C2   2BD3                   sub     edx, ebx                                ;Length-i
0046E8C4   0FB61417               movzx   edx, byte ptr [edi+edx]                ;CharinString[(l+1)-i]
0046E8C8   03D3                   add     edx, ebx                                ;CharinString[(l+1)-i]+i

* Reference to: System.@LStrFromChar(String;String;Char);
|           or: System.@LStrFromWChar(String;String;WideChar);
|           or: System.@WStrFromChar(WideString;WideString;Char);
|           or: System.@WStrFromWChar(WideString;WideString;WideChar);               
|
0046E8CA   E8995DF9FF             call    00404668                                ;转换为Char
0046E8CF   8B55F0                 mov     edx, [ebp-$10]                        ;edx save the result of change
0046E8D2   8D45F4                 lea     eax, [ebp-$0C]

* Reference to: System.@LStrCat;                                                ;String合并
|
0046E8D5   E86E5EF9FF             call    00404748
0046E8DA   43                     inc     ebx                                        ;i+1               
0046E8DB   4E                     dec     esi                                        ;计数器-1       
0046E8DC   75DE                   jnz     0046E8BC       
       
;******************************************************************                ;loop end

0046E8DE   8B45FC                 mov     eax, [ebp-$04]
0046E8E1   8B55F4                 mov     edx, [ebp-$0C]

* Reference to: System.@LStrAsg(void;void;void;void);
|
0046E8E4   E8F35BF9FF             call    004044DC
0046E8E9   33C0                   xor     eax, eax
0046E8EB   5A                     pop     edx
0046E8EC   59                     pop     ecx
0046E8ED   59                     pop     ecx
0046E8EE   648910                 mov     fs:[eax], edx

****** FINALLY
|

* Possible String Reference to: '_^[?]?勒??鹩VW3?M?M?U?E?勒
|                                h?F'
|
0046E8F1   680BE94600             push    $0046E90B
0046E8F6   8D45F0                 lea     eax, [ebp-$10]
0046E8F9   BA02000000             mov     edx, $00000002

* Reference to: System.@LStrArrayClr(void;void;Integer);
|
0046E8FE   E8A95BF9FF             call    004044AC
0046E903   C3                     ret

* Reference to: System.@HandleFinally;
|
0046E904   E9A755F9FF             jmp     00403EB0
0046E909   EBEB                   jmp     0046E8F6

****** END
|
0046E90B   5F                     pop     edi
0046E90C   5E                     pop     esi
0046E90D   5B                     pop     ebx
0046E90E   8BE5                   mov     esp, ebp
0046E910   5D                     pop     ebp
0046E911   C3                     ret

local varriables:
                [exp-$04]       
                [exp-$08]        ;save the String Length
                [exp-$0c]
                [exp-$10]

Exemple:
i                1        2        3        4        5        6        7
原文:                g        6        1        4        4        c        3

+Length+1-i        7        6        5        4        3        2        1

倒序:                n        <        6        8        7        e        4

密文:                4        e        7        8        6        <        n
2004-4-26 20:44
0
游客
登录 | 注册 方可回帖
返回
//