直接上例子
0x1
int arr[][4] =
{1,2,3,4,5,6,7,8,9,10,11,12};
22: arr[1][2]=21; //1*3+2 1*0x12(3*4)
0040B89E mov ecx,1
0040B8A1 imul ecx,ecx,0Ch //1*12=1*3*4 乘4是因为数组元素是int型
0040B8A4 lea edx,[ebp+ecx-18h]
0040B8A8 mov eax,2
0040B8AB mov dword ptr [edx+eax*4],15h //(1*3)*4+2*4
int arr[2][4] ;
22: arr[i][j]=21;
0040B8A4 mov ecx,dword ptr [ebp-24h] // i
0040B8A7 shl ecx,4 ///编译器优化 i*4*4=i左移4位(4*4=16 16=2**4)
0040B8AA lea edx,[ebp+ecx-20h]//行的首地址
0040B8AE mov eax,dword ptr [j]
0040B8B1 mov dword ptr [edx+eax*4],15h ==i*4*4+j*4
0x3
并排序反编译
参数:无
局部变量:larr[8]={3,5,7,9,12,25,34,55}(-20...)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-9-8 15:38
被AMask编辑
,原因: