当前位置: 首页 > news >正文

政府门户网站建设的意义东营网站建设

政府门户网站建设的意义,东营网站建设,设计公司企业画册,前端开发中英文网站怎么做逆向反汇编代码推算C的局部变量 上文说明了C反汇编后的EBP,ESP寄存器都是做什么用的,相信大家已经有所了解,如果有没看过的请参考下文: http://www.cnblogs.com/pugang/archive/2012/05/25/2518499.html 本文不会对其再做过多的…

逆向反汇编代码推算C++的局部变量

上文说明了C++反汇编后的EBPESP寄存器都是做什么用的,相信大家已经有所了解,如果有没看过的请参考下文:

http://www.cnblogs.com/pugang/archive/2012/05/25/2518499.html

本文不会对其再做过多的讲解,如果还有问题,欢迎大家留言讨论。

首先明确本文要解决的问题:在没有源代码的情况下如何看明白我们的汇编代码中哪些是局部变量。

为了便于说明我将C++代码和汇编代码在一起,完整代码如下:

int InternalFunctionA(int nSizeA1, int nSizeA2)
{
00401000  push        ebp  
00401001  mov         ebp,esp 
00401003  sub         esp,0Ch 
    
int localnSizeA1 = nSizeA1;
00401006  mov         eax,dword ptr [nSizeA1] 
00401009  mov         dword ptr [localnSizeA1],eax 
    
int localnSizeA2 = nSizeA2;
0040100C  mov         ecx,dword ptr [nSizeA2] 
0040100F  mov         dword ptr [localnSizeA2],ecx 

    
int nFunctionA = localnSizeA1 + localnSizeA2;
00401012  mov         edx,dword ptr [localnSizeA1] 
00401015  add         edx,dword ptr [localnSizeA2] 
00401018  mov         dword ptr [nFunctionA],edx 

    
return nFunctionA;
0040101B  mov         eax,dword ptr [nFunctionA] 
}
0040101E  mov         esp,ebp 
00401020  pop         ebp  
00401021  ret              

int InternalFunctionB(int nSizeB1, int nSizeB2)
{
00401030  push        ebp  
00401031  mov         ebp,esp 
00401033  push        ecx  

    
int nFunctionA = InternalFunctionA(nSizeB1, nSizeB2);
00401034  mov         eax,dword ptr [nSizeB2] 
00401037  push        eax  
00401038  mov         ecx,dword ptr [nSizeB1] 
0040103B  push        ecx  
0040103C  call        InternalFunctionA (401000h) 
00401041  add         esp,8 
00401044  mov         dword ptr [nFunctionA],eax 
    
return 0;
00401047  xor         eax,eax 
}
00401049  mov         esp,ebp 
0040104B  pop         ebp  
0040104C  ret              

int _tmain(int argc, _TCHAR* argv[])
{
00401050  push        ebp  
00401051  mov         ebp,esp 
00401053  push        ecx  
    
    
int nFunctionVal = InternalFunctionB(3664);
00401054  push        40h  
00401056  push        24h  
00401058  call        InternalFunctionB (401030h) 
0040105D  add         esp,
8 
00401060  mov         dword ptr [nFunctionVal],eax 
    cout<<
"Hello SolidMango!"<<endl;
00401063  mov         eax,dword ptr [__imp_std::endl (402048h)] 
00401068  push        eax  
00401069  push        offset ___xi_z+3Ch (402154h) 
0040106E  mov         ecx,dword ptr [__imp_std::cout (402078h)] 
00401074  push        ecx  
00401075  call        std::operator<<<std::char_traits<char> > (401280h) 
0040107A  add         esp,
8 
0040107D  mov         ecx,eax 
0040107F  call        dword ptr [__imp_std::basic_ostream<
char,std::char_traits<char> >::operator<< (40205Ch)] 
    
return 0;
00401085  xor         eax,eax 

}
00401087  mov         esp,ebp 
00401089  pop         ebp  
0040108A  ret              

调用过程如下图所示,下面请大家和我一起看代码,InternalFunctionA()中,一共3个整型的变量,localnSizeA1 localnSizeA2nFunctionA 

00401003  sub         esp,0Ch 
这条指令的意思是说在栈上面给这3个局部变量留空间,执行完这条指令,栈顶已经移到ebp- 0ch的位置了,说到这里相信大家已经明白了,从ebp开始,局部变量一定在比这个地址低的位置,也就是ebp-nValue,也就是找到了局部变量。

 

 

总结:

也许有人会问我写这几篇关于C++反汇编文章的意义在那里,我先简单说明一下:

1. 有些情况下调试的时候由于C++还是相对高级的语言,在做某些问题分析比如dump file 分析的时候,C++的粒度还是显的有些大,看不到位。

2. 有时候我们根本就没有C++代码,我们只有一些dllexe, 系统跑出问题同样需要分析解决。

3. 反病毒方面相信不必多言。

http://www.lbrq.cn/news/2762821.html

相关文章:

  • EDI许可证需要的网站怎么做上海网站建设费用
  • 厦门高端网站建设广州今天新闻
  • 汕头网站优化系统今日热点头条
  • 网站改版 更换域名网络运营推广是做什么的
  • 金华网站制作教育培训机构推荐
  • 上海网站建设公司如何创建微信小程序
  • 在线网站建设询问报价爱站seo工具
  • 网站后台编辑器无法显示南宁在哪里推广网站
  • 西部数据网站助手十大小说网站排名
  • 企业网站怎么做跟淘宝链接介绍产品的营销推文
  • 怎么查看网站谁做的如何使用免费b站推广网站
  • 单页式网站补肾壮阳吃什么药效果好
  • 如何让人帮忙做网站新闻发稿发布平台
  • wordpress 后台攻击seo优化网站百度技术
  • 牟平建设局网站北留德庄株洲最新今日头条
  • 洪山区建设局网站网站seo关键词排名查询
  • 沈阳制作网站的公司网推一手单渠道
  • 男女做的羞羞事的网站添加友情链接的技巧
  • 在常州 做兼职上什么网站百度首页百度
  • 嘉祥网站建设哪家好舆情危机公关公司
  • 专业做甜点的网站广告公司经营范围
  • 编程 给别人做网站中国万网登录入口
  • 做高端企业网站哪家网站优化公司好
  • 自己制作网站该怎么做乔拓云网站建设
  • 免费做视频网站如何创造一个自己的网站
  • 网站搜索引擎优化起名最好的网站排名
  • wordpress 修改版权台州网站建设优化
  • wordpress图标居中江阴网站优化公司
  • 天猫网站建设分析公司网站推广
  • 网站建设字体颜色代码石家庄seo外包公司
  • Leetcode 16 java
  • 从需求到部署全套方案:餐饮服务许可证数据可视化分析系统的大数据技术实战
  • 业务员手机报价软件免费领取——仙盟创梦IDE
  • SQL Server 2019安装教程(超详细图文)
  • Android 对话框 - 基础对话框补充(不同的上下文创建 AlertDialog、AlertDialog 的三个按钮)
  • 19.5 「4步压缩大模型:GPTQ量化实战让OPT-1.3B显存直降75%」