看了一个对字符串加密的算法看了一天了不知道怎么算...哪位大虾给点思路...
10002DCA $ 55 push ebp
10002DCB . 8BEC mov ebp, esp ; ebp=esp
10002DCD . 83C4 F0 add esp, -10 ; esp-10
10002DD0 . 60 pushad ; PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
10002DD1 . 8365 FC 00 and dword ptr [ebp-4], 0
10002DD5 . 8365 F8 00 and dword ptr [ebp-8], 0
10002DD9 . 8365 F4 00 and dword ptr [ebp-C], 0
10002DDD . 8365 F0 00 and dword ptr [ebp-10], 0
10002DE1 . 8B7D 14 mov edi, dword ptr [ebp+14]
10002DE4 . 8B75 18 mov esi, dword ptr [ebp+18]
10002DE7 . FC cld ; cld清方向标志位
10002DE8 > 33C0 xor eax, eax ; eax=0
10002DEA . AC lods byte ptr [esi] ; lods=MOV AL,[SI] INC SI si增1
10002DEB . 3C 00 cmp al, 0 ; 比较 al 0
10002DED . 74 68 je short 10002E57 ; 不跳
10002DEF . 68 E0000000 push 0E0 ; E0=224
10002DF4 . 50 push eax
10002DF5 . FF75 0C push dword ptr [ebp+C] ; 压栈 12位 ebp
10002DF8 . E8 32FFFFFF call 10002D2F
10002DFD . 8945 FC mov dword ptr [ebp-4], eax ; [ebp-4]=eax
10002E00 . 8B45 08 mov eax, dword ptr [ebp+8] ; eax=[ebp+8]
10002E03 . 0345 F0 add eax, dword ptr [ebp-10] ; eax=eax+[ebp-10]
10002E06 . 8A00 mov al, byte ptr [eax] ; al=[eax]
10002E08 . 8845 F4 mov byte ptr [ebp-C], al ; [ebp-c]=al
10002E0B . 33DB xor ebx, ebx ; ebx=0
10002E0D > 8B45 0C mov eax, dword ptr [ebp+C] ; eax=[ebp+c]
10002E10 . 0345 FC add eax, dword ptr [ebp-4] ; eax=eax+[ebp-4]
10002E13 . 8A0403 mov al, byte ptr [ebx+eax] ; al=[ebx+eax]
10002E16 . 3A45 F4 cmp al, byte ptr [ebp-C] ; al =? [ebp-c]
10002E19 . 3A45 F4 cmp al, byte ptr [ebp-C]
10002E1C . 75 1C jnz short 10002E3A ; 不等则跳
10002E1E . 8B45 0C mov eax, dword ptr [ebp+C] ; eax=eax+[ebp+c]
10002E21 . 8A0403 mov al, byte ptr [ebx+eax] ; al=[ebx+eax]
10002E24 . 8D4D F8 lea ecx, dword ptr [ebp-8] ; ecx=epp-8
10002E27 . 51 push ecx
10002E28 . 50 push eax
10002E29 . E8 83FEFFFF call 10002CB1 ; 貌似做位运算 判断esi 返回8
10002E2E . 8A45 F8 mov al, byte ptr [ebp-8] ; al=[ebp-8]
10002E31 . AA stos byte ptr es:[edi] ; STOS 保存串
10002E32 . 8A45 F9 mov al, byte ptr [ebp-7] ; al=[ebp-7]
10002E35 . AA stos byte ptr es:[edi] ; STOS 保存串
10002E36 . EB 0B jmp short 10002E43
10002E38 . EB 01 jmp short 10002E3B
10002E3A > 43 inc ebx
10002E3B > 81FB E0000000 cmp ebx, 0E0
10002E41 .^ 75 CA jnz short 10002E0D
10002E43 > FF45 F0 inc dword ptr [ebp-10] ; [ebp-10]自增1
10002E46 . 8B45 10 mov eax, dword ptr [ebp+10] ; eax=[ebp+10]
10002E49 . 3B45 F0 cmp eax, dword ptr [ebp-10] ; 判断 [ebp+10] [ebp-10]
10002E4C . 75 07 jnz short 10002E55 ; 不等则跳
10002E4E . C745 F0 00000>mov dword ptr [ebp-10], 0 ; [ebp-10]=0
10002E55 >^ EB 91 jmp short 10002DE8
10002E57 > 61 popad
10002E58 . C9 leave
10002E59 . C2 1400 retn 14
call 10002D2F:
10002D2F /$ 55 push ebp
10002D30 |. 8BEC mov ebp, esp
10002D32 |. 53 push ebx
10002D33 |. 51 push ecx
10002D34 |. 57 push edi
10002D35 |. 8B7D 08 mov edi, dword ptr [ebp+8] ; edi 8位
10002D38 |. 8B4D 10 mov ecx, dword ptr [ebp+10] ; ecx 10位
10002D3B |. 8BD9 mov ebx, ecx ; ebx=ecx
10002D3D |. FC cld ; cld即告诉程序si,di向前移动
10002D3E |. 8A45 0C mov al, byte ptr [ebp+C]
10002D41 |. F2:AE repne scas byte ptr es:[edi] ; REPNZ/REPNE 不等重复前缀 当ZF=0或比较结果不相等,且CX/ECX0时重复.
10002D43 |. 0BC9 or ecx, ecx
10002D45 |. 75 04 jnz short 10002D4B ; jnz非0则跳 即ecx不为0则跳
10002D47 |. 33C0 xor eax, eax ; eax清0
10002D49 |. EB 04 jmp short 10002D4F
10002D4B |> 2BD9 sub ebx, ecx ; ecx不为0 则 ebx=ebx-ecx
10002D4D |. 8BC3 mov eax, ebx ; eax=ebx
10002D4F |> 5F pop edi
10002D50 |. 59 pop ecx
10002D51 |. 5B pop ebx
10002D52 |. C9 leave
10002D53 \. C2 0C00 retn 0C
call 10002CB1:
10002CB1 /$ 55 push ebp
10002CB2 |. 8BEC mov ebp, esp ; ebp=esp
10002CB4 |. 53 push ebx
10002CB5 |. 52 push edx
10002CB6 |. 56 push esi
10002CB7 |. 8B55 0C mov edx, dword ptr [ebp+C] ; edx=[ebp+c]
10002CBA |. 8B75 08 mov esi, dword ptr [ebp+8] ; esi=[ebp+8]
10002CBD |. 33C0 xor eax, eax ; eax=0
10002CBF |. 33C9 xor ecx, ecx ; ecx=0
10002CC1 |. 8842 02 mov byte ptr [edx+2], al ; [edx+2]=al
10002CC4 |. B1 01 mov cl, 1 ; cl=1
10002CC6 |> 8BC6 /mov eax, esi ; eax=esi
10002CC8 |. 24 0F |and al, 0F ; al and 0f xxxx 1111
10002CCA |. 3C 0A |cmp al, 0A ; al =? 0a 0000 1010
10002CCC |. 1C 69 |sbb al, 69 ; al-69 带借位减法 0110 1001
10002CCE |. 2F |das ; 减法的十进制调整
10002CCF |. 880411 |mov byte ptr [ecx+edx], al ; [ecx+edx]=al
10002CD2 |. C1EE 04 |shr esi, 4 ; esi右移4位
10002CD5 |. 49 |dec ecx ; ecx自减1
10002CD6 |.^ 79 EE \jns short 10002CC6 ; 符号位为0时跳
10002CD8 |. 5E pop esi
10002CD9 |. 5A pop edx
10002CDA |. 5B pop ebx
10002CDB |. C9 leave
10002CDC \. C2 0800 retn 8 ; 返回 8
这个我看一天了 理不清
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)