首页 > 其他分享 >逆向——从一个实际例子看EBP+4为何是函数的返回地址

逆向——从一个实际例子看EBP+4为何是函数的返回地址

时间:2023-04-02 20:37:04浏览次数:39  
标签:逆向 窗口 函数 OD MessageBoxA 地址 EBP 堆栈

第六节 1、逆向CRACKME

1、OD加载CRACKME后,为啥地址停在0x00401000?--需要知道什么是PE结构。

 

 

——————

2、出现这个框,表示程序已经执行完判断。

3、弹出窗口是WIN32 API的知识,它是API的MessageBoxA函数实现的功能。

 

 

——————

4、如何正确的下断点?

(1)在OD的命令窗口:bp MessageBoxA(1)在OD的命令窗口:bp MessageBoxA
—>如果程序执行弹口窗口功能,则程序停下。

 

 

(2)程序停下后的代码区和堆栈区

 

 


 

 

5、什么是函数调用?

6、熟悉堆栈,通过画堆栈图彻底了解堆栈。

7、一个函数刚开始执行时,栈顶存储的是调用这个函数的上一个函数的返回地址。

 

 


 

 

上图在ODB里对应的是:

刚刚进入函数调用,可以看到堆栈顶的return的地址

 

右键该地址:

 

 

可以看到该地址是调用函数的下一条指令地址:

 

 我们追踪下stack的变化就看到如下栈提升以后的情况:

 

 

 那个返回地址刚好就是EBP+4!

 

当然,记得去结合我文章里写堆栈图的例子更加容易理解。

 

 

 

标签:逆向,窗口,函数,OD,MessageBoxA,地址,EBP,堆栈
From: https://www.cnblogs.com/bonelee/p/17281189.html

相关文章

  • 【UNCTF逆向】pytrade详解
    前段时间有点别的东西在忙,最近会加大力度。题目pytrade解法这道题的内容是一些opcode也就是python编译的字节码。网上搜的一些教程是叫手扒,就简单学习了一下。变量constfast(有形参和局部变量之分)global(全局)数据结构listdictionaryslice循环whileforinif函数函数范......
  • C语言逆向分析——IF条件语句的反汇编,要熟悉各种if的姿势以及与或非表达式组合
    第四课IF语句的反汇编判断  第四课练习1intplus(intY,intX){intN=t;if(X<Y)t=t+Y;//t=N+yC}voidmain(){plus(5,4);}第五课IF...ELSE...语句的反汇编判断IF…ELSE…语句的反汇编判断:  ......
  • 逆向——如何区分全局变量和局部变量
    第三节局部变量与全局变量的区别记住知识点:1、全局变量,在程序生成后,内存地址是固定了,只有重新编译后,内存地址才会改变。2、全局变量,在汇编中是内存地址的格式存储;局部变量是以[ebp-xxx]的格式存储。  局部变量与全局变量的区别全局变量与局部变量的区别在于作用域的......
  • WebAssembly逆向
    一、WebAssembly简介WebAssembly是一种可以使用非JavaScript编程语言编写代码,并且能在浏览器上运行的技术方案。借助Emscripten编译工具,能将C/C++文件转成wasm格式,JavaScript可以直接调用该文件并执行其中的方法。好处可以隐藏核心逻辑,增大逆向难度提高执行效率(基于C/......
  • re/【unity】游戏逆向首试 [BJDCTF2020]BJD hamburger competition
    本题是是一个unity游戏,而且是以c#和.net编写尝试直接用idea进行反汇编,但是没有找到运行逻辑,后来在大佬的wp上发现是利用dnspy对c#的dll文件进行返回编,进而获得结果。反汇编BJDhanburgercompetirion_Data中的Assembly-CSharp.dll即可获得如下代码段:可以看到先利用sha1进行加......
  • 逆向——浮点数的表示,遇到了就去在线查吧,还原起来比较难受
    第二节2.5数据类型与存储 浮点数这玩意自己去在线转换下就行了: http://www.styb.cn/cms/ieee_754.php     详细:         第二节2.6浮点数的存法记住知识点:1、小数点左移,指数部分:指数减1的二进制数  2、小数点右移,指......
  • 获取用户所有仓库地址
    importrequestsimportjsonuser_name="USERNAME"write2file=Trueapi_url=f"https://api.github.com/users/{user_name}/repos"repositories=[]page_number=1whileTrue:#发送API请求并检查响应状态码response=requests.get(api_u......
  • 由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决
    网站中,设计了一个批量搜索的功能,用户可以输入多个关键词进行批量查询搜索,但不出意外的话还是出意外了,有些用户可能会输入N多个关键词,我为了性能等考虑,会限制个数,比如每次批量查询仅限50个以内,但还是有意外发生,有些关键词可能会很长,即会引发”HTTPError400.TherequestURLisi......
  • C语言逆向——如何寻找main入口,一个反汇编成C的实战练习
    第二节2.3找程序的入口原文:https://www.showdoc.com.cn/fengxin1225/7054696489361869控制台应用程序的main函数入口在OD中找到以上其他中的函数,然后跟着3个参数的CALL就是main例:———————————————————- 第二节2.4.1逆向并还原为C代码(网上解答)......
  • 【webpack】TypeError: Cannot read property 'tap' of undefined
    前言项目里使用webpack的代码混淆工具webpack-obfuscator,当打包代码时,出现如下报错:TypeError:Cannotreadproperty'tap'ofundefined原因项目的webpack版是4.x,而webpack-obfuscator的版本是3.x解决方法查阅资料在该https://nodejs7.com/2021/11/27/797.html文......