插桩测试 https://source.android.google.cn/compatibility/tests/development/instrumentation https://zhuanlan.zhihu.com/p/25745743 开源字节码插桩工具HiBeaver介绍与原理详解  https://www.4hou.com/binary/13026.html 动态二进制插桩的原理和基本实现过程(一) luochicun 二进制安全 2018年8月15日发布   导语:这篇文章的目…
环境:Intel Pin 2.14 CentOS 6 X86-64 --linux.tar.gz 进入 ./source/tools/ManualExamples make all TARGET=intel64 没有问题 ./pin 报错,提示没有ld-linux.so.2 百度/google 发现是因为在64位linux装了32位程序 yum install glibc.i686 成功 随便编了一个test.c gcc test.c -o test ./pin -t ./source/tool…
这篇日志其实很弱智,也是因为换了新电脑,实验环境不全(当然,做这个实验我是在虚拟机里,因为接下来想拿些恶意代码的数据),所以这里记录一下在Windows下怎么安装和使用Pin这个程序分析领域最常用的工具之一,首先搬出论文来拜拜: Luk, C., Cohn, R., Muth, R., Patil, H., Klauser, A., Lowney, G., Wallace, S., Reddi, V.J. and Hazelwood, K., Pin: building customized p…
参考:http://software.intel.com/sites/landingpage/pintool/docs/62732/Pin/html/ http://blog.nruns.com/blog/2013/10/07/TracingExecutionWithPin-Carlos/ Pin is a tool for the instrumentation of programs. It supports the Android*, Linux*, OSX* and Windows* o…
抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 原创 Leo 字节跳动技术团队 2019-08-09 https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q   背景 启动是App给用户的第一印象,对用户体验至关重要.抖音的业务迭代迅速,如果放任不管,启动速度会一点点劣化.为此抖音iOS客户端团队做了大量优化工作,除了传统的修改业务代码方式,我们还做了些开拓性的探索,发现修改代码在二进制文件的布局可以提高启动性能,方案落地后在抖…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 如何保证代码质量? 业务提需求,产品定方案,研发做实现,测试验流程.四种角色的相互配合是确保一个需求上线的必备条件.在整个需求的交付质量级别划分中,研发与测试是非常重的一环,如果研发提测的代码质量不高,就会出现不同级别的修BUG.返工甚至重做的风险. 那么,怎么来提高代码质量呢?一般我们都会要求研发在开发代码的过程中编写单元测试,验证自己的代码逻辑.如果最终单元测试覆盖度不足,可以…
插桩适配前提,安装Ubuntu或者其他linux系统. 安装JDK7 sudo apt--jdk Ubuntu 16.04与基于它的版本,需要添加源 sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt--jdk 安装git.repo sudo apt-get install repo git 新建bin目录,保存repo mkdir ~/bin 指定repo路径 PATH=~/bin:$PATH 下载rep…
Instrumentation基础 openrasp中用到了Instrumentation技术,它的最大作用,就是类的动态改变和操作. 使用Instrumentation实际上也可以可以开发一个代理来监视jvm的上运行的程序,可以动态的替换类的定义,就可以达到虚拟机级别的AOP实现,随时可以为应用增加新的功能. 基本功能和用法: java.lang.instrument包提供的实现依赖于JVMTI,JVMTI(Java Virtual Machine Tool Interface)就是java虚…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 片面了! 一月三舟,托尔斯泰说:"多么伟大的作家,也不过就是在书写自己的片面而已".何况是我,何况是我们! 虽然我们不书写文章,但我们写需求.写代码.写注释,当我们遇到了需要被讨论的问题点时,往往变成了争论点.这个好.那个差.你用的都是啥啥啥! 当你把路走窄了,你所能接受到的新的思路.新的想法.新的视野,以及非常重要的收入,也都会随之减少.只有横向对比.参考借鉴.查漏补缺…
本文介绍了一个针对Dex进行插桩的工具,讲解了一下直接修改Dalvik字节码和Dex文件时遇到的问题和解决方法 作者:字节跳动终端技术-- 李言 背景 线下场景中,我们经常需要在APK中插入一些检测代码,来实现一些记录方法调用耗时,或者增加一些打印日志的功能.目前的常规做法都是在编译期修改class字节码达到,例如byteX提供了方便的修改class框架. 但是,编译期修改灵活性不足,对于已经编译好的apk则无能为力,无法插桩或修改.导致很多业务方都要配置独立的jenkins打包后,才能触发进步…