首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

懂汇编的帮忙看下解决办法

2013-04-20 
懂汇编的帮忙看下这个函数传了两个参数 1:地址 2:字符串 返回是异或后的字符串 我不懂汇编 麻烦帮忙看下这

懂汇编的帮忙看下
这个函数传了两个参数 1:地址 2:字符串 返回是异或后的字符串 我不懂汇编 麻烦帮忙看下这段delphi的代码应该怎么写 谢谢!


00A13B30  /$  51                      push    ecx
00A13B31  |.  8B5424 08               mov     edx, dword ptr [esp+8]
00A13B35  |.  55                      push    ebp
00A13B36  |.  57                      push    edi
00A13B37  |.  8BFA                    mov     edi, edx
00A13B39  |.  83C9 FF                 or      ecx, FFFFFFFF
00A13B3C  |.  33C0                    xor     eax, eax
00A13B3E  |.  F2:AE                   repne   scas byte ptr es:[edi]
00A13B40  |.  F7D1                    not     ecx
00A13B42  |.  49                      dec     ecx
00A13B43  |.  8BE9                    mov     ebp, ecx
00A13B45  |.  85ED                    test    ebp, ebp
00A13B47  |.  0F8E 83000000           jle     00A13BD0
00A13B4D  |.  53                      push    ebx
00A13B4E  |.  56                      push    esi
00A13B4F  |.  8B7424 1C               mov     esi, dword ptr [esp+1C]
00A13B53  |.  8BFA                    mov     edi, edx
00A13B55  |.  2BFE                    sub     edi, esi
00A13B57  |>  8A0437                  /mov     al, byte ptr [edi+esi]


00A13B5A  |.  884424 18               |mov     byte ptr [esp+18], al
00A13B5E  |.  C0E8 04                 |shr     al, 4
00A13B61  |.  8AD8                    |mov     bl, al
00A13B63  |.  8B4424 18               |mov     eax, dword ptr [esp+18]
00A13B67  |.  25 FF000000             |and     eax, 0FF
00A13B6C  |.  25 0F000080             |and     eax, 8000000F
00A13B71  |.  79 05                   |jns     short 00A13B78
00A13B73  |.  48                      |dec     eax
00A13B74  |.  83C8 F0                 |or      eax, FFFFFFF0
00A13B77  |.  40                      |inc     eax
00A13B78  |>  884424 10               |mov     byte ptr [esp+10], al
00A13B7C  |.  8B5424 10               |mov     edx, dword ptr [esp+10]
00A13B80  |.  81E2 FF000000           |and     edx, 0FF
00A13B86  |.  81E2 03000080           |and     edx, 80000003
00A13B8C  |.  79 05                   |jns     short 00A13B93
00A13B8E  |.  4A                      |dec     edx
00A13B8F  |.  83CA FC                 |or      edx, FFFFFFFC
00A13B92  |.  42                      |inc     edx
00A13B93  |>  C0E8 02                 |shr     al, 2
00A13B96  |.  C0E0 02                 |shl     al, 2


00A13B99  |.  2AC2                    |sub     al, dl
00A13B9B  |.  04 03                   |add     al, 3
00A13B9D  |.  80FB 04                 |cmp     bl, 4
00A13BA0  |.  74 11                   |je      short 00A13BB3
00A13BA2  |.  80FB 05                 |cmp     bl, 5
00A13BA5  |.  74 0C                   |je      short 00A13BB3
00A13BA7  |.  80FB 08                 |cmp     bl, 8
00A13BAA  |.  74 07                   |je      short 00A13BB3
00A13BAC  |.  80FB 09                 |cmp     bl, 9
00A13BAF  |.  B2 11                   |mov     dl, 11
00A13BB1  |.  75 02                   |jnz     short 00A13BB5
00A13BB3  |>  B2 0D                   |mov     dl, 0D
00A13BB5  |>  2AD3                    |sub     dl, bl
00A13BB7  |.  C0E2 04                 |shl     dl, 4
00A13BBA  |.  02D0                    |add     dl, al
00A13BBC  |.  8816                    |mov     byte ptr [esi], dl
00A13BBE  |.  46                      |inc     esi
00A13BBF  |.  49                      |dec     ecx
00A13BC0  |.^ 75 95                   \jnz     short 00A13B57
00A13BC2  |.  8B4424 1C               mov     eax, dword ptr [esp+1C]


00A13BC6  |.  5E                      pop     esi
00A13BC7  |.  5B                      pop     ebx
00A13BC8  |.  5F                      pop     edi
00A13BC9  |.  C60428 00               mov     byte ptr [eax+ebp], 0
00A13BCD  |.  5D                      pop     ebp
00A13BCE  |.  59                      pop     ecx
00A13BCF  |.  C3                      retn
00A13BD0  |>  8B4C24 14               mov     ecx, dword ptr [esp+14]
00A13BD4  |.  5F                      pop     edi
00A13BD5  |.  C60429 00               mov     byte ptr [ecx+ebp], 0
00A13BD9  |.  5D                      pop     ebp
00A13BDA  |.  59                      pop     ecx
00A13BDB  \.  C3                      retn


[解决办法]
直接用这个代码放到BASM中编译即可

00A13B92  
[解决办法]
.  42                      
[解决办法]
inc     edx
直接删除前面字符只保留语句inc edx,其他相似
00A13B93  
[解决办法]
>  C0E8 02                 
[解决办法]
shr     al, 2
如果带有>的表示该行是跳转目的地
需要改成
@@00A13B93  : shr     al, 2
所有这样的
00A13BB1  
[解决办法]
.  75 02                   


[解决办法]
jnz     short 00A13BB5
改成
jnz     @@00A13BB5
就行了

热点排行