下载此文档

武汉科锐 学习笔记 软件逆向 吴斌ppt课件.ppt


文档分类:资格/认证考试 | 页数:约46页 举报非法文档有奖
1/46
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/46 下载此文档
文档列表 文档介绍
武汉科锐_学习笔记 软件逆向_吴斌ppt课件软件逆向分析整理科锐课程内容说明:主要针对VC下的逆向分析使用工具VC、OD、**识别main函数2010_年4月_8日Debug方式下Relese方式下在函数开始的第一个3个push下面的call就是main函数,WinMain是4个push后面跟的call就是WinMain。因为在main函数之前的函数没有3个和4个参数的,main函数后面就是exit退出函数。这里主要是针对VC编译平台下,的操作,,而Release不会。另外debu方式会chkesp检查栈平衡。OD参数压栈、掉函数、平衡栈恢复环境传出值检查堆栈平衡释放局部变量空间恢复栈底2020/9/253栈平衡(释放参数占用空间)2010_年4月_8日堆栈平衡主要是释放申请的局部变量空间,而调用约定也是在栈平衡上有不同,stdcall是被调方平衡、cdecl是调用方平衡、fastcall也是被调方平衡,与stdcall区别是使用寄存器传参。返回值函数返回值主要通过寄存器EAX返回,在被函数中EAX赋值,并且调用方有使用,说明是有返回值的(当然是是EAX传递的)ESP可以用来做参数访问的标杆,永远都是栈底又做栈平衡的标志2020/9/254识别调用约定2010_年4月_8日调用约定主要是约束栈平衡的所属,也就是参数空间谁负责释放,如果没有参数,则无法判定到底是什么调用约定,当然也没有知道的必要了。调用方被调用方debugdebugreleaserelease2020/9/255识别参数个数2010_年4月_8日参数的识别要结合调用方式栈平衡的方式信息,平衡多少就会有多少空间参数,识别的方式:1)栈平衡多少空间2)函数内是否有[ebp+x]的访问方式,其他也有使用[esp+1]3)特殊的Fastcall:要看是否有push寄存器,在被函数内,寄存器没有赋值就直接使用,则寄存器传参debugrelease归并归并在优化时才有且前提是函数要使用的参数没有被分割开Fun2参数不连续不能归并2020/9/256Copy代码2010_年4月_8日在IDA中找到感兴趣的函数后,进入函数体内,将对应的汇编代码COPY出来,放到汇编建的dll工程下,Value1:DWORD将代码COPY这里,修改crt_(c库函数) IWillCopyCode在VC工程中增加编译后的lib文件,声明函数类型extern“C”调用方式函数名称…2020/9/257识别运算操作机制2010_年4月_9日常量优化编译器扫描相关变量,①其值是可确定的②其值后面没有依赖性,则编译器会做常量归并。申请、释放局部变量内存空间常量优化①申请空间: ②释放空间:Subesp,xx(申请较多) addesp,xx/movesp,xxpush寄存器(少量空间) popecx说明:对于需要少量的内存空间则使用push申请,push后没有对应的pop做恢复,则是申请空间;同样有pop的,前面没有push与之配对,,无依赖性归并Scanf中a值不确定,且后面printf中有依赖性2020/9/258识别运算操作机制2010_年4月_9日Ebp与esp使用时机在寄存器紧张时,使用esp寻址,可以节省下ebp他用(前提是esp可确定).IDA下k命令[esp+4+var_x]标示x那个局部变量②在esp栈顶被破坏,esp不确定,则只能使用ebp访问栈内容。如:VC下有嵌入汇编__asm{pusheaxpopeax},则使用ebp识别参数类型有格式化类型信息时如:pushxx“%d”,说明是整形②指令类型 imul说明是有符号数③函数接收参数具体类型pushxxcallputs,则参数为指针2020/9/259识别运算操作机制2010_年4月_9日Lea作运算操作Lea主要作用是做地址运算,使用[]可以对其中的信息作运算,也仅限在已有的寻址方式范围内。加法:Printf(“%d”,a+b+6);Leaeax,[ebx+ecx+6]乘法:a+b*4+6 leaeax,[ebx+ecx*4+6]相对基变(2/4/8)a+b*3+6leaeax,[ebx+2],leaeax,[ebx,eax*3]a*2 leaeax,[ebx+ebx]/直接相乘或移位a*3 leaeax,[ebx+ebx*2]a*4 leaeax,[ebx*4]a*11 (a*5)*2+a leaeax,[ebx+ebx*4]==a*5 leaeax,[ebx+eax*2]说明:无符号是2的倍数可以做右移位,[ebx+ecx*M]M只能是2、4、82020/9/2510

武汉科锐 学习笔记 软件逆向 吴斌ppt课件 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数46
  • 收藏数0 收藏
  • 顶次数0
  • 上传人rsqcpza
  • 文件大小570 KB
  • 时间2020-09-25
最近更新