LLVM程序分析日记之插桩BranchInst】的更多相关文章

1. splitblockandinsertifthenelse() 一个代码例子:StackOverflow 2. SplitBlockAndInsertIfThen() 或者仅仅想插桩if then的逻辑,就可以用SplitBlockAndInsertIfThen(),其使用相对简单些,一个例子如下: Value* val_c = NULL; IRBuilder<> IRB(InsertPoint); Value* cmp = IRB.CreateICmpEQ(val_a, val_b);…
我们编写LLVM Pass或者将LLVM嵌入自己的项目时,需要用到CMake来组织自己的项目目录. Documents [1] http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project [2] http://llvm.org/docs/CMake.html#developing-llvm-passes-out-of-source Common Issues [1] https://github.com/sysrel/PROMPT…
We used the predecessors() to get the predecessors of a basic block based on LLVM's IR. The code is like: for (llvm::BasicBlock* pred_bb : predecessors(cur_bb)) { printf("prev_bb=%p\n", pred_bb); /* for debug */ } However, we found that the pred…
插桩测试 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日发布   导语:这篇文章的目…
基于上一篇的方法插桩,这一篇则是进一步的对每行的语句进行插桩. 对于存在分支的方法(例如if(){}else{}),对方法插桩的方法是不能够全部涉及到的.所以要对程序的每条语句进行插桩. 插入什么语句呢?可以插入包括以下的内容: 1‘ classname 2’ linenumber 此时需要用到javassist  api里的类CtMethod的方法insertAt(),对程序的每条语句进行插桩. 逻辑思想就是:读取class文件,对类的方法进行获取,读取每个类的行号范围,在每个行号前用inse…
这篇日志其实很弱智,也是因为换了新电脑,实验环境不全(当然,做这个实验我是在虚拟机里,因为接下来想拿些恶意代码的数据),所以这里记录一下在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…
Instrumentation基础 openrasp中用到了Instrumentation技术,它的最大作用,就是类的动态改变和操作. 使用Instrumentation实际上也可以可以开发一个代理来监视jvm的上运行的程序,可以动态的替换类的定义,就可以达到虚拟机级别的AOP实现,随时可以为应用增加新的功能. 基本功能和用法: java.lang.instrument包提供的实现依赖于JVMTI,JVMTI(Java Virtual Machine Tool Interface)就是java虚…
抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 原创 Leo 字节跳动技术团队 2019-08-09 https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q   背景 启动是App给用户的第一印象,对用户体验至关重要.抖音的业务迭代迅速,如果放任不管,启动速度会一点点劣化.为此抖音iOS客户端团队做了大量优化工作,除了传统的修改业务代码方式,我们还做了些开拓性的探索,发现修改代码在二进制文件的布局可以提高启动性能,方案落地后在抖…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 如何保证代码质量? 业务提需求,产品定方案,研发做实现,测试验流程.四种角色的相互配合是确保一个需求上线的必备条件.在整个需求的交付质量级别划分中,研发与测试是非常重的一环,如果研发提测的代码质量不高,就会出现不同级别的修BUG.返工甚至重做的风险. 那么,怎么来提高代码质量呢?一般我们都会要求研发在开发代码的过程中编写单元测试,验证自己的代码逻辑.如果最终单元测试覆盖度不足,可以…
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教程分为以下三篇 微信小程序开发日记--高仿知乎日报(上) 微信小程序开发日记--高仿知乎日报(中) 微信小程序开发日记--高仿知乎日报(下) 三篇分别讲不同的组件和功能块 这篇要讲 API分析 启动页 轮播图 日报列表 浮动按钮 侧滑菜单 API分析 以下是使用到的具体API,更加详细参数和返回结…