当前位置:网站首页 > 技术博客 > 正文

c++ exe反编译



        逆向工程师必须先是一个正向开发工程师,如果没有C++/MFC的开发经验,就不会懂得如何逆向分析C++/MFC的程序,本文完成一个helloworld的C++正逆向过程。

    编译环境:visual studio 2022

 
  

编译完毕后生成exe程序,导入Ghidra,分析完毕后,在symbol tree窗口,输入main查找到主函数位置:

3.1 Ghidra反汇编

 
  

3.2 IDA 结果

 
  

在正向开发的过程中,可以在编译器Visual studio里,查看C++代码的汇编代码,在程序中设置断点,F5编译,等程序停住后,才有查看汇编选项:

 汇编代码如下:

 
  

IDA反编译的结果更接近源程序,因为1.读取了pdb文件,2.不显示参数检查的反编译代码( __security_cookie和_RTC_CheckStackVars等)。

5.1 什么是security cookie

并不是windows系统自带的保护机制,并不是说一个确实存在溢出漏洞的程序,放到带security cookie保护的环境中,就不能正常溢出了。其原理是在所有变量入栈前,多压入一个变量(随机数),然后函数执行完之后,再去检查这个数是不是一样的,

5.2 什么是_RTC_CheckStackVars。

这也是一个编译器行为,_RTC_CheckStackVars第一个参数是函数要检查的栈顶地址,第二个参数指向结构体_RTC_framedesc。该结构体第一个参数是压栈的局部变量个数,第二个参数保存局部变量相关信息。分别是变量的栈偏移地址,变量大小和变量的名字。因此我们可以通过地址跳转最终找到出错的变量

  • 上一篇: 鸿蒙开发
  • 下一篇: matlab高通滤波器
  • 版权声明


    相关文章:

  • 鸿蒙开发2025-09-13 15:01:00
  • 什么是空间索引?有哪些空间索引方法?2025-09-13 15:01:00
  • js注释语句2025-09-13 15:01:00
  • rsa加密解密算法c 语言2025-09-13 15:01:00
  • c++strtok_s2025-09-13 15:01:00
  • matlab高通滤波器2025-09-13 15:01:00
  • monkey软件测试教程2025-09-13 15:01:00
  • mdp值迭代2025-09-13 15:01:00
  • 操作系统题库及答案2025-09-13 15:01:00
  • java注解@autowired2025-09-13 15:01:00