首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
插桩专题
插桩
/* 起始插桩路径记录 */ long start = clock(); this->supt->setCurProcessResult("has_new_input",start,1); /* 参数重定向 */ has_new_input = this->supt->getParamValueWithNameAndKey("has_new
阅读更多...
分享一个思路,使用插桩技术解决慢查询测试问题
前段时间,我负责测试的系统在生产环境运行出现问题。该系统对于响应时间要求较高,问题发生的时候并发很高,出现大量请求超时,超时请求比例随时间推迟越来越高,最后几乎全部请求都失败。滚动重启了所有进程后,很快又出现超时情况。 后经过排查,发现是新版本实现某个功能时修改了一个数据库查询语句,修改后该查询语句的查询条件未使用到索引字段,而所查询的表生产环境中体量巨大,因此这个查询操作耗时从毫秒级变成了秒级
阅读更多...
协议模糊测试——使用SanitizerCoverage对LightFTP插桩以获取覆盖率
1、介绍 对协议进行模糊测试时,使用具体的协议实现作为测试目标。例如,测试FTP协议,可以使用LightFTP服务器作为测试目标,因为它是FTP协议的具体实现。模糊测试的效率通常以覆盖率为指标进行评估。为了获取测试时所达到的代码覆盖率,可以在安装对应的协议实现时进行插桩。最常用的计算代码覆盖率的工具为LLVM的SanitizerCoverage。它通过使用clang对程序进行编译时插入桩代码,再
阅读更多...
LLVM入门教学——SanitizerCoverage插桩(Linux)
1、介绍 LLVM 的 SanitizerCoverage 是一种代码覆盖工具,设计用于支持基于 fuzzing 的测试和其他安全相关工具。SanitizerCoverage 在编译时插桩代码,以在运行时收集覆盖信息,从而帮助识别未覆盖的代码路径,提高测试的有效性和全面性。SanitizerCoverage可以用户自定义桩代码,参考:LLVM入门教学——SanitizerCoverage插桩(自
阅读更多...
暴力突破 Android 编译插桩(八)- class 字节码
专栏:暴力突破 Android 编译插桩系列 一、Class 类文件结构 Java 虚拟机当初被设计出来的目的就不单单是只运行 Java 这一种语言。目前 Java 虚拟机已经可以支持很多除 Java 语言以外的其他语言了,如 Groovy、JRuby、Jython、Scala 等。之所以可以支持其他语言,是因为这些语言经过编译之后也可以生成能够被 JVM 解析并执行的字节码文件(clas
阅读更多...
暴力突破 Android 编译插桩(七)- AspectJ 使用
专栏:暴力突破 Android 编译插桩系列 一、AOP 理解 在 Java 当中我们常常提及到的编程思想是 OOP(Object Oriented Programming)面向对象编程,即把功能或问题模块化,每个模块处理自己的事务。但在现实世界中,并不是所有问题都能完美地划分到模块中。比如,我们要完成一个事件埋点的功能,我们希望在原来整个系统当中,加入一些事件的埋点,监控并获取用户的操作
阅读更多...
暴力突破 Android 编译插桩(一)- 入门
专栏:暴力突破 Android 编译插桩系列 一、前言 随着 Android 开发的发展,越来越多场景需要用到编译插桩了。日常开发中我们肯定也都接触过编译插桩,只是没有去深入挖掘它的实现原理,比如 ButterKnife、无痕埋点等,所以学习编译插桩不仅可以提升我们的竞争力,还可以让我们在开发中开拓视野、更好地解决问题。 我们经常使用 Gradle Plugin + 编译插桩的方式,因此
阅读更多...
LLVM 插桩 LLVM IR LandingPadInst Invoke 指令
刚刚遇到的报错如下: The unwind destination does not have an exception handling instruction!%170 = invoke noundef ptr @_ZN6icu_668TimeZone14createTimeZoneERKNS_13UnicodeStringE(ptr noundef nonnull align 8 dere
阅读更多...
android 反编译apk ,修改apk ,smail,插桩
近期遇到了需要修改apk源码的问题,于是上网查了下相关资料,编写了HelloWorld进行修改看看可行性,经过实验证明此方案可行,并且后来也成功用这个方法对目标apk进行了修改,只不过需要修改的部分比HelloWorld复杂些,但是只要了解下smali也能进行相关的修改,下面讲下具体的步骤,文中所用到的资源会在文章的结尾给出,感兴趣的可以下载试试。 首先介绍下要用到的工具:
阅读更多...
使用插桩技术解决慢查询测试问题
原文由zlulu发表于TesterHome社区,原文链接 缘起 前段时间,我负责测试的系统在生产环境运行出现问题。该系统对于响应时间要求较高,问题发生的时候并发很高,出现大量请求超时,超时请求比例随时间推迟越来越高,最后几乎全部请求都失败。滚动重启了所有进程后,很快又出现超时情况。 后经过排查,发现是新版本实现某个功能时修改了一个数据库查询语句,修改后该查询语句的查询条件未使用到索引字段
阅读更多...
安卓从开发到逆向(四),smali插桩
smali插桩 如果仅仅用Smali来分析代码,效果其实不如用dex2jar和jd-gui更直观,毕竟看反编译的java代码要更容易一些。但Smali强大之处就是可以随心所欲的进行插桩操作。何为插桩,引用一下wiki的解释: 程序插桩,最早是由J.C. Huang 教授提出的,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”),通过探针的执行并抛出程序运行的特征数
阅读更多...
知乎x-zse-96参数插桩补环境详细学习记录
小白入门逆向的第二个月,单纯记录逆向知乎参数的过程,如有侵权,请联系,sorry。 言归正传: 1.网址:aHR0cHM6Ly93d3cuemhpaHUuY29tL3NlYXJjaD9xPSVFOSU4MCVCRSVFNiU5QyU5RiVFNSVBNCU5QSVFNSVCMCU5MSVFNSVBNCVBOSVFNSU4OCU5NyVFNCVCOCVCQSVFNSVBNCVCMSVFNCV
阅读更多...
程序插桩-实例
本文主要介绍插装的实例,在测试分类下已经简单介绍了程序插装的基本概念以及插装的位置,更多知识可以查看程序插装相关文献,现将整个插装的流程通过一段C语言程序进行实例说明。 注:还处于学习阶段,实例较简单,内容尚待改进,错误之处请指出。 步骤一: Visual studio 编辑代码 1.file->new->project,弹出的窗口中选择第一项W32 console application
阅读更多...
AFL入门教学——插桩、执行、覆盖率收集与反馈
AFL(American Fuzzy Lop)是一个面向安全的模糊测试工具,它使用编译时插桩技术和遗传算法,可以自动发现触发目标二进程程序的测试用例,从而大大提高测试代码的功能覆盖率。本文主要讲述AFL是如何实现插桩的,如何对覆盖率进行收集的,以及如何利用覆盖率指导种子进行变异的。 一、插桩 使用AFL对目标程序进行测试时,首先需要通过afl-gcc/afl-clang等工具对其进行编译
阅读更多...
二进制动态插桩工具intel PIN的学习笔记
前言 最近两周为了课程汇报学习了intel PIN这个动态插桩(dynamic instrument)工具,总体的学习感受还是挺累的。一方面,这个方向比较小众,相关的二手资料比较少,能参考的也就只有官方手册这种一手资料;另一方面,自己关于系统底层的知识还是有点不扎实,比如看到operand和opcode好久都没反应过来是什么。 总之这是一次学习曲线非常非常陡峭的学习经历,anyway,这次也是收
阅读更多...
jacoco插桩源码,看这一篇就够了
知识储备 众所周知,jacoco的功能主要分成两块: jacoco agentjacoco cli 其中jacoco agent主要用来对业务方服务进行插装,而cli则提供一些工具对插桩数据进行处理,比如dump,merge,report等,今天我们着重通过源码来分析jacoco的插桩过程,在分析其插桩逻辑前,我们需要一定的知识储备,主要包括但不限于 ASM,Java Instrument
阅读更多...
【python 学习】代码插桩调试
Python 代码插桩方法 文章目录 Python 代码插桩方法什么是插桩技术?使用插桩调试python插桩的一种实现方法 什么是插桩技术? 插桩技术是指在保持原有程序逻辑完整性的基础上,在程序中加入探针,通过探针来收集代码在执行过程中的信息(函数参数,返回值、变量变化信息、函数调用顺序等等)。插桩技术在调试代码的过程中也非常实用。通常实现方法是在特定位置插入代码段,从而收
阅读更多...
clang插件对llvm源码插桩,分析函数调用日志(1)
tick_plot__compile.ipynb 时长边界_时上链异数: 长短函数调用链列表 0. 用matplotlib找系统中字体文件大于1MB的 中文字体通常很大,这样过滤出的 通常有中文字体 结果中 看名字 ‘AR PL UMing CN’ 果然是中文字体 from matplotlib.font_manager import fontManagerimport o
阅读更多...