一行代码暴露你的C++水平
来源:互联网 发布:天知道 其犹张弓乎 编辑:程序博客网 时间:2024/06/06 07:43
1 遇到如下的一个崩溃:
chrome!net::ConnectJob::ConnectJob:
5eb3e0bd 55 push ebp
5eb3e0be 8bec mov ebp,esp
5eb3e0c0 83ec30 sub esp,30h
5eb3e0c3 a140d0cf6b mov eax,dword ptr ds:[6BCFD040h]
5eb3e0c8 33c5 xor eax,ebp
5eb3e0ca 8945fc mov dword ptr [ebp-4],eax
5eb3e0cd 8b451c mov eax,dword ptr [ebp+1Ch]
5eb3e0d0 8365d000 and dword ptr [ebp-30h],0
5eb3e0d4 53 push ebx
5eb3e0d5 56 push esi
5eb3e0d6 8b7508 mov esi,dword ptr [ebp+8]
5eb3e0d9 57 push edi
5eb3e0da 8bf9 mov edi,ecx
5eb3e0dc 8945d8 mov dword ptr [ebp-28h],eax
5eb3e0df 897dd4 mov dword ptr [ebp-2Ch],edi
5eb3e0e2 8d4f08 lea ecx,[edi+8]
5eb3e0e5 c707bc19706b mov dword ptr [edi],6B7019BCh
5eb3e0eb e80bc5ffff call chrome!net::HpackHuffmanTable::HpackHuffmanTable (5eb3a5fb)
5eb3e0f0 8d5f38 lea ebx,[edi+38h]
5eb3e0f3 56 push esi
5eb3e0f4 8bcb mov ecx,ebx
崩溃在读取这个6BCFD040h地址违例。
但是ConnectJob的构造函数是这样的:
ConnectJob::ConnectJob(const std::string& group_name,
base::TimeDelta timeout_duration,
RequestPriority priority,
Delegate* delegate,
const BoundNetLog& net_log)
: group_name_(group_name),
timeout_duration_(timeout_duration),
priority_(priority),
delegate_(delegate),
net_log_(net_log),
idle_(true) {
DCHECK(!group_name.empty());
DCHECK(delegate);
net_log.BeginEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB,
NetLog::StringCallback("group_name", &group_name_));
}
似乎也没有读取全局变量的操作,那么问题来了,这个6BCFD040h地址究竟是什么变量呢?
真相在函数的最后:
5eb3e16c 8b4dfc mov ecx,dword ptr [ebp-4]
5eb3e16f 8bc6 mov eax,esi
5eb3e171 5f pop edi
5eb3e172 5e pop esi
5eb3e173 33cd xor ecx,ebp
5eb3e175 5b pop ebx
5eb3e176 e8b02ff0ff call chrome!__security_check_cookie (5ea4112b)
函数开始的时候,将6BCFD040h值赋予ebp-4,函数退出的时候检测该值,判断缓冲区是否溢出。
- 一行代码暴露你的C++水平
- 移位运算 提升你的代码水平
- 一行代码搞定你的QueryString(转)
- 第一章 你的第一行代码
- 测试一下你的C语言水平
- 测试一下你的C语言水平
- 无所顾忌地暴露你的野心
- 第一行代码笔记,第一章-------开启你的第一行Android代码
- 第一行代码第一章——你的第一行Android代码
- 一行代码搞定你的QueryString!(原创)
- 一行代码搞定你的QueryString!(原创)
- “你的这个只要一行代码就能搞定”
- 第一章:开启启程你的第一行代码
- 第一章 开始启程,你的第一行Android代码
- 一行代码为你的UIBUtton添加点击弹性动画
- 一行代码让你的SwipeRefreshLayout进度条转成一道彩虹
- 开始启程, 你的第一行前端代码
- 第一章 开始启程,你的第一行Android代码
- vs2012 调用外部代码问题 打开项目一直加载外部dll是程序中断!!
- How to write a diagup line over a mathematical formula in LaTex
- Sftp权限设置
- 无意中遇到的bsxfun函数—matlab
- java 中 JComboBox,JList,JScrollPane的用法
- 一行代码暴露你的C++水平
- 去掉Activity的头部标题栏及全屏显示解决方案
- 邮件开发:电子邮件的传输过程、各种协议的说明
- 用Python实现古诗词填字游戏(二)
- find命令之exec
- 4.2. for Statements(for 语句)
- centos7下的lnmp环境安装
- 管理数据可和表
- java 静态代码块 静态方法区别