我跟的一程序的加密算法 我对算法不怎么了解 这个是不是一个通用的算法
望各位大大不吝赐教
00455678 |. BE 01000000 mov esi,1
1: 0045567D |> 8B45 FC /mov eax,dword ptr ss:[ebp-4] ;取字符串的基址到eax
2: 00455680 |. 0FB64430 FF |movzx eax,byte ptr ds:[eax+esi-1] ;从字符串中每次取一字符到eax
3: 00455685 |. 33D2 |xor edx,edx ;edx 清0
4: 00455687 |. 52 |push edx ;edx入栈
5: 00455688 |. 50 |push eax ;eax 刚取到的一个字符入栈
6: 00455689 |. 8BC3 |mov eax,ebx ;ebx初值固定 以后每次循环为上次计算的结果
7: 0045568B |. 99 |cdq ;?不知道用这命令什么用
8: 0045568C |. 330424 |xor eax,dword ptr ss:[esp] ;取堆栈中字符和上次结果xor
9: 0045568F |. 335424 04 |xor edx,dword ptr ss:[esp+4] ; 0和0异或
10: 00455693 |. 83C4 08 |add esp,8 ;平衡堆栈
11: 00455696 |. 25 FF000000 |and eax,0FF ;只取第8步异或结果的后一字节
12: 0045569B |. 8B15 BC994500 |mov edx,dword ptr ds:[4599BC] ; _UnPacke.00459280
将一固定数据段的起始地址传与edx
13: 004556A1 |. 8B0482 |mov eax,dword ptr ds:[edx+eax*4] ;用11步结果乘4做偏移 取数据
14: 004556A4 |. C1EB 08 |shr ebx,8 ;上次循环的结果右移8位
15: 004556A7 |. 81E3 FFFFFF00 |and ebx,0FFFFFF ;好象没什么作用
16: 004556AD |. 33C3 |xor eax,ebx ;13步所取数据 和上次结果右移8位的数据 异或
17: 004556AF |. 8BD8 |mov ebx,eax ; 得到本次结果
18: 004556B1 |. 46 |inc esi ;判断字符串是否取完
19: 004556B2 |. 49 |dec ecx
20: 004556B3 |.^ 75 C8 \jnz short _UnPacke.0045567D ;没遍历完就跳到第1行
004556B5 |> 8B4D F8 mov ecx,dword ptr ss:[ebp-8]
004556B8 |. 8BC3 mov eax,ebx
[培训]科锐逆向工程师培训第53期2025年7月8日开班!