关于_RTC_CheckEsp_
来源:互联网 发布:php过滤html标签 编辑:程序博客网 时间:2024/04/27 21:53
今天工作时,反汇编中注意到_RTC_CheckEsp_这个函数,查了查资料,发觉这是个运行时检查函数,应该是用来检查缓冲区溢出的。
具体代码如下:
0135154B int 3
0135154C int 3
0135154D int 3
0135154E int 3
0135154F int 3
_RTC_CheckEsp:
01351550 jne esperror (1351553h)
01351552 ret
esperror:
01351553 push ebp
01351554 mov ebp,esp
调用出现的位置有:
printf("input a number: ");
013513BE mov esi,esp
013513C0 push offset string "input a number: " (135575Ch)
013513C5 call dword ptr [__imp__printf (13582B8h)]
013513CB add esp,4
013513CE cmp esi,esp
013513D0 call @ILT+305(__RTC_CheckEsp) (1351136h)
scanf("%d",&n);
013513D5 mov esi,esp
013513D7 lea eax,[n]
013513DA push eax
013513DB push offset string "%d\n" (1355758h)
013513E0 call dword ptr [__imp__scanf (13582B4h)]
013513E6 add esp,8
013513E9 cmp esi,esp
013513EB call @ILT+305(__RTC_CheckEsp) (1351136h)
printf和scanf函数都会先保存esp至esi中,printf/scanf函数调用结束后,调用_RTC_CheckEsp检查值有没有发生改变。
函数结束ret过程中也有类似操作,不过是esp和ebp进行比较。
注意到空白区域存在大量int 3,这些区域应该是跳转不到的,用一字节长的int 3中断填充。
- 关于_RTC_CheckEsp_
- 关于
- 关于
- 关于++,--
- 关于#
- 关于。。。
- 关于
- 关于......
- 关于
- 关于
- 关于****
- 关于
- 关于!
- 关于++
- 关于
- 关于
- 关于$?
- 关于%
- 安卓画日历控件
- 安卓画日历控件
- 安卓画日历控件
- 蓝牙指环扫描枪【心科码】
- .NET4.5之初识async与await
- 关于_RTC_CheckEsp_
- 应用笔划宽度变化(SWT)来检测自然场景中的文本
- ArcGIS for js API 3.9
- 安卓画日历控件
- 安卓画日历控件1
- RecyclerView的2种监听方式
- win 8.1 64bit 深度学习theano 安装设置
- 安卓画日历控件2
- leetcode--Binary Tree Postorder Traversal