- 博客(133)
- 收藏
- 关注
原创 论文学习_SemDiff: Binary Similarity Detection by Diffing Key-Semantics Graphs
对于两个待比较的二进制程序,例如 BinA 和 BinB,分别包含函数集合 {FuncA1, ..., FuncAn} 和 {FuncB1, ..., FuncBm}。为了在函数级别上进行相似性检测,作者从中选取一对函数 FuncAi(i ∈ {1, ..., n})与 FuncBj(j ∈ {1, ..., m}),并将其输入至 SemDiff 中进行相似度计算。图生成:首先,作者利用定制化的符号执行技术,从给定函数中提取关键指令的符号表达式;其次,将提取到的符号表达式转换为关键表达式;
2025-07-13 20:54:48
921
原创 技术学习_检索增强生成(RAG)
RAG(Retrieval-Augmented Generation)是一种结合检索与生成的大语言模型增强机制,它通过三个阶段实现外部知识的有效利用:首先对问题及相关文档进行索引;然后在文档中检索出与问题相关的内容;最后将检索结果作为上下文输入大语言模型,生成更加准确、可靠的回答,从而突破模型知识更新慢、无法访问私有数据等限制。Multi-Query 是一种通过生成多个语义等价但表达方式不同的问题版本,来增强检索效果的方法。相比单一查询,它能从多个角度覆盖知识库中的潜在相关内容,提升信息召回率。
2025-07-10 22:09:49
784
原创 技术学习_大语言模型
大语言模型(LLM)作为推动人工智能发展的核心技术,正不断拓展其在各类任务中的应用边界。ChatGPT 是当前最具代表性的大模型之一,其卓越的语言理解与生成能力,推动人工智能迈上了新的台阶。与此同时,国产大模型 DeepSeek 也在快速发展,凭借高性能、低成本、国产化与开源化等优势,展现出强大的本土竞争力。随着不同类型的大模型不断涌现,LLM 正加速走向更广泛的实用化与生态多元化。:大语言模型具备强大的语言理解与生成能力,能够处理复杂的自然语言任务。
2025-07-02 22:16:49
862
原创 技术学习_人工智能基础
从1940年代至2012年,神经网络的发展经历了多个关键阶段。1943年,McCulloch 和 Pitts 提出了首个形式化神经元模型(MP模型),1949年 Hebb 提出神经可塑性原则,为学习规则奠定基础。1958年,Rosenblatt 提出感知机模型,引发第一次人工智能热潮,但因其无法处理非线性问题,1969年迎来首次“AI寒冬”。1980年代,Hopfield 网络(1982)和反向传播算法(1986)的提出,推动多层神经网络的发展,引发第二次兴起。
2025-07-01 21:33:18
736
原创 论文学习_Unlocking LLMs‘ Assembly Code Comprehension via Structural-Semantic Instruction Tuning
汇编代码分析与理解在逆向工程等应用中具有关键作用,但由于信息密度低且缺乏显式的语法结构,这一过程面临诸多挑战。传统的掩码语言建模(MLM)方法并未专注于自然语言交互,而新兴的以解码器为核心的大型语言模型(LLM)在二进制分析方面虽取得部分成果,但在整体理解能力方面仍有待深入探索。为此,我们提出了一种端到端的结构-语义指令调优框架——
2025-07-01 14:37:19
932
原创 论文学习_Virtual Compiler Is All You Need For Assembly Code Search
汇编代码搜索对于减轻逆向工程师的负担至关重要,使其能够在庞大的二进制程序中通过自然语言快速定位特定函数。尽管这一任务具有重要意义,但由于构建高质量数据集的复杂性,它仍面临诸多挑战。本文提出训练一个大型语言模型(LLM)来模拟通用编译器的思路。我们通过利用Ubuntu软件包,构建了一个包含200亿个标记的数据集,并在此基础上继续预训练CodeLlama,使其成为一个虚拟编译器(ViC),能够将任何编程语言的源代码编译为汇编代码。
2025-07-01 11:18:18
679
原创 论文学习_Source Code Foundation Models are Transferable Binary Analysis Knowledge Bases
致力于将底层的二进制代码还原为对人类开发者有意义的高层语义信息,从而使逆向工程更容易理解与操作。近年来在源代码和二进制。
2025-06-13 19:18:09
915
原创 论文调研_BCSD综述论文调研
同一份源代码在不同编译配置下可能生成不同的二进制表示。如上图所示,开发人员可以修改任意灰色模块,从而在不改变程序语义的前提下,生成多种不同的二进制程序。(1)这些差异可能源于标准编译过程中的变动,例如为了提高程序性能,开发人员可能调整编译器的优化级别,或更换不同的编译器,尽管源代码未变,但生成的二进制代码将随之变化。此外,开发人员也可能更换目标平台以适配不同的硬件架构,而若新平台使用不同的指令集,则生成的二进制代码可能差异巨大。(2)开发人员还可以主动应用混淆技术。
2025-06-07 14:47:42
900
原创 开源第三方库发展现状
其中,npm(JavaScript)拥有超过 310 万个包,PyPI(Python)约 64.5 万个,RubyGems(Ruby)约 18 万个,Maven Central(Java)托管超过 500 万个工件,NuGet(.NET)约 30 万个,Packagist(PHP)约 22 万个,CRAN(R)则约有 2.2 万个包。:截至 2025 年 5 月,GitHub 官方数据显示,其托管的代码仓库超过 4.2 亿,相比用户提到的 1 亿有显著增长,反映了开发者社区的快速扩张。
2025-05-26 14:11:05
528
原创 论文学习_OCTOPOCS: Automatic Verification of Propagated Vulnerable Code Using Reformed Proofs of Concept
图1展示了本文所使用的漏洞传播与PoC重构的核心概念,表1则对相关符号做出了详细说明,并将在全文中统一采用这些符号。需要指出的是,文件类型的PoC是由一系列字节字符组成的。当该PoC作为输入文件传递给软件时,软件的执行路径由其中的字节内容所决定。如果这个PoC能够验证S中的漏洞v,那么S的执行路径最终应当会到达v的位置。现在假设漏洞代码已从S传播至T,此时T中包含实际漏洞代码的内部执行路径本身并未改变,如图1所示;但T从程序入口到达该共享代码区域的路径,与S的路径通常存在较大差异。
2025-05-16 19:28:04
887
原创 论文学习_Directed Greybox Fuzzing
现有的灰盒模糊测试工具(Greybox Fuzzers,简称GF)在测试引导性方面存在明显不足,比如难以有效地将测试引导至特定的高风险变更或补丁、关键系统调用、危险代码位置,或是试图重现漏洞时涉及的堆栈追踪中的相关函数。为此,有研究者提出了“定向灰盒模糊测试”(Directed Greybox Fuzzing,简称DGF)的概念,其核心目标是生成能高效触达指定程序位置的输入。
2025-05-15 23:00:37
1035
原创 论文学习_Precise and Accurate Patch Presence Test for Binaries
以CVE-2015-8955这一Linux内核漏洞的安全补丁为例,通过这个案例可以直观展示检测补丁是否存在于目标二进制中的具体步骤。该补丁内容如图1所示。代码段选择:在补丁检测的流程中,首要步骤是选取一个变更位置,即一段被修改的语句序列。整体来看,该补丁包含多个改动点,但并非所有变更都适合作为判断补丁是否存在的依据。其中,第11行新增的 if 语句不仅引入了控制流结构的变化,还涉及了新增函数参数的使用,具有明显的语义特征。因此,将第11行作为判断补丁是否已应用的标志,更具代表性和可行性。粗粒度匹配。
2025-05-15 21:03:58
823
原创 论文学习_TransferFuzz: Fuzzing with Historical Trace for Verifying Propagated Vulnerability Code
在软件开发中,代码重用往往促进了漏洞的传播,这使得CVE报告中受影响软件的范围变得不够准确。
2025-05-15 17:16:19
1006
原创 工具学习_模糊测试
其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃、断言失败,以发现可能的程序错误,比如内存泄漏。与传统的模糊测试相比,定向模糊测试并不完全依赖于随机生成数据,而是基于某些程序特性或漏洞模式的知识来生成更具针对性的输入数据。这种方法通过向程序输入特定类型的数据(例如,有意造成溢出的数据),来测试程序在特定情况下的行为。:是一种更加精确的模糊测试方法,它通过特定的输入策略和目标导向来提高测试效率,旨在发现特定类型的漏洞,如缓冲区溢出、内存泄漏等。
2025-05-14 18:01:26
413
原创 论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity
挑战性案例:使用三个语义上等价但语法上不同的函数对证明仅从静态代码学习的一些挑战。跨架构匹配:它们都取某个寄存器的低12位,并将其与0x80进行比较。要识别这种语义相似性,不仅需要理解 x86 架构中的and指令与 ARM 架构中的lsllsr指令的大致执行语义,还需要掌握代码中具体数值(如 0xfff 和 0x14)在指令中的操作方式。然而,现有的机器学习方法大多仅基于静态代码进行训练,无法观测每条指令的实际运行效果。
2025-05-13 22:48:18
623
原创 论文学习_A Cross-Architecture Instruction Embedding Model for NLP-Inspired Binary Code Analysis
在处理诸如专有软件和病毒这类。
2025-05-13 19:56:40
997
原创 工具学习_VirusTotal使用
VirusTotal Intelligence 允许用户在其庞大的数据集中进行搜索,以,例如哈希值、杀毒引擎检测结果、元数据信息、提交时的文件名、文件结构特征、文件大小等。可以说,它几乎是恶意软件领域的“谷歌搜索引擎”。
2025-05-13 18:43:07
618
原创 论文学习_Understanding the AI-powered Binary Code Similarity Detection
近年来,AI驱动的二进制代码相似性检测(Binary Code Similarity Detection, 简称 BinSD)已广泛应用于程序分析领域。该技术通过神经网络将复杂的二进制代码比较问题转化为代码嵌入向量之间的距离度量。然而,由于现有研究在嵌入策略、评估方法、运行环境以及使用的基准数据集等方面存在较大差异,导致我们难以量化评估 BinSD 在现实应用中的解决程度。此外,当前对日益复杂的嵌入神经网络结构及多样化评估方法缺乏深入系统的研究,已成为制约 AI 驱动 BinSD 发展的关键因素。
2025-05-13 13:15:06
644
原创 论文学习_A Survey of Binary Code Similarity(综述论文)
二进制代码相似性方法的主要目的是比较两个或多个二进制代码片段,以识别它们之间的相似性与差异(研究背景)。由于在许多实际场景中源代码往往不可获取,因此具备比较二进制代码的能力显得尤为重要,例如在补丁分析、漏洞搜索以及恶意软件检测与分析等领域都有广泛应用(研究意义)。过去二十年中,研究人员提出了大量与二进制代码相似性相关的方法,但这一研究方向尚未经过系统性的梳理与分析(现存问题)。为此,有研究首次对该领域进行了全面的综述。
2025-05-12 18:00:45
1061
原创 论文学习_SWE-bench: Can Language Models Resolve Real-World GitHub Issues?(ICLR20204,普林斯顿)
当前语言模型的能力发展已超越现有评估体系的覆盖范围,因此必须针对其技术前沿开展系统性研究以指导未来方向,<研究背景>。我们发现软件工程领域具有场景丰富性、挑战持续性和应用真实性等特点,能够为下一代语言模型提供多维度的能力验证平台,<研究动机>。为此,我们构建了SWE-Bench评估框架——该框架基于12个主流Python开源项目中的实际开发场景,从GitHub真实问题库中提取了2,294个具有完整代码库环境及问题描述的软件工程任务(对应已提交的拉取请求),要求语言模型通过代码编辑解决问题,<研究内容>。此类
2025-03-03 18:13:50
1158
原创 DeepSeek_部署
深度求索(DeepSeek)是一家专注于实现人工通用智能(AGI)的中国公司,致力于通过前沿的人工智能技术推动社会进入更智能的时代。其核心技术涵盖大语言模型开发、多模态 AI 研究和强化学习等领域。在技术实现上,DeepSeek 基于改进版 Transformer 架构构建核心模型,并结合混合精度训练和分布式计算策略提升效率;同时,在数据处理方面,通过高质量的数据清洗和标注流程确保模型的可靠性和安全性。此外,DeepSeek 的轻量化推理引擎和微服务架构使其能够高效支持实时交互和行业应用。
2025-02-20 16:52:20
400
原创 论文学习_IFAttn: Binary code similarity analysis based on interpretable features with attention
由于基本特征提取不是本文的主要工作,因此我们采用 TIKNIB 中语义前特征的定义,并简要介绍如下。如图下所示,语义前特征是通过代码语法和结构分析直接或间接获得的。数值形式的特征称为数值前语义特征,其他特征称为非数值前语义特征。数值前语义特征: 从程序中提取数值特征在BCSA中非常常见,因为这些数值特征可以直接表示为数值向量以进行相似性比较。根据特征提取的粒度,数值前语义特征可以分为三组。首先,许多先前的工作从每个基本的二进制函数块中提取数值特征。其次,可以从函数控制流图(CFG)中提取数值特征。
2025-01-17 12:47:37
995
原创 论文学习_Revisiting Binary Code Similarity Analysis Using Interpretable Feature Engineering and Lessons
在较高层面上,TIKNIB 利用先前文献中广泛使用的一组前语义特征来重新评估前语义特征的有效性 (RQ2)。它根据我们的相似性评分指标评估两个输入函数中的每个特征,该指标直接测量每个特征值之间的差异。换句话说,它捕获了不同编译选项中每个特征的差异程度。尽管我们的方法很简单,但 TIKNIB 仍然能产生与最先进的工具相当的高准确率。我们在这里并不是说 TIKNIB 是最好的 BCSA 算法。我们的研究确定了 BCSA 未来的几个研究方向。
2025-01-16 17:07:20
819
原创 工具学习_随机森林相关算法
随机森林(Random Forest)因其易用性和鲁棒性成为分类任务中的常用算法。然而,在数据科学领域,许多更高效或针对特定问题优化的模型被提出,以满足日益复杂的需求。本文将介绍几种与随机森林类似的分类算法,并探讨它们的技术细节与独特之处。
2025-01-15 17:47:23
748
原创 论文复现_LibAM Base Line
在本次评估中,的基准方法主要是(通过 ISRD 的策略创建的变体由于本身不可直接与比较,LibAM 采用作为基准方法,在单一环境中的检测任务中可以轻松替换为。此外,还与其他方法进行了对比,如和。与依赖于常量特征的和相比,在处理结构化相似区域和复杂环境中的表现更为优越。与相比,通过将孤立函数连接成区域并进行结构相似性比较,以及利用解决重叠问题,显著提高了检测精度。因此,LibAM 提供了一个更为精确和全面的 TPL 检测方案,能够在不同环境和复杂情况下提供更高的检测准确性。
2025-01-13 20:24:56
239
原创 工具学习_Conan_Install
为了获取TPL间的依赖关系,我们首先从 GitHub 项目中提取 Conan 包含的组件,如下所示:在获取组件名之后,我们根据组件名从 Conan 中获取 TPL 间的依赖关系,如下图所示:之后获得包含TPL间依赖关系的 json 文件,如下所示:这部分中,我们根据收集到的依赖关系生成对应的 Conanfile ,代码如下所示:代码运行后,当前目录中的 conan_install 目录下会生成对应的 conanfile,如下所示:通过 Conan 指令安装对应的 TPL,具体代码如下所示:4.
2025-01-13 12:53:09
605
原创 工具学习_社区检测算法
社区检测算法(Community Detection Algorithm) 是一类用于在图(网络)中发现节点的聚集结构(即“社区”或“模块”)的算法。社区是指一个图中的一部分节点,它们之间的连接比与其他节点的连接更紧密。这些算法广泛应用于社交网络分析、推荐系统、生物网络、金融市场分析等领域。
2025-01-04 21:21:02
1757
原创 论文学习_SoK: An Essential Guide For Using Malware Sandboxes In Security Applications: Challenges, Pitfa
恶意软件沙箱尽管在安全应用程序中带来许多优势,但其复杂的选择、配置和使用过程常让新用户不知所措,甚至可能导致错误的部署,进而对安全分析结果产生负面影响。目前,缺乏系统化的指导来帮助用户正确选择和应用沙箱工具,这种知识空白阻碍了沙箱在不同研究领域中的有效应用。为了填补这一知识空白,研究团队系统分析了84篇关于x86/64恶意软件沙箱的学术论文,并提出了一种新颖的框架,以简化沙箱组件和操作。
2025-01-04 18:49:53
868
原创 工具学习_firmware mod kit
通过提取第三方库通常涉及提取固件的文件系统,然后从中查找并提取特定的库文件。以下是详细的步骤,展示了如何通过提取第三方库。
2024-12-24 14:43:35
498
原创 漏洞分析实践_格式化字符串漏洞
格式化字符串是由普通字符串和格式化规定字符构成的字符序列。普通字符会原封不动地复制到输出流中,而格式化规定字符以。
2024-12-17 21:43:15
1089
原创 工具学习_Buildroot
Buildroot 是一个简单、高效且易于使用的工具,旨在通过交叉编译生成嵌入式 Linux 系统。它支持生成交叉编译工具链、根文件系统、内核镜像以及引导加载器。通过类似于内核配置的菜单界面(menuconfig、gconfig、xconfig),用户可以轻松进行配置,并快速构建基本的系统,通常只需15-30分钟。
2024-12-10 16:01:45
1082
原创 工具学习_AVClass
AVClass的输出结果依赖于输入的AV标签,只有至少被两个AV引擎提到的标签才能被提取。因此,如果标签过于简略或通用,可能无法有效地进行分类。AVClass提供了高度的可自定义性,用户可以手动修改分类、标签和扩展文件,或使用更新模块进行自动化调整。作为一个强大的自动化工具,AVClass极大地简化了恶意软件家族标签的提取过程,帮助安全研究人员从大量恶意软件样本中迅速获取有用信息,提高分析效率。
2024-12-02 20:34:47
466
原创 VT Intelligence_File search modifiers
VirusTotal 提供了一些特殊的搜索词,用于精细化搜索结果。例如,使用可以获取被五个或更多杀毒引擎检测到的文件。如果要获取被不超过十个引擎检测到的文件,可以使用。若指定一个数字而不加加号或减号,则会返回正好被指定数量引擎检测到的文件,例如。这些搜索词可以在同一查询中多次使用,例如会返回被 20 到 30 个引擎检测到的文件。
2024-12-02 20:14:41
1105
原创 VT Intelligence_Search
VirusTotal 的搜索功能对所有用户免费开放,每当用户请求扫描时,VirusTotal 会存储分析报告,允许用户通过 MD5、SHA1、SHA256 或 URL 查询报告,而无需重新提交文件或 URL 扫描。任何以此为 API 使用的脚本将被禁止。对于更高级的搜索功能,VirusTotal 提供了名为 VirusTotal Intelligence 的付费服务,允许用户根据样本特征(如杀毒检测名称、大小、文件类型、二进制内容、行为模式或驱动下载 URL)进行搜索,找到匹配的恶意样本并下载进一步分析。
2024-12-02 16:59:37
380
原创 VirusTotal Intelligence Introduction
VirusTotal Intelligence 允许您在我们的数据集中进行搜索,以识别符合特定标准的文件(如哈希值、杀毒软件检测结果、元数据、提交文件名、文件格式结构特性、文件大小等)。我们可以将其看作是恶意软件的“谷歌”。我们还提供了用于批量下载文件的脚本和一些用例。
2024-12-02 16:54:32
683
原创 论文复现_kTrans: Knowledge-Aware Transformer for Binary Code Embedding
kTrans 是一种融合知识的通用二进制代码嵌入模型,提供了源代码、预训练模型以及快速启动指南。它具有可扩展性,无需复杂的程序分析,仅需使用任意反汇编工具(如 IDA Pro)提取函数指令并检索相关知识。kTrans 还具备灵活性,知识是可选的,用户可以仅通过汇编文本生成二进制代码嵌入,而无需使用知识。
2024-12-02 12:49:24
551
原创 论文学习_SAFE: Self-Attentive Function Embeddings for Binary Similarity
对于两个二进制函数 和 是相似的(即),如果它们是通过不同的编译器从相同的源代码编译得到的结果。本质上,一个编译器是一种确定性转换,能够将源代码映射为相应的二进制函数。在本文中,我们将编译器视为特定的软件(例如。
2024-11-26 20:49:56
757
原创 BCSD_SOTA
Catalog1 是一种基于模糊哈希的方法,用于比较二进制函数。它通过使用 MinHash 局部敏感哈希(LSH)算法来生成固定长度的签名,从而实现对函数字节的模糊比较。字节提取:Catalog1 直接以函数的原始字节作为输入特征。这些字节可以直接从二进制文件中提取,不需要额外的预处理或特征工程。# 二进制函数的字节序列MinHash 计算:Catalog1 使用 MinHash 技术将字节序列映射为固定大小的签名。
2024-11-25 22:04:36
1182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人