本帖最后由 gunxsword 于 2024-1-26 09:52 编辑
你这一大堆代码,说白了就是在初始化一个数组
push ebp
mov ebp,esp
mov eax,0x1004 //EAX可能是参数
call 00584BC0 //正常返回值应该是放在EAX中,但是下面给EAX重新赋值,也没有使用EAX,要么处理过,要么就是没有返回值
mov eax,dword ptr ds:[0x6571B0] ; eax = FF653105
xor eax,ebp ; ebp = 0012DAD8
mov dword ptr ss:[ebp-0x4],eax
push esi
push edi
mov dword ptr ss:[ebp-0x1004],0xC5D1B023 //这三个算是局部变量,后面可能用到
mov dword ptr ss:[ebp-0x1000],0x286085F0
mov dword ptr ss:[ebp-0xFFC],0xCA417918
.
.
dword ptr ds:[ecx],0x243F6A88 //这里开始相当于对ECX指向的数组开始赋值数据,+4,就是下一个,+8再下一个,a[0],a[1] 这前面应该有MOV,不可能没有
dword ptr ds:[ecx+0x4],0x85A308D3
dword ptr ds:[ecx+0x8],0x13198A2E
dword ptr ds:[ecx+0xC],0x3707344
dword ptr ds:[ecx+0x10],0xA4093822
dword ptr ds:[ecx+0x14],0x299F31D0
dword ptr ds:[ecx+0x18],0x82EFA98
dword ptr ds:[ecx+0x1C],0xEC4E6C89
dword ptr ds:[ecx+0x20],0x452821E6
dword ptr ds:[ecx+0x24],0x38D01377
dword ptr ds:[ecx+0x28],0xBE5466CF
dword ptr ds:[ecx+0x2C],0x34E90C6C
dword ptr ds:[ecx+0x30],0xC0AC29B7
dword ptr ds:[ecx+0x34],0xC97C50DD
dword ptr ds:[ecx+0x38],0x3F84D5B5
dword ptr ds:[ecx+0x3C],0xB5470917
dword ptr ds:[ecx+0x40],0x9216D5D9
mov dword ptr ds:[ecx+0x44],0x8979FB1B到这里,直接赋值结束
lea edi,dword ptr ds:[ecx+0x48] 这里计算了下一个下标的值放到了EDI
mov ecx,0x400 循环,0X400次,计数 //这里是相当于循环,是一次就执行完的
lea esi,dword ptr ss:[ebp-0x1004] //这里是取得了EBP-0X1004的地址,不是里面的数据
mov dword ptr ss:[ebp-0xDC],0xF2D519FF
mov dword ptr ss:[ebp-0x8],0x4CF9AA7E
rep movs dword ptr es:[edi],dword ptr ds:[esi] //这句的意思就是把ESI指向的地址的数据,按着,4字节一个,一共,0X400次,写入到EDI指向的地址,说白了就是继续给前面的数组,增加,0X400个数据
mov ecx,dword ptr ss:[ebp-0x4]
pop edi
xor ecx,ebp
pop esi
前面是,0x44 0x44/4=0x11 =17 0-17 共,18个,再加上,0x400一共是,0x411个数据,整段代码,就是为了初始化一个0X411的数组,看数据,可能是个KEY表之类的东西! |