言归正传,项目分为小程序、H5和PC三端业务,今天主角是PC端,PC端采用Nerv框架、Node.js、grunt(打包、编译)、ruby(底层库)、compass(底层库),这些都需要提前和开发沟通了解为选择对应代码覆盖率工具做准备。
可执行与可链接格式 (英语:Executable and Linkable Format,缩写 ELF,此前的写法是 Extensible Linking Format),常被称为 ELF格式,在计算中,是一种用于可执行文件、目标代码、共享库和核心转储(core dump)的标准文件格式。
frida是一款基于python + java 的hook框架,可运行在androidioslinuxwinosx等各平台,主要使用动态二进制插桩技术。本期“安仔课堂”,ISEC实验室为大家详解frida,认真读完这篇文章会让你在逆向工作中效率成倍提升哦!
随着业务增长,随之而来的前端需求激增,如何在有限的时间内保证前端代码的质量。通过测试同学单方面的保障,还是免不了前端线上问题,存在回归不到位或者测试遗漏的地方,同时测试质量的高低没有客观数据可量化。
之前GitHub上有人整理过一个叫Awesome-Fuzzing的资料,整理了关于Fuzzing技术的电子书、视频、工具、教程以及用于练习的漏洞程序。整体上不错,但工具上还是不够全,有些不错且希望阅读代码学习的工具,发现未在其中,因此重新整理出下面这一份资源,其中有些还曾二次开发过,有些是还未来得及学习的,写出来权且当作学习计划。
IAST有主动式的与被动式的,典型的开源代码分别有OpenRASP与Dongtai IAST,通常认为被动式的优势在于不产生脏数据,不干扰业务方的工作,可部署于测试环境。笔者最近一周弄清楚了dongtai iast的实现,虽然代码没有注释且有点乱,但渐入佳境后就感觉还好,以此文作为对此的学习记录。
性能优化 , 插件化 , 热修复 , 等技术都需要用到 " 字节码插桩 " 相关技术 ;
在 【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 ) 博客中分析到 , " 使用 GOT 表进行函数拦截 " 方法不能保证 100% 成功 , 插桩拦截 可以实现 100% 拦截成功率 ;
最近出现了几篇关于二进制重排启动优化的文章。所有方案中都需要事先统计所有的函数调用情况,并根据函数调用的频次来进行代码的重排。
作者:mannywang,腾讯安全平台后台开发 研发效能是一个涉及面很广的话题,它涵盖了软件交付的整个生命周期,涉及产品、架构、开发、测试、运维,每个环节都可能影响顺畅、高质量地持续有效交付。在腾讯安全平台部实际研发与测试工作中我们发现,代码插桩隔离是单元测试工作中的一个强需求,然而业界现有 C/C++插桩工具由于使用上的局限性,运行效率和体验仍有很大改善空间。本文介绍了团队基于研效优化实践而自研的动态插桩工具,旨在实现单元测试的轻量化运行,提高代码覆盖率,从而助力研发团队的效能提升。 问题&思路 目
目前存在的 C/C++插桩工具,基本上都有各种使用上的局限,比如流行的 gmock,只能对 C++的虚函数进行插桩替换,针对非虚函数,则需要先对被测代码进行改造;同时对于系统接口,C 风格的第三方库代码,也无能为力。
写在前面 本文是SDKHotfix相关的SDK热更系列文章中的一篇,以下为项目及系列文章相关链接: SDKHotfix整体介绍:http://blog.bihe0832.com/sdk_hotfix_project.html SDKHotfix对应github地址:https://github.com/bihe0832/SDKHoxFix ---- 这篇文章主要介绍一下SDK热更中的gradle插件,该插件实现了自动在代码中插桩以及生成补丁包。文中提到所有代码地址:SDKHotfix中插桩及补丁
【Android 逆向】函数拦截实例 ( 函数拦截流程 | ① 定位动态库及函数位置 ) 博客中简单介绍了 hook 函数 ( 函数拦截 ) 的流程 , 本篇博客开始介绍函数拦截实例 ;
之前的文章分别介绍了基于Lockset算法、基于happens-before关系以及基于两者混合的方法。对于这些方法,已有的一些论文中提到的有关实验对比可能都比较片面或是不太客观,因此实现这些方法做一个比较全面的实验对比分析是很有必要的,不仅可以对这些已有的方法有一个更深入的理解,同时也能够发现他们存在的一些共性问题,方便后续的研究。
今天推荐一个群友开源的插桩框架 —— Mamba ,想学习 Gradle Plugin 和 ASM 的朋友们可以关注一波。
Frida是一款基于python + javascript 的hook框架,可运行在android ios linux windows osx等各平台,主要使用动态二进制插桩技术;由于是基于脚本(javascript)的交互,因此相比xposed和substrace cydia更加便捷
【Android 插件化】插件化简介 ( 组件化与插件化 ) 【Android 插件化】插件化原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件化】插件化原理 ( 类加载器 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 注入上下文的使用 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 )
PTFuzzer是基于AFL框架实现的一款开源fuzz工具,它采用了Intel Processor Trace硬件部件来收集程序执行的路径信息,改进了原来AFL通过编译插桩方式获取程序执行路径信息的方法。和AFL相比,硬件收集的路径信息更加丰富,同时可以直接对目标程序进行fuzz,无需源码支持。
作者:Hcamael@知道创宇404实验室 日期:2022年11月30日 相关阅读: 在 Android 中开发 eBPF 程序学习总结(一) 在 Android 中开发 eBPF 程序学习总结(二)
随着业务的迅速发展,业务代码逻辑的复杂度增加。QA 测试的质量对于产品上线后的稳定性更加重要。一般 QA 测试的工作流程分为两大项:自动化测试和人工测试。这两种测试后都需要得到代码覆盖率。自动化测试的覆盖率,在双端都有比较成熟的方案。
在近几个月对某产品后台微服务的SLI建设过程中,逐渐意识到这类监控的最佳方式还是通过jaeger/opentracing这类链式tracing才能以最佳的监控数据结构提供全链路的数据监控
上节说了javaagent和javassist,其实javassist也是基于ASM实现的。一般人不懂得JVM指令的话,根本ASM搞不起来,也用到了访问者的设计模式,看起来跟咱们写代码不是一个套路,学
wr_zhang25,携程资深前端开发工程师,关注前端代码覆盖率、JavaScript开源方向。
写在前面 本文是SDKHotfix相关的SDK热更系列文章中的一篇,以下为项目及系列文章相关链接: SDKHotfix整体介绍:http://blog.bihe0832.com/sdk_hotfix_project.html SDKHotfix对应github地址:https://github.com/bihe0832/SDKHoxFix ---- 项目说明 该项目主要是提供给SDK的开发者使用,提供了SDK开发者如何实现SDK自身热更新(包括Java代码和Native),如果是APP的开发者了
在稍微具有一点规模的代码中(C 语言),调用第三方动态库中的函数来完成一些功能,是很常见的工作场景。
作为一个测试人员,保证产品的软件质量是其工作首要目标,为了这个目标,测试人员常常会通过很多手段或工具来加以保证,覆盖率就是其中一环比较重要的环节。
Ringbuffer是trace32框架的一个基础,所有的trace原始数据都是通过Ring Buffer记录的,其主要有以下几个作用:
Frida 是一款基于 Python + JavaScript 的 Hook 与调试框架,实现app逆向的强大工具; 模拟器下载安装教程:https://blog.csdn.net/EXIxiaozhou/article/details/127767808
AddressSanitizer是Google用于检测内存各种buffer overflow(Heap buffer overflow, Stack buffer overflow, Global buffer overflow)的一个非常有用的工具。该工具是一个LLVM的Pass,现已集成至llvm中,要是用它可以通过-fsanitizer=address选项使用它。AddressSanitizer的源码位于/lib/Transforms/Instrumentation/AddressSanitizer.cpp中,Runtime-library的源码在llvm的另一个项目compiler-rt的/lib/asan文件夹中。
说到这里,有必要说一下Java字节码和Dalvik 字节码 java字节码可以参考这篇文章作为了解一文让你明白Java字节码,里面演示了如何将字节码反过来解析出对应的class文件。我自己也按照他的方法解析了一次class文件字节码解析 Dalvik 字节码可以看这篇dex文件字节码解析这篇文章开头还有对应的参考链接,本人按照这两个链接做的 总的来说,dex文件比class文件要复杂得多.一方面是小端排列,另一方面需要寻址.最重要的一点是,class文件的类索引里面所有的信息都是直接排进去的,但是dex文件里面的类都是存的索引,dex文件更为紧凑.也就是意味着,如果需要修改dex文件,那么他的成本会比修改class文件难得多
TinyInst 是一个基于调试器原理的轻量级动态检测库,由 Google Project Zero 团队开源,支持 Windows、macOS、Linux 和 Android 平台。同 DynamoRIO、PIN 工具类似,解决二进制程序动态检测的需求,不过相比于前两者 TinyInst 更加轻量级,更加便于用户理解,更加便于程序员进行二次开发。
我们在进行单元测试时,经常需要关注一个覆盖率的指标,许多发布流程甚至要求达到特定的百分比。
经常有人问这样的问题:“我们在做单元测试,那测试覆盖率要到多少才行?”。答案其实很简答,“作为指标的测试覆盖率都是没有用处的。”
缘起是看到网易云音乐技术团队发布的一篇《systrace 统计方法耗时》的文章,文章讲解了如何通过 hook 的方式将 trace 开关打开,并实现不依赖 PC 开启 Trace 功能,实现线上抓取。文章思路与流程非常清晰,是一个不错的实践(造轮子)机会,我将此文转发给正在研究 xcrash 和 xhook 的同事,我俩一拍即合,打算利用这个机会撸一个框架,并且,同事还给我发了一篇更全面的实践文章《抖音 Android 性能优化系列:新一代全能型性能分析工具 Rhea》。
PIN平台允许你通过添加、修改或者变换指令逻辑来在每一个指令基本块的内部插装单独的指令。
代码覆盖率作为一个指导性指标,可以一定程度上反应测试的完备程度,是软件质量度量的一种手段。100%覆盖的代码并不意味着100%无bug的应用,代码覆盖率作为质量目标没有任何意义,而我们应该把它作为一种发现未被测试覆盖的代码的手段。
上周 JAVA代码覆盖率工具JaCoCo-原理篇 简单介绍了JaCoCo其生成覆盖率的基本原理,这周的实践篇的主要内容就是将原理应用到实践中,本篇内容全部都是具体的项目使用实战经验,这里分享给大家,共勉~ 一、覆盖率项目中使用介绍 本节开始详细介绍下项目中的JaCoCo实战经验。 下图是覆盖率在实际在项目中的主要实施点: 分别详细介绍下: 1.1 确定插桩方式 Android项目只能使用JaCoCo的离线插桩方式。 为什么?主要是因为Android覆盖率的特殊性: 一般运行在服务器java程序的插桩可
Clang的全称是C Language Family Frontend for LLVM,即基于LLVM的C系列语言的前端编译器。iOS应用的前端编译,即是采用Clang完成的。本篇文章,我们主要介绍Clang内置的一个简单的代码覆盖率检测功能,对于iOS开发来说,此功能更多用于Objective-C的方法插桩,为二进制重排提供支持,优化应用启动速度。但代码覆盖率检测功能并不仅仅只能应用与二进制重排,其本质是对于函数级、基本块级或代码边缘级插入回调,我们可以基于这一原理更灵活的实现所需要的功能。
埋点是一个常见的需求,就是在函数里面上报一些信息。像一些性能的埋点,每个函数都要处理,很繁琐。能不能自动埋点呢?
曹原 发自 凹非寺 量子位 | 公众号 QbitAI 马上过年了,开新能源车回家,在你的选项里吗? 可能有人会说:我选择开燃油车。 如果开燃油车,万一碰到高速堵车油耗会蹭蹭上涨,同时燃油价格也在上涨,长途出行选择燃油车很可能不如选新能源车省钱。 并且为了避免限行限牌,在城市工作的很多人首选都是能上绿牌的新能源车。 但开绿牌车回家却是一门技术活,特别是纯电动车—— 要开多远、路上充电桩位置和数量都得提前考虑、规划路线,万一同时碰上堵车和马上没电,只能推着走叫拖车。 然而拖车费动辄几千块,也不是一笔小数目。
如果仅仅用 Smali 来分析代码,效果其实不如用 dex2jar 和 jd-gui 更直观,毕竟看反编译的 java 代码要更容易一些。
这些user,框架,连接池,驱动都依赖jdbc,jdbc是一个什么东西?jdbc是一种规范,一堆接口组成的规范j2se,由驱动来实现的。servlet也是一种接口规范,是j2ee的规范,由tomcat,jetty等容器实现的。任任何一层都可以做为插桩的切入点,但是选用User 层、框架层、连接池&数据源层、驱动层其实现是多样的,无法做到普适性。所以在此选用JDBC 作为插桩切入 点。
在快速发展的大语言模型(LLM)世界中,确保最佳性能和可靠性比以往任何时候都更为关键。这就是'LLM 可观测性'的概念发挥作用的地方。这不仅仅是监控输出;更是深入洞察这些复杂系统内部运作的关键。
Baby 不要再哭泣,这一幕多么熟悉~ 在使用 App 时,有些人遇上这弹框应该会是一本正经,而有些人看到了估计一脸懵逼(黑人❓)。当然,这里我们要讨论的不是什么初恋,而是对大多数开发者来说,戏虐你千百遍,回头对它如初恋的卡顿。 曾经有篇杂志说“使用一款应用,犹如谈一场恋爱”,当时我觉得这是一本正经地在胡说八道,你手机装了上百款应用,能说这像谈恋爱?但现在想想,其实并非没有道理,当你喜欢上一款应用,往往是因为它的功能足够吸引你,就像你喜欢他的外表,再然后你体验了一段时间(交往),发现这款确实是你喜欢的
Gcov是一个测试C/C++代码覆盖率的工具,伴随GCC发布,配合GCC共同实现对C/C++文件的语句覆盖、功能函数覆盖和分支覆盖测试。
在软件测试中,如果想在一个耗时严重的操作中找出其耗时的瓶颈时,一般采用的方法是在每个被调用的函数中写进测试代码,在运行时打出日志。如果该操作涉及到的业务逻辑特别复杂时,插入这些测试代码不仅工作量十分巨大,而且难以维护。如果后期剔除不干净,不仅增加了无关的代码量,还会在执行时造成不必要的资源浪费。 像在手机管家的清理加速模块中,垃圾扫描这个功能的耗时是性能优化的重点,如何快速测试和分析扫描过程中的函数耗时一直是性能测试想克服的难题。但是在数以千计的函数中插入测试代码简直是一场恶梦,所以优化过程一直是不知道从何
测试覆盖率是对测试完成程度的度量。它通常依据某种覆盖准则来对测试用例执行情况进行衡量,以判断测试执行得是否充分 。 ——出自《 计算机科学技术名词 》第三版
新能源汽车主要包括混合动力、纯电动、燃料电池三大类。混动车又包括插电混合和普通混合。
领取专属 10元无门槛券
手把手带您无忧上云