加壳技术-DRx解码阻止调试

调试寄存器(DRx)理论与实践 导读: 标 题:DRx寄存器的使用(待续) (4千字)发信人:hume  时 间:2003-06-18 17:33:11详细信息:调试寄存器(DRx)理论与实践By Hume/冷雨飘心前言+牢骚:生活的苦痛就象烈火,时时煎熬着伤痕累累疲惫不堪的那颗心。我拼力挣扎,然而却无济于事……太残酷了….上帝也在苦笑。                                        阅读详情

加壳技术-DRx解码阻止调试

这些代码是从我逆向出hying外壳原码得来,有些描述不准确,凑合看吧

;//////////////////////////////////
;//drx 解码

        Call    Push_drx_handler

Drx_handler    Proc Near

Pframe        = Dword    Ptr  4
Pcontext        = Dword    Ptr  0ch

        Mov    Eax, [esp+pframe]
        Mov    Eax, [eax]                ; Eax =  Pframe->exceptioncode
        Mov    Ecx, [esp+pcontext]    ; Ecx -> Context

        Inc    Dword Ptr [ecx+0b8h] ; Context.regeip++

        Cmp    Eax, Exception_breakpoint
        Jnz    Drx_not_breakpoint

        Mov    Eax, [ecx+0b4h]    ; Eax <- Context.regebp
        Lea    Eax, [drx_0-@symbiont_start][eax]
        Mov    [ecx+4], Eax    ; Dr0

        Mov    Eax, [ecx+0b4h]    ; Eax <- Context.regebp
        Lea    Eax, [drx_1-@symbiont_start][eax]
        Mov    [ecx+8], Eax    ; Dr1

        Mov    Eax, [ecx+0b4h]
        Lea    Eax, [drx_2-@symbiont_start][eax]
        Mov    [ecx+0ch], Eax    ; Dr2

        Mov    Eax, [ecx+0b4h]
        Lea    Eax, [drx_3-@symbiont_start][eax]
        Mov    [ecx+10h], Eax    ; Dr3

        Xor    Eax, Eax
        And    Dword Ptr [ecx+14h], 0ffff0ff0h    ; 11111111111111110000111111110000b
        Mov    Dword Ptr [ecx+18h], 155h ; 101010101b
        Jmp    Drx_ret

Drx_not_breakpoint:
        Cmp    Eax, Exception_single_step
        Jnz    Drx_not_single
        Call    Drx_get_counet

        Dd        0    ; 记录单步断点出现次数

Drx_get_counet:
        Pop    Eax
        Inc    Dword Ptr [eax]
        Mov    Eax, [eax]
        Cmp    Eax, 1        ; Dr0
        Jnz    Loc_401341
        Not    Dword Ptr [ecx+0b0h] ; Context.regeax
        Jmp    Drx_processed

Loc_401341:
        Cmp    Eax, 2        ; Dr1
        Jnz    Loc_401357
        Mov    Eax, [ecx+0b0h]    ; Eax <- Context.regeax
        Rol    Eax, 13h
        Mov    [ecx+0b0h], Eax    ; Eax -> Context.regeax
        Jmp    Drx_processed

Loc_401357:
        Cmp    Eax, 3        ; Dr2
        Jnz    Loc_401385

        Add    Dword Ptr [ecx+0b0h], 78787878 ; Context.regeax  += 78787878h

        Mov    Eax, [ecx+0b0h]    ; Eax <- Context.regeax
        Mov    Ebx, [ecx+0a4h]    ; Ebx <- Context.regebx

        Xchg    Ax, Bx
        Add    Ax, Bx

        Mov    [ecx+0b0h], Eax    ; Eax <- Context.regeax
        Mov    [ecx+0a4h], Ebx    ; Ebx <- Context.regebx
        Jmp    Drx_processed

Loc_401385:
        Mov    Eax, [ecx+0a0h]    ; Dr3
                    ; Eax <- Context.regesi

        Xor    Byte Ptr [eax],    55h

Drx_processed:

        Xor    Eax, Eax
        Jmp    Drx_ret


Drx_not_single:
        Cmp    Eax, Exception_int_divide_by_zero
        Jnz    Drx_cannot_process

        Inc    Dword Ptr [ecx+0b8h] ; Context.regeip++  (2 Byte  Code)
        Xor    Eax, Eax
        And    [ecx+4], Eax    ; Context.idr0 <- 0
        And    [ecx+8], Eax    ; Context.idr1 <- 0
        And    [ecx+0ch], Eax    ; Context.idr2 <- 0
        And    [ecx+10h], Eax    ; Context.idr3 <- 0
        And    Dword Ptr [ecx+14h], 0ffff0ff0h    ; Context.idr6 <- 0ffff0ff0h
                                                            ; 清 Bt,bs,bd,b3,b2,b1,b0 位
        And    Dword Ptr [ecx+18h], 0dc00h ; 仅保留 Gd,ge 位
        Jmp    Drx_ret


Drx_cannot_process:
        Xor    Eax, Eax
        Inc    Eax

Drx_ret:
        Ret

Drx_handler    Endp


Push_drx_handler:

        Xor    Eax, Eax
        Push    Dword Ptr    Fs:0
        Mov    Fs:0, Esp

        Int    3        ; 设置 Drx
        Nop            ; Int 3  后紧跟 Nop 通常是为了兼容某些系统

        Mov    Ecx, Ebp
        Sub    Ecx, Esi
        Xor    Ebx, Ebx
        Xor    Eax, Eax

Drx_crc_13db:
        Lodsb
        Add    Ebx, Eax
        Loop    Drx_crc_13db
        Mov    Eax, Ebx

Drx_0:
        Clc            ; Not Eax
        Nop
        Lea    Esi, [drx_1-@symbiont_start][ebp]
        Mov    Ecx, @sumbiont_end-drx_1

Drx_decode_13ef:
        Mul    Ecx
        Ror    Eax, Cl
        Xor    [esi], Al
        Inc    Esi
        Inc    Eax
        Aam
        Loop    Drx_decode_13ef

        Mov    Ecx, Drx_handler-@symbiont_start ; Esi -> Loader Data
        Mov    Esi, Ebp                                    ; Mem Ptr Start
        Xor    Eax, Eax

Drx_crc_1404:
        Xor    Al, [esi]
        Ror    Eax, 8
        Inc    Esi
        Loop    Drx_crc_1404

Drx_1:

        Cld    ; Rol    Eax, 13h
        Nop
        Mov    Ecx, @sumbiont_end-drx_2
        Lea    Esi, [drx_2-@symbiont_start][ebp]

Drx_decode_1419:
        Lea    Eax, [ecx+eax*4+key_1] ; 43h
        Xor    [esi], Al
        Aam
        Inc    Esi
        Loop    Drx_decode_1419

        Mov    Ecx, Drx_2-push_drx_handler
        Shr    Ecx, 2        ; Ecx /= 4 (sizeof Dword)
        Lea    Esi, [push_drx_handler-@symbiont_start][ebp]
        Xor    Ebx, Ebx

Drx_crc_1434:
        Lodsd
        Xor    Ebx, Eax
        Loop    Drx_crc_1434

Drx_2:
        Stc            ; Add    Eax, 78787878h
                        ; Xchg  Ax, Bx
                        ; Add    Ax, Bx
        Nop
        Mov    Ecx, @sumbiont_end-drx_3
        Shr    Ecx, 2
        Lea    Esi, [drx_3-@symbiont_start][ebp]

Drx_decode_1449:
        Xor    Edx, Edx
        Mul    Ebx
        Add    Edx, 78787878
        Xor    [esi], Edx
        Mov    Eax, Ebx
        Mov    Ebx, Edx
        Add    Esi, 4
        Loop    Drx_decode_1449

        Lea    Esi, [crypted_code_start-@symbiont_start][ebp]
        Mov    Ecx, @sumbiont_end-crypted_code_start

Drx_decode_1469:
        Not    Byte Ptr [esi]

Drx_3:
        Nop            ; Xor    Byte Ptr [esi], 55h
        Nop
        Inc    Esi
        Loop    Drx_decode_1469

Crypted_code_start:

        Mov    Eax, 100h
        Xor    Edx, Edx
        Xor    Ebx, Ebx
        Div    Ebx        ; :d
        Nop

        Pop    Dword Ptr    Fs:0
        Pop    Eax

VLOOKUP_fixed.py 立即下载

相关推荐

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

加壳学习笔记(三)-简单的脱壳思路&调试思路

1.首先F3加载应用程序,然后一路F8直到自己停下来,或者是ctrl+F8他会自己运行,直到出现自己停下的时候(也就是OllyDbug把程序的控制权交出,转由应用程序自己控制,呵呵,不行,还得唠唠其他的......下面先跳转一下) 控制权、领空:关于程序的控制权和领空的问题,OllyDbug是一个强大的程序调试工具,具有强大的调试和反汇编能力,他会在应用程序拉到内存的那一刻,就牢牢的控制了该程序,具体的方法是(个人猜想而已):OD把程序拉到内存的同时,就是一个领孩子入瓮的问题,呵呵,实际这里

byteway的专栏 2443

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

雷林鹏分享:PHP 文件上传

  通过 PHP,可以把文件上传到服务器。   本章节实例在 test 项目下完成,目录结构为:   test   |-----upload # 文件上传的目录   |-----form.html # 表单文件   |-----upload_file.php # php 上传代码   创建一个文件上传表单   允许用户从表单上传文件是非常有用的。   请看下面这个供上传文件的 HT...

weixin_34268169的博客 230

基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)

内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。

【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)

内容概要:本文系统研究了用于轴承故障诊断的集中时频分析技术,重点解决了传统时频分析方法在处理非平稳信号时存在的能量分散与分辨率不足等问题。通过引入集中时频分析方法,能够有效聚焦信号能量,精确提取轴承故障特征频率,提升故障识别的准确性与时效性。文章详细阐述了该方法的理论基础,并结合仿真信号与实际实验数据验证其优越性能,同时提供了完整的Matlab代码实现流程,涵盖信号预处理、时频变换、参数优化及结果可视化等环节,便于读者复现与拓展应用。; 适合人群:具备一定信号处理理论基础和Matlab编程能力的研究生、科研人员,以及从事机械设备状态监测、故障诊断与预测性维护工作的工程技术人员。; 使用场景及目标:①应用于电机、风机、齿轮箱等旋转机械的早期轴承故障检测,实现故障预警;②提升工业设备运维系统的智能化水平,支撑预测性维护体系构建;③作为高校或研究机构在信号处理、机械故障诊断等课程中的教学案例与实践素材。; 阅读建议:建议读者结合文中提供的Matlab代码逐段运行与调试,深入理解集中时频分布的生成机制及其关键参数(如核函数选择、平滑窗口大小)对诊断效果的影响,并尝试将其应用于其他类型的机械故障信号分析中,开展对比研究以深化对该方法适用性的认识。

关于硬件断点

4个断点寄存器DR0~DR3用来设置断点的线性地址。 DR6为状态寄存器,DR7为控制寄存器。 DR4和DR5保留。当CR4.DE==1时,访问DR4和DR5产生#UD异常;IF CR4.DE==0,访问DR4和DR5将是对DR6和DR7的访问。 下面这张表非常清楚:    |---------------|----------------| Dr0|                 用

RanCheIce的专栏 4308

保姆级避坑指南:在Ubuntu 22.04上用ROS2 Humble搞定TurtleBot3的SLAM与导航(附5个常见报错解决方案)

本文提供了一份详细的Ubuntu 22.04上使用ROS2 Humble和TurtleBot3进行SLAM建图与导航的避坑指南,涵盖Gazebo启动失败、场景加载问题、环境变量设置、GLIBCXX版本冲突及Nav2参数配置等5个常见报错的解决方案,帮助开发者高效完成机器人导航项目。

weixin_29062823的博客 285

LTE资源调度(7)-DRX不连续接收(1)

1.为什么要使用DRX在讲解DRX的概念前,我们需要先了解下什么是“空闲态”,什么是“连接态”。我们经常会听到“空闲态”、“连接态”这样的术语,这个概念是从RRC层角度来说的。简单来说,当UE在某个小区完成了驻留之后,我们就可以称该UE进入了“空闲态”或“IDLE态”。如果该UE后续又完成了随机接入过程,那么我们就可以称该UE进入了“连接态”或“CONNECTED态”。无论是空闲态,还是连接态,如

阿米尔C 的技术博客 5万+

使用Kettle进行数据同步(增量)

文章目录kettle介绍kettle安装kettle使用使用kettle同步关系型数据库数据(MySQL示例)1. 创建一个转换2. 选择表输入3. 格式转换4. 执行脚本5. 创建job使用kettle同步NoSql数据(MongoDB示例)创建转换时的注意事项MongoDBInput怎么创建job的创建如何在Linux上面运行已经创建好的job?1、把创建好的job传输到Linux机器上面2、编辑kjb文件3、执行任务 kettle介绍 Kettle 是一款国外开源的 ETL 工具,纯 Java 编写

JenKin的博客 7350

2025年春科研论文写作指导(如何写好科研论文)研究生网课期末考试

希望能帮助到大家

beijieweiyu的博客 5786

android apk 防止反编译技术第一篇-加壳技术

做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习。现在将最近学习成果做一下整理总结。学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步。这篇主要讲apk的加壳技术,废话不多说了直接进入正题。 一、加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在

lonely_online的专栏 1082

Windows10内核逆向-2-KiSystemCall64的调用流程剖析

本文深入剖析了Windows 10 x64系统中KiSystemCall64函数的完整调用流程。从用户态触发syscall指令开始,详细讲解了如何通过swapgs切换内核栈、构建KTRAP_FRAME陷阱帧、进行SMAP/CFG等安全检查,到最终通过SSDT寻址并执行目标系统服务的全过程,揭示了系统调用从Ring 3到Ring 0切换的核心机制与安全设计。

weixin_29209805的博客 82

软件加壳与脱壳

加壳一般是指保护程序资源的方法. 脱壳一般是指除掉程序的保护,用来修改程序资源. 病毒加壳技术与脱壳杀毒方法 : 壳是什么?脱壳又是什么?这是很多经常感到迷惑和经常提出的问题,其实这个问题一点也不幼稚。当你想听说脱壳这个名词并试着去了解的时候,说明你已经在各个安全站点很有了一段日子了。下面,我们进入“壳”的世 界吧。 一、金蝉脱壳的故事 我先想讲个故事吧。那就是金蝉脱壳。金蝉脱壳属于三十六计中的混

djimon的专栏 1930

三菱FX5U PLC与CCLINK模块通信配置全流程(附接线图与参数详解)

本文详细解析了三菱FX5U PLC与CCLINK模块的通信配置全流程,包括硬件接线规范、参数设置及软件编程方法。通过实战指南帮助工程师快速掌握FX5U与CCLINK模块的高效通信技术,提升工业自动化控制系统的稳定性和可靠性。

weixin_27014595的博客 428

从原始数据到农学模型:DJI M3M/P4M多光谱影像全链路处理实战

本文详细介绍了使用DJI M3M/P4M多光谱无人机进行农学建模的全链路流程。核心在于强调辐射标定的首要性,它将原始DN值转换为具有物理意义的反射率,是确保后续植被指数计算与模型反演准确性的基石。文章通过大疆智图和Pix4Dfields的实战演示,手把手指导完成数据处理、影像镶嵌及光谱信息提取,最终构建从光谱指数到叶面积指数等关键农学参数的反演模型,实现精准农业分析。

weixin_29281941的博客 243

如何在IDA中找到MFC程序的消息处理函数

比起用Win32SDK写的程序,要分析MFC应用程序要麻烦不少。在前者,只要找到注册窗口类的地方就知道其WinProc的位置。那里是程序的控制中心,只要顺藤摸瓜就可以找到你感兴趣的地方。对于用MFC写的程序,这一切都变得复杂起来了。这时,所有的消息都是通过一套复杂的机制来完成分发的。他们是通过分发数据表来找到最终函数地址的. 详细请参阅M

老裴 2889

Informer:比Transformer更有效的长时间序列预测

目录 AAAI 2021最佳论文:比Transformer更有效的长时间序列预测 Background Why attention Methods:the details of Informer Solve_Challenge_1:最基本的一个思路就是降低Attention的计算量,仅计算一些非常重要的或者说有代表性的Attention即可,一些相近的思路在近期不断的提出,比如Sparse-Attention,这个方法涉及了稀疏化Attention的操作,来减少Attention计算量,然后涉及的

To be a better man 1万+

He4Hook 使用指南

                                            He4Hook 使用指南linux2linux  写于 2005/7/25[介绍]He4Hook是一个老牌的 Russian Rootkit,但是由于一些新的rootkit出现,再加上其在功能上的单一--文件控制(隐藏或保护),He4Hook在国内的使用不是很普遍。所以无法找到一篇关于He4Hook使用的文档。

老裴 2758

Python爬虫实战:美团商家数据采集系统

本文将详细介绍如何使用Python最新技术栈构建高效的美团商家信息采集系统。内容涵盖异步爬虫、反爬对抗、数据存储、可视化分析等完整流程,提供可落地的代码方案和工程实践。

2201_76125261的博客 2658

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

常用反跟踪技术

作者:smokingroom日期:2005-04-12站点:www.programmerlife.com邮箱:smokingroom@sina.com前言:反跟踪调试技术对于Delphi程序员来说,似乎比较陌生。因为许多的技术,直接用Delphi语言似乎比较难以完成,而对汇编来说,则比较容易完成,因此,下面的代码用到了内嵌汇编语言。如果你看不懂也不要紧,因为已经经过测试,可以直接放进你的程序里面。

老裴 2668

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

*** PEid插件——Generic OEP Finder 原理分析 ***

***    PEid插件——Generic OEP Finder 原理分析    ***   PEid的这个小插件用了很久了,一直觉得功能不错,准确率也挺高的,自己在写壳的过程中也曾尝试避开其检测,但一直没有成功,于是抽了些时间看看它的实现原理,这才恍然大悟。   下面是这个插件的一级输出函数:10001870 ; Exported entry   1. DoMyJob1000187010001

老裴 2217

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

程序自删除方法大总结

程序自删除方法大总结 icyfoxlovelace/冰狐浪子   程序的自删除早已经不是什么新鲜的话题了,对于各位大虾来说是更是比较容易的事情,但想想自己刚学时遇到的种种错误,我觉得有必要把自己所知道的各种方法总结一下,希望对新手的学习能够有所帮助。程序的自删除广泛用于反安装程序最后的自删除(环保呀!),当然更多见于木马、病毒首次安装的自动销毁^*^,至于用于何种用途就看你自己啦!经典自删除说到程

老裴 1859

对付冰刀的一点点方法

总引篇::rT决定写这篇可以教坏小孩子的文章的原因是rootkit实在写的郁闷了,出来散散心。c%©CVC电脑病毒论坛 -- 中国毒客的快乐天地  2(进程篇::Xm`MPb实话说,我觉得你都drv了,还他妈什么进程,干脆都ring0不好吗?对于icesword不使用从可爱的swap链上找_人我表示感谢,但是不代表其他anti不会,单说icesword(以下称is)用PspCidHandleTab

老裴 1119

在NT系列操作系统里让自己“消失a在NT系列操作系统里让自己“消失”

=====[ 1. 内容 ]============================================ 1. 内容 2. 介绍 3. 文件   3.1 NtQueryDirectoryFile   3.2 NtVdmControl 4. 进程 5. 注册表   5.1 NtEnumerateKey   5.2 NtEnumerateValueKey 6. 系统服务和驱动 7. 挂钩和

老裴 1093
上一篇: 市面上所有号称"虚拟机","防火墙"的实时监控杀毒软件无一不是使用的IFSHOOK技术.但是同时也有一些朋友不断写MAIL给我打听如何实现读写的监控.下面给出用VTOOLSD写的代码.也就是所有实时杀毒软件的奥秘.同时,很多拦截文件操作的软件,例如对目录加
下一篇: windows2000下简单的进程隐藏
pll621
博客等级 码龄25年 27粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值