Rohex的博客

大家好!我是Rohex,没错!是Robin的SI次方,我希望自己能比Robin更优秀!

    binsign(关于二进制代码定位和特征搜索的项目)

它是什么?binsign是一个能够分析二进制代码特征的开源项目,它可以在不同平台中通过强特征定位到特定的二进制函数中,并可以搜索感兴趣的二进制特性。这些特征包括但不限于常量、引用、函数原型、局部变量、特殊指令等。更形象地说,我想做一个可以分析和提取二进制文件DNA的东西,并且可以在这个二进制文件的历史变化中掌握它的进化信息和二进制特点。 技术相关的项目?一个被编译成机器码的函数,它有什么......

    机器学习在二进制代码相似性分析中的应用

开篇  本文介绍了3篇二进制代码相似性分析的顶会技术,他们体现了二进制代码相似性分析中一些最先进的思想。第一篇是Genius技术,是在《基于神经网络图嵌入的跨平台二进制代码相似性检测》论文中作为对比技术介绍,它首次使用图嵌入这个机器学习的概念去做二进制代码相似性分析,它涉及到了聚类算法、图比对、密码本等技术,也为后两篇论文打下了基础;第二篇是Gemini技术,它使用了更先......

    基于二进制分析技术的开源漏洞检测方法概述

1.开源很重要,漏洞更加值得关注开源代码在互联网技术中扮演的角色愈发重要,例如Linux、Android、GNU开源项目,它们构成了互联网及物联网大厦的地基,现在很难说哪个厂商开发的设备或app不依赖于任何开源代码。对开源漏洞进行检测还是很有必要的!目前黑客入侵的最高效简单的方式就是通过已知开源代码的漏洞进行入侵,也就是说如果厂商的代码存在高危的开源漏洞,那在黑客眼中就如同裸奔。 2.为什......

    rop链攻击原理与思路(x86/x64)

rop链的基础原理 rop是Return Oriented Programming(面向返回的编程)的缩写; 根据函数调用规则,当刚跳转到其它函数去执行时,从被调用者的视角看:栈顶是返回地址,紧接着是自己的参数(X86架构下); 然后,被调用者会对栈空间进行一系列操作,保存寄存器和存储临时变量,但在即将退出时会清理自己消耗的栈空间,以使其回到自己被调用前的栈空间,保持栈平衡; 最后,......

    Glibc堆内存管理知识梳理

前言:在读了Ptmalloc2源代码分析和阿里牛人文章Linux堆内存管理深入分析后,本文以一种 有序的知识点摘要形式重新梳理下堆内存管理知识,希望可以将堆内存管理知识点进行概括、总结、串联,本文适合对堆内存管理有一定零星了解,通过本文将知识点串起来。 基础概念 当前针对各大平台主要有如下几种堆内存管理机制: dlmalloc – General purpose allocator ptm......

    A Fast Address Sanity Checker(谷歌AddressSanity论文翻译)

摘要对于C和C ++等编程语言,包括缓冲区溢出和堆内存的释放后重用等内存访问错误仍然是一个严重的问题。存在许多内存错误检测器,但大多数检测器要么运行缓慢,要么检测到的错误类型有限,或者两者兼而有之。  本文介绍了一种新的内存错误检测器AddressSanitizer。我们的工具能够发现堆、堆栈和全局对象的越界访问,以及释放后重用的错误。它采用了专门的内存分配器和代码插桩,......

    Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity Detection(翻译)

基于神经网络图嵌入的跨平台二进制代码相似性检测作者: Xiaojun Xu, …, 宋乐, 宋晓东 摘要  跨平台二进制代码相似性检测的关键在于:检测二进制函数是否相似,它具有很多安全应用场景。例如,代码剽窃检测,恶意软件识别,搜索漏洞。现有方法依赖于近似图匹配算法,这种算法不可避免地速度慢,有时不准确,并且难以适应新任务。为了解决这些问题,在这项工作中,我们提出了一种基......

    android可执行文件的综述

1. java/dex/odex/oat/vdex的历史演变 在应用开发时,Android代码的主要部分通常用Java编写;APK构建时,java源码首先用javac编译成Java字节码 ,然后Android通过使用d8编译器将此字节码转换为DEX文件(Dalvik字节码)。 在Android 4.4(KitKat)之前,运行时使用JIT编译将Dalvik字节码转换为目标机器代码,JIT在每......

    ELF符号延迟绑定(动态符号的加载)

过程总结首次调用会跳到动态符号的.plt表项的首条指令;该指令会跳转到该符号的.got表项地址,初始时该处存放的是.plt表项的第二条指令;.plt第二条指令会压入该符号的表项号,然后跳入.plt首地址;.plt首地址将got表中的第二项压入栈中(即本模块对应的ID),然后跳转到got表项的第三项执行( _dl_runtime_resolve函数); _dl_runtime_resolve函......

    android bin kits

What?android_bin kits是一个工具集,仅围绕一个目的进行:分析Android系统中的可执行文件(dex、odex、oat、vdex)中有什么? Why?Android native层代码经过编译后会有3种形式:静态库、动态库、elf可执行文件,而静态库最终会链接到动态库或可执行文件中去,最后android系统中native代码只会以动态库和elf可执行文件的形式存在,通......