yahoo!messenger 的一个远程堆溢出问题

如何处理动态语言(Python / JS)的“隐形”调用链? 本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。 阅读详情
下面就把一个堆溢出问题讲讲,这个问题我在最新的8.1.0.413下测试的确存
在。

Yahoo!messenger有个功能叫webcam,webcam传输的数据是jpc格式的,jpc是jpeg2000的一种,具体的文件格式我没
有找到,我根据jpeg文件格式和一些opensource的软件的实现,我猜想大概是这样的,下面是一个传输包的内容:

ff 4f ff 51 00 2f 00 00 00 00

01 40 00 00 00 f0 00 00 00 00 00 00 00 00 80 00

01 40 00 00 00 f0 00 00 00 00 00 00 00 00 00 03

Ff 4f ff 51 你可以简单的看作是jpc文件的标志符,后面那个2f是这个block的长度,00 00 01 40是图片的长度,00
00 00 f0是宽度,后面的0140和f0叫做tile长度和tile宽度,对我们发现漏洞有用的就是这四个数了(图片的长度,宽度和tile的长
度和宽度),组合这四个数,可以发现很多的漏洞,呵呵,很多是远程DoS,先来看一个DoS的问题,下面是kdu_v32m.dll的代码片断:

mov eax, [esi+3Ch] ; pic width

.text:10015505 mov edi, [esi+44h] ;

.text:10015508 mov edx, [esi+34h] ;

.text:1001550B mov ecx, [esi+4Ch] ; tile width

.text:1001550E sub eax, edi

.text:10015510 or ebx, 0FFFFFFFFh

.text:10015513 add eax, edx

.text:10015515 js short loc_1001551B

.text:10015517 lea eax, [ecx+eax-1]

.text:1001551B

.text:1001551B loc_1001551B: ; CODE XREF: my_get_error_param1+415j

.text:1001551B cdq

.text:1001551C idiv ecx

.text:1001551E mov edx, [esi+48h]

.text:10015521 mov ecx, [esi+50h] ; tile length

.text:10015524 mov edi, eax

.text:10015526 mov eax, [esi+40h] ; pic width

.text:10015529 sub eax, edx

.text:1001552B mov edx, [esi+38h]

.text:1001552E add eax, edx

.text:10015530 mov [esi+54h], edi

.text:10015533 js short loc_10015539

.text:10015535 lea eax, [eax+ecx-1]

.text:10015539

.text:10015539 loc_10015539: ; CODE XREF: my_get_error_param1+433j

.text:10015539 cdq

.text:1001553A idiv ecx

.text:1001553C mov [esi+58h], eax

.text:1001553F imul eax, edi

.text:10015542 cmp eax, 0FFFFh

.text:10015547 jle short bug_bug

.text:10015549 lea ecx, [esp+70h+var_44]

.text:1001554D call ??0kdu_error@@QAE@XZ ; kdu_error::kdu_error(void)

.text:10015552 mov edx, [esp+70h+var_44]

.text:10015556 push offset aMaximumNumberO ; "Maximum number of
allowable tiles is 65"...

.text:1001555B lea ecx, [esp+74h+var_44]

.text:1001555F mov [esp+74h+var_24], 8

.text:10015567 call dword ptr [edx+4]

.text:1001556A mov [esp+74h+var_48], offset off_10035078

.text:10015572 mov ecx, [esp+74h+var_40]

.text:10015576 mov [esp+74h+var_28], 9

.text:1001557E cmp ecx, ebp

.text:10015580 jz short loc_10015589

.text:10015582 mov eax, [ecx]

.text:10015584 push 1

.text:10015586 call dword ptr [eax+8]

.text:10015589

.text:10015589 loc_10015589: ; CODE XREF: my_get_error_param1+480j

.text:10015589 mov [esp+78h+var_2C], ebx

.text:1001558D

.text:1001558D bug_bug: ; CODE XREF: my_get_error_param1+447j

.text:1001558D mov ecx, [esi+58h]

.text:10015590 imul ecx, [esi+54h]

.text:10015594 shl ecx, 2

.text:10015597 push ecx

.text:10015598 call ??2@YAPAXI@Z ; bug is here ,function new.

看到没有,它是利用我们提供的数据来作为new的参数,我们可以合理的构造那四个参数,使得提供给new的参数为0的时候,DoS就产生了。

好了,我们言归正传,看看那个remote heap overflow是怎么回事,首先,当一个webcam请求初始化的时候yahoo!
Messenger会生成一个class(webcamclass), webcamclass会在这个地方(ywcvwr.dll)申请一段内存,这
段内存的长度是0x400:

.text:10001737 cmp edi, [esp+0Ch+arg_0]

.text:1000173B jl short loc_10001735

.text:1000173D cmp edi, 1400000h

.text:10001743 jg short loc_10001752

.text:10001745 push edi

.text:10001746 call j_??2@YAPAXI@Z ; operator new(uint)

.text:1000174B mov ebx, eax

.text:1000174D test ebx, ebx

这段内存的作用是存放从jpc解压出来的bitmap的内容,很不幸的是在这里,它居然会用我们数据包内提供的数据来作为边界判断条件:

.text:10002C5C mov [eax+2], cl ; eax是前面这个长度为0x400的buffer

............................

.text:10002CA9 mov [eax], cl

.text:10002CAB mov ecx, [ebp+var_4]

.text:10002CAE add eax, [edi+5Ch]

.text:10002CB1 inc esi

.text:10002CB2 inc esi

.text:10002CB3 cmp ecx, [edi+64h] ;bug is here

.text:10002CB6 jl short loc_10002C38

[edi+64h]的内容是我们提供的pic length,只要我们合理的构造这个值及其它相关的值,我们就可以成功的实现堆溢出,呵呵。

我写了一个测试程序(http://www.team509.com/expyahoo.rar),只能实现远程DoS,不过通过这个程序你可以调试,
发现这个remote heap overflow问题。

1.compile the dll.
2. choose "invite to view my webcam" to a contact id who is online
using yahoo! messenger.
3.when the otherside accept the invatation , inject the dll to local
yahoo! messenger 8.1.0.413 's process.
4 . the otherside's yahoo! messenger will be crashed.
其他的im 从在的问题也不少就看谁外放了 

【GameFramework框架内置模块】8、文件系统(File System) 最近好忙,鸽了好久。不能颓废了,继续发力。今天分享的是GF框架的文件系统。首先,引用比较官方的说法:GF的FileSystem虚拟文件系统,使用类似磁盘存储的感念对零散的文件进行集中管理,优化资源加载时产生的内存分配,也可以对资源进行局部片段加载,极大的提升了资源加载的性能。通俗点讲就是,我这个模块就是加载磁盘文件的,优化加载时产生的内存分配。那么,它是怎么优化的呢? 阅读详情

相关推荐

ArduPilot + Gazebo + Mavros + QGC + 遥控器:从仿真到实机的自主轨迹控制实践

本文详细介绍了基于ArduPilot、Gazebo、Mavros和QGC的无人机自主轨迹控制全流程实践。从仿真环境搭建、多终端协同配置,到遥控器集成与自主圆形轨迹算法实现,提供了完整的代码示例和实机迁移要点,帮助开发者快速掌握无人机自主控制技术。

corn8的博客 942

error LNK2019: 无法解析的外部符号 “public: void __thiscall

这个问题出现的大部分原因,以下连接的博客讲的很明确 https://blog.youkuaiyun.com/u013321328/article/details/79628494 但我下面将的这个原因特别玄学,这个问题一般出现时会有一个提示:“LNK4042: 对象被多次指定;已忽略多余的指定” 此问题一般是由于将release模式切换成debug模式后出现的,这个问题是由于“使用原有工程时,直接在工程里将.cpp文件重命名为.h文件,.vcxproj文件中的属性并没有改变而导致。” 解决方案,将重命名的.h文

Devin的博客 1301

SAP成本核算变式OKKN配置详解:从CK11N到CK24,手把手教你搞定标准成本发布

本文深入解析SAP成本核算变式OKKN的配置原理与实战应用,涵盖从CK11N到CK24的标准成本发布全流程。详细讲解数量结构控制、价值结构配置及间接费用计算规则,帮助成本会计精准掌握标准成本计算逻辑,解决BOM版本选择、工艺路线获取等常见问题,提升企业成本管理效率。

weixin_27219587的博客 292

无法解析的外部符号 "public: __thiscall

错误    2    error LNK2019: 无法解析的外部符号 "public: __thiscall Rectangle::~Rectangle(void)" (??1Rectangle@@QAE@XZ),该符号在函数 "public: __thiscall Square::~Square(void)" (??1Square@@QAE@XZ) 中被引用 原因:函数这是只是声明了却没有定...

Dear_Jia的博客 1万+

2025.06.17【WGS】|多样品VCF文件中每个样品SNP数统计方法详解(含代码与注释)

摘要:本文介绍了一种从合并后的VCF文件中统计每个样品SNP数目的方法。通过解析VCF文件中的GT字段,排除纯合参考(0/0)和缺失(./.)的基因型,准确计算各样本的SNP位点数。文中提供了完整的Python脚本,利用bcftools工具高效处理大规模VCF文件,并支持输出SNP统计结果。该方法适用于群体遗传学和RAD-seq等高通量测序数据分析的质控环节,还可扩展为统计杂合/纯合SNP等进阶需求。脚本使用简单,只需输入VCF文件即可生成样本-SNP数目的统计报表。

1701

解密微信DAT图片:一键转换JPG/PNG/GIF的实用指南

本文详细解析微信DAT图片的加密机制及转换方法,提供从定位文件到使用WeijieSoft工具一键转换JPG/PNG/GIF的完整指南。涵盖新旧版微信存储路径差异、批量处理技巧及常见问题解决方案,帮助用户高效恢复重要图片并释放存储空间。

weixin_29305337的博客 3625

c&c++反汇编与逆向分析学习笔记(5)--加法的求值过程和编译器优化

学了逆向分析之后,发现,虽然我们写了程序,但是程序并不是按完全按照我们写的代码一句 一句执行的,很有可能一大部分代码都被编译器优化修改了。只有了解这些东西,我们才能写出 性能更加优益,可读性与精炼并存的代码。     在VC++6.0中,算术运算和其他传递计算结果的代码组合起来才能被视为一条有效的语句 ,如赋值运算或函数的参数传递。单独的运算虽然可以编译通过,但是并不会生成代码。因

kyt511的专栏 1329

从string一词感受从字母象形到语义生成的底层逻辑

从词源上看,个人认为,soft一词的含义主要来自于“柔软水滑或柔软光滑”这样的含义,是从这样的含义中逐渐窄化,最终主要用来指“柔软”之意,而光滑、水滑这样的含义或语义形象最终被淡化,所以,soft如果符合首字母象形原则,那么它主要的来源形象,应当是【水】,也就是说,soft一词和smooth(a.光滑的)、ski(滑雪)/skate(滑冰)、slip(滑倒)/slippers(拖鞋)、slide(滑动)是相通的,并最终和sea(海)、sweat(汗/汗水)这一类和水一直相关的单词也相通。

nshkfhwr的博客 1271

雅虎Messenger曝高危漏洞 黑客可控制系统

雅虎Messenger曝高危漏洞 黑客可控制系统[@more@]【赛迪网讯】6月8日消息,据国外媒体报道,安全研究公司eEye Digital Security日前表示,在Yahoo Messenger(雅虎通)中发现高危安全漏...

197

C# NX二次开发-查找连续倒圆角面

可以通过ufun函数 UF_MODL_ask_face_type 和 UF_MODL_ask_face_props 可判断处理选择相应的一组圆角面。在QQ群里有人问怎么通过一个选择一个倒圆角面来自动选中一组倒圆角面。这个是初步思路,如果有更好的思路可回复讨论一下。

fhqiwmc的博客 620

Open3D 计算点云的主曲率

本文介绍了点云主曲率计算的方法与实现。通过分析曲面局部几何形状的主曲率(最大和最小方向),基于法线构建投影矩阵和协方差矩阵,使用奇异值分解计算曲率。代码采用Open3D实现,包括点云加载、法线估计、邻域搜索和曲率映射可视化功能。系统支持交互式点云文件选择,将曲率值映射为色彩进行直观展示,为点云处理中的特征提取和分割任务提供基础几何特征。实现过程包含了法线去中心化、协方差矩阵构建和特征值归一化等关键步骤,完整展示了从理论到实践的曲率分析流程。

点云侠的博客 544

Yahoo! 助手(3721) ActiveX远程代码执行漏洞

Yahoo! 助手(3721) ActiveX远程代码执行漏洞发现者: Sowhat of Nevis Labs日期: 2008.05.06http://www.nevisnetworks.comhttp://secway.org/advisory/AD20080506EN.txthttp://secway.org/advisory/AD20080506CN.txtCVE:    N/A厂商Yah

1179

1、世界级模拟电路设计指南

本文详细探讨了模拟电路设计的各个方面,从基础概念到实际应用,涵盖了元件选择、滤波器设计、反馈系统、噪声问题以及SPICE仿真的优缺点。文中还提供了设计实例和无计算机设计方法,旨在帮助工程师提升模拟电路设计的效率与可靠性。

s1t2u3的博客 99

开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅、[秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵。在传播一些简单的知识的同时,我自己也得到了一些提升,这个是我感觉到的最大的益处。知识需要传播,在传播的过程中去让学习的人去提升,在交流中的过程中去让思考的人去展望,我希望我也能在这个传播的过程中出一份力...

dfkqtok82472315的博客 635

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

模型之外的那套装置:用 AI harness 完成一个三端同步应用

AI harness 指模型之外、让模型能持续产出可交付软件的全部工程装置。本文把它称作"支架"。它由五层构成:输入层规定模型读什么,反馈层规定模型怎么知道自己错了,观测层把界面与设备状态变成可读事实,记忆层让跨会话不失真,边界层规定哪些动作不许模型自行作出。支架的价值在六天里可以直接计量。

Leo的Matrix 182

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

软件测试用例模板怎么写:从用例设计到执行记录的全套指南

测试用例是测试工作的核心产出,它决定测试覆盖了多少、漏掉了什么。但大多数人的测试用例写得像流水账——只有正常路径,没有异常场景;只有操作步骤,没有预期结果;只有功能测试,没有非功能测试。本文拆解测试用例的标准结构,说明每个字段的含义和写法,给出覆盖功能测试、性能测试、安全测试的完整用例范例,并列出测试用例设计的五个高频遗漏点。

wuwangzhiduoshao的博客 153

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

附录一源码阅读路线与断点索引

本索引固定于Boot 3.5.7与Framework 6.2.12。先选择要解释的现象,再打开对应源码。表中观察对象是逻辑名称,不保证在所有重载中都是同名局部变量。抽象接口和注解用于阅读契约,不提供可执行方法体断点。

weixin_45476869的博客 162

MCP实战06:传输实战、测试与部署

你的 MCP Server 写完了,怎么确认它真的能被宿主正确调用?这课给传输层实战三件套:MCP Inspector 可视化调试、协议级自动化测试(pytest 断言 JSON-RPC 报文结构)、stdio/HTTP 双传输部署。测试不是可选项——工具描述错一个字段宿主就调不对,你能给 Server 建起自己的回归测试。

Blockbuster-drug 782

大型高复杂度互联网项目管理经验心得

复杂项目,管理的核心不是管人,而是管理依赖和变更简单项目重点是排任务、盯进度;多端多关联系统的大型项目,大部分延期、故障根源都来自依赖失控、变更失控。项目经理首要工作是把看不见的依赖显性化,把随意变更变成受控变更,而不是单纯催开发进度。分批上线不是降低标准,而是拆分风险,小步可控很多人觉得分批上线麻烦,希望攒到一起发布。但集中上线会把所有风险集中在同一个窗口,一旦出问题,排查范围巨大、影响面广。分批发布本质是风险隔离,每一批只承载有限的变更,出问题更容易定位、回滚、止损。

zyx980193917的博客 191

电芯串并联与BMS保护

串联升压、并联扩容,规则一句话,但整包能用多少由最弱的那节电芯说了算。这篇先算最弱电芯的账,再讲清三层保护,最后给对应的BMS测试用例:欠压、压差、均衡怎么测。BMS项目里有个常见场面:两台同配置的样车,电芯是同一批的,跑出来续航和限功率点却对不上。拆包量单体,一台里有一节电芯的容量比其他低了8%。整包表现被一节拖住,就是串并联的规矩在起作用。这篇先把规则和算例讲清,再讲保护分层,最后落到测试用例。

qq_43241255的博客 233

[LLM Wiki理论与实践-09]将OpenWiki融入Coding Agent为你节省Token

针对OpenWiki的整合则将Coding Agent的执行模式升级为**先读知识库、再精准修改代码**。OpenWiki预置概念文档、测试说明、页面清单与更新时间,让Agent快速理解业务意图、定位相关代码与测试、判断信息新旧,减少Token与时间开销,降低理解偏差和跨文件遗漏,使改动更一致、可复现,文档与代码同步维护。

JaydenAI的博客 410

MyBatis 入门核心教程:原生接口与 Mapper 代理双模式实战

MyBatis 是 Java 生态中应用最广泛的半自动化持久层框架,它在封装 JDBC 冗余模板代码的同时,将 SQL 的编写权完全交给开发者,兼具开发效率与性能优化空间,是国内企业级项目的主流持久层方案。MyBatis 提供了两种核心开发模式:原生接口模式适合理解框架底层执行原理,Mapper 代理模式是企业开发的标准规范。本文从基础概念出发,完整覆盖环境搭建、两种模式的代码实现、底层原理、事务机制与高频问题排查,所有代码均可直接运行,适合系统入门与实战参考。原生接口模式。

2401_87069538的博客 606

SpringBoot 的那些常用扩展点

JsonPropertySourceLoader,实现PropertySourceLoader接口@Override//这个方法表明这个类支持解析以json结尾的配置文件@Override//将文件内容读到 ByteBuffer 中//将读出来的字节转换成字符串// 将字符串转换成 JSONObject//将 json 的键值对读出来,放入到 map 中。

sxlishaobin的博客 87

高远-无网环境智能化测试用例下发:让智驾测试在无网环境也能闭环跑通

智能驾驶测试常发生在地下车库、隧道、野外、沙漠等弱网或无网场景。用例在云端、现场断网打不开,缺陷只能纸笔记录、回网手工补录,耗时且易错。本文以 高远-无网环境智能化测试用例下发 为例,拆解一套"出发前下发用例、现场离线记录、回网一键回写"的闭环方案,并给出可直接落地的工程实现。

2601_96352604的博客 260

FastAPI

FastAPI 是一个基于 Python 类型提示构建的现代、高性能 Web 框架,专门用于快速开发 API。它的核心设计理念是让你用标准 Python 写代码,就能同时获得数据校验、自动文档和编辑器支持。

hcgeng的专栏 308
上一篇: 绕过KAV6检测shellcode的cmd.ex­e输入输出重定向
下一篇: 如何关闭系统文件保护功能
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值