首页
社区
课程
招聘
[原创]【学习笔记】二数组逆向、多维数组逆向与寻址,桶排序反编译分析
发表于: 2019-10-13 17:56 4578

[原创]【学习笔记】二数组逆向、多维数组逆向与寻址,桶排序反编译分析

2019-10-13 17:56
4578

直接上例子

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...)


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-9-8 15:38 被AMask编辑 ,原因:
上传的附件:
收藏
免费 2
支持
分享
最新回复 (14)
雪    币: 43
活跃值: (1084)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
int larr[8]={3,5,7,9,12,25,34,55};                
int larr1[6]={4,7,9,11,13,16};                
int la=0,lb=0,lc=14;                                
printf("%d**",lc);                
int larr2[14]={0};                
int ld=0;                
while(la<8||lb<6)        
{
if(larr[la]<larr1[lb] && (lb<6 && la<8))
{
larr2[ld]=larr[la];                
ld++;                
la++;
}
else if(larr[la]>larr1[lb] && (lb<6 && la<8))                
{
larr2[ld]=larr1[lb];                
ld++;                
lb++;                
}                
else if(lb<6 && la<8)                
{
       larr2[ld]=larr[la];                                
ld++;
la++;        
larr2[ld]=larr1[lb];                
ld++;                
lb++;
}}

                       
if(la>=8)                

while(lb<6)                
{                        
larr2[ld]=larr1[lb];                                
ld++;        
lb++;        
}                
else if(lb>=6)                                
while(la<8)                
{                
larr2[ld]=larr[la];                
la++;                
ld++;                                
}                

lb=0;                
while(lb<14)                
{                                
int le=larr2[lb];                                
lb++;                
printf("%d ",le);
2019-10-13 17:59
0
雪    币: 43
活跃值: (1084)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
还原的代码格式乱了 补一下。。
2019-10-13 18:00
0
雪    币: 7833
活跃值: (1561)
能力值: ( LV12,RANK:256 )
在线值:
发帖
回帖
粉丝
4
发帖建议还是markdown编辑(看代码会舒服一点
2019-10-14 00:25
0
雪    币: 844
活跃值: (9816)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
5
去逆向下 Release. 你会有新发现.
2019-10-14 09:58
0
雪    币: 15172
活跃值: (16837)
能力值: (RANK:730 )
在线值:
发帖
回帖
粉丝
6
建议做成md上传,这么看着有点费劲
2019-10-14 10:01
0
雪    币: 199
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主你主业是风水大师吧
2019-10-14 10:35
0
雪    币: 181
活跃值: (621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
call c.xxxx 这是自己写了先贴OD再贴源码的吗。符号表都被OD加载进去了
2019-10-14 11:08
0
雪    币: 10784
活跃值: (4422)
能力值: ( LV12,RANK:404 )
在线值:
发帖
回帖
粉丝
9

 22:   arr[1][2]=21;//1*3+2 1*0x12(3*4)

0xc
2019-10-14 11:40
0
雪    币: 43
活跃值: (1084)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
夕风号 楼主你主业是风水大师吧
哈哈
2019-10-14 12:18
0
雪    币: 43
活跃值: (1084)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
柒雪天尚 call c.xxxx 这是自己写了先贴OD再贴源码的吗。符号表都被OD加载进去了
小例子直接贴vc的debug   因为我主要是为了演示  。。
2019-10-14 12:21
0
雪    币: 43
活跃值: (1084)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
张新琪 去逆向下 Release. 你会有新发现.
发现新大陆。。
2019-10-14 12:57
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
开头结尾红色是 掐头去尾  开头第二个深蓝色 绿帽色 亮蓝色是分金吧 颜色不同 是代表不同的局部变量(结构或者类)?
2019-10-16 16:48
0
雪    币: 43
活跃值: (1084)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
killpy 开头结尾红色是 掐头去尾 开头第二个深蓝色 绿帽色 亮蓝色是分金吧 颜色不同 是代表不同的局部变量(结构或者类)?
对,但是有些逻辑也是用颜色快标出来的
2019-10-22 12:19
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
楼主,私信个联系方式呗。
2019-12-3 20:34
0
游客
登录 | 注册 方可回帖
返回
//