逆向分析练习三(最长公共前缀)
admin
2024-02-15 22:05:31

逆向分析练习三(最长公共前缀)

这次选择的这个代码中存在for和while的嵌套,适合提升逆向中对循环的感知。

题目描述

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"

debug版本汇编代码

009F3580  push        ebp  
009F3581  mov         ebp,esp 
009F3583  sub         esp,0F0h 
009F3589  push        ebx  
009F358A  push        esi  
009F358B  push        edi  
009F358C  lea         edi,[ebp-0F0h] 
009F3592  mov         ecx,3Ch 
009F3597  mov         eax,0CCCCCCCCh 						
009F359C  rep stos    dword ptr es:[edi] 				//rep 和 stos 在下面分析节点的[1]中有描述
009F359E  mov         eax,dword ptr [strs] 			这下面开始是业务逻辑的代码了
009F35A1  mov         ecx,dword ptr [eax] 
009F35A3  push        ecx  										//上面应该是从一个指针的指针对象中取出地址
009F35A4  call        @ILT+495(_strlen) (9F11F4h) //调用strlen
009F35A9  add         esp,4 
009F35AC  mov         dword ptr [a],eax 			//a = strlen的返回值
009F35AF  mov         eax,dword ptr [strs] 	//
009F35B2  mov         ecx,dword ptr [eax] 
009F35B4  mov         dword ptr [ss],ecx 	//ss = strs[0]
009F35B7  mov         dword ptr [j],1 				//这下面这一块应该是个for(;j=strSize
009F35D1  mov         dword ptr [i],0 				//i=0
009F35D8  mov         eax,dword ptr [i] 			//进入循环判断
009F35DB  cmp         eax,dword ptr [a] 
009F35DE  jge         longestCommonPrefix+88h (9F3608h) //if(a

分析

  1. stos:作用是把eax里面的数据,赋值给后面的地址,然后edi + 4,或者是-4,加或减主要看方向标志位DF,DF=0 就是+地址 DF=1就是减地址

    1. 例如:stos dword ptr es:[edi]这条stos指令可以分解后变成下面汇编代码

      mov dword ptr es:[edi],eax
      add edi , 4
      
  2. rep指令作用是:重复后面的指令,是个前缀,例如这里 rep stos,就是重复执行stos指令
    rep指令每次执行的时候都从ecx寄存器里面读取值,当ecx大于0,就执行后面语句,执行完以后,会让ecx - 1,然后再执行rep后面的指令。

DOWRD func(char** strs,int strSize){int  a = strlen(strs[0]);char* ss = strs[0]for(int j=0;jint i = 0;while(iif(ss[i] == strs[j][i]){i++;}else{a = i;break;}}}ss[a] = 0;return ss;
}

源代码


char * longestCommonPrefix(char ** strs, int strsSize){
int a=strlen(strs[0]);
char*ss=strs[0];
for(int j=1;j
int i=0;
while(ii++;
}
a=i;
}
ss[a]='\0';
return ss;
}

相关内容

热门资讯

罗永浩“科技春晚”迟到50分钟... 来源:@中国经营报微博 #罗永浩科技春晚集体退票#【罗永...
海淀区开展节前安全排查,护航跨... 新京报讯(记者陈琳)随着元旦临近,北京市海淀区各大商圈迎来跨年客流高峰。为维护节日期间市场秩序与公共...
“SBBA”格局初现:豪华汽车... 转自:财联社岁末回望,汽车产业的2025年注定被铭记。作为国民经济支柱产业、工业经济稳增长的“压舱石...
创新中国 攀高向新——二〇二五... 来源:人民日报 岁末回望,星河璀璨。2025年,中国科技以“极限”为尺,丈量认知疆域。我们不仅是凝视...
别错过!滨州市1月份文明实践重... 滨州市新时代文明实践指导中心始终践行“群众在哪里,文明实践就延伸到哪里”的工作理念,落实“推动优秀文...