关于smali插桩】的更多相关文章

虽说是老生常谈的东西了,稍微记录一下. 我觉得最重要的就是寄存器的问题了,如果需要额外的寄存器,要在smali函数的最前面将寄存器数量增加到需要的数量. 在smali代码中,寄存器有两种表示方式,一种是v命名法,一种是p命名法.在v命名法中,从v0开始依次表示局部变量和参数.在p命名法中,从p0开始表示参数,从v0开始表示局部变量.以p命名法为例,在smali函数的开头,.locals n则表示可以使用v0到vn-1表示局部变量,因此如果插桩的时候需要额外的寄存器,则将.locals n 表示为…
一.smali目录下新建crack.smali,内容如下: .class public Lcrack; .super Ljava/lang/Object; .source "crack.java" .method public static log1(Ljava/lang/String;)V #打印出info 1字符串 .locals 1 .prologue const-string v0, "crack_log_str" invoke-static {v0, p0…
本文介绍了一个针对Dex进行插桩的工具,讲解了一下直接修改Dalvik字节码和Dex文件时遇到的问题和解决方法 作者:字节跳动终端技术-- 李言 背景 线下场景中,我们经常需要在APK中插入一些检测代码,来实现一些记录方法调用耗时,或者增加一些打印日志的功能.目前的常规做法都是在编译期修改class字节码达到,例如byteX提供了方便的修改class框架. 但是,编译期修改灵活性不足,对于已经编译好的apk则无能为力,无法插桩或修改.导致很多业务方都要配置独立的jenkins打包后,才能触发进步…
插桩适配前提,安装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…
zorka中插桩流程概述 1.在SpyDefinition中配置插桩属性,将SpyDefinition实例提交给插桩引擎.2.SpyDefinition实例中包含了插桩探针probes,probe插入到方法中,对方法的执行进行监控.方法的插入阶段主要包括三个:开始阶段(entry),返回阶段(return),异常阶段(error).每个probe会根据其指定的阶段对方法插桩,捕获其中的数据,比如当前时间.方法参数.方法内部的变量等.probe捕获的数据会封装为SpyRecord实例(Symbol…
javassist官网 http://jboss-javassist.github.io/javassist/ javassist API网 http://jboss-javassist.github.io/javassist/html/index.html javassist参考博客 https://www.ibm.com/developerworks/cn/java/j-dyn0916/  Ⅰ插桩 自动用例生成(使用Randoop) 评价(对用例筛选冗余)>功能覆盖.语句覆盖(一般用后者)…
基于上一篇的方法插桩,这一篇则是进一步的对每行的语句进行插桩. 对于存在分支的方法(例如if(){}else{}),对方法插桩的方法是不能够全部涉及到的.所以要对程序的每条语句进行插桩. 插入什么语句呢?可以插入包括以下的内容: 1‘ classname 2’ linenumber 此时需要用到javassist  api里的类CtMethod的方法insertAt(),对程序的每条语句进行插桩. 逻辑思想就是:读取class文件,对类的方法进行获取,读取每个类的行号范围,在每个行号前用inse…
插桩测试 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日发布   导语:这篇文章的目…
Instrumentation基础 openrasp中用到了Instrumentation技术,它的最大作用,就是类的动态改变和操作. 使用Instrumentation实际上也可以可以开发一个代理来监视jvm的上运行的程序,可以动态的替换类的定义,就可以达到虚拟机级别的AOP实现,随时可以为应用增加新的功能. 基本功能和用法: java.lang.instrument包提供的实现依赖于JVMTI,JVMTI(Java Virtual Machine Tool Interface)就是java虚…
1. splitblockandinsertifthenelse() 一个代码例子:StackOverflow 2. SplitBlockAndInsertIfThen() 或者仅仅想插桩if then的逻辑,就可以用SplitBlockAndInsertIfThen(),其使用相对简单些,一个例子如下: Value* val_c = NULL; IRBuilder<> IRB(InsertPoint); Value* cmp = IRB.CreateICmpEQ(val_a, val_b);…
抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 原创 Leo 字节跳动技术团队 2019-08-09 https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q   背景 启动是App给用户的第一印象,对用户体验至关重要.抖音的业务迭代迅速,如果放任不管,启动速度会一点点劣化.为此抖音iOS客户端团队做了大量优化工作,除了传统的修改业务代码方式,我们还做了些开拓性的探索,发现修改代码在二进制文件的布局可以提高启动性能,方案落地后在抖…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 如何保证代码质量? 业务提需求,产品定方案,研发做实现,测试验流程.四种角色的相互配合是确保一个需求上线的必备条件.在整个需求的交付质量级别划分中,研发与测试是非常重的一环,如果研发提测的代码质量不高,就会出现不同级别的修BUG.返工甚至重做的风险. 那么,怎么来提高代码质量呢?一般我们都会要求研发在开发代码的过程中编写单元测试,验证自己的代码逻辑.如果最终单元测试覆盖度不足,可以…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 片面了! 一月三舟,托尔斯泰说:"多么伟大的作家,也不过就是在书写自己的片面而已".何况是我,何况是我们! 虽然我们不书写文章,但我们写需求.写代码.写注释,当我们遇到了需要被讨论的问题点时,往往变成了争论点.这个好.那个差.你用的都是啥啥啥! 当你把路走窄了,你所能接受到的新的思路.新的想法.新的视野,以及非常重要的收入,也都会随之减少.只有横向对比.参考借鉴.查漏补缺…
ROM介绍: 2016.9.5更新日志: 1,更新源码到0905 2.修复bug若干. 2016.8.29更新日志: 1,更新源码到0829 2.修复bug若干. 2016.8.22更新日志: 1,更新源码到0822 2,增强系统稳定性,开机引导界面改版 3,官方修复其他若干bug 2016.8.1更新日志: 1,更新源码到0801 2,新增来电闪光设置开关 3,官方修复其他若干bug 2016.07.18版本更新日志: 1.同步更新7.18版本源码. 2.更换适配底包为Flour_mo(感谢)…
安卓动态调试七种武器之长生剑 - Smali Instrumentation 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器.因此,笔者将会在这一系列文章中(共7篇)分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用. 0x01 长生剑 长生剑是把神奇的剑,为白玉京所配,剑名取…
cp : https://blog.csdn.net/hp910315/article/details/51823236 cp : http://www.jb51.net/softjc/119036.html 静态分析Android程序的两种方法: 一.阅读反编译生成的Dalvik字节码. 1.使用文本编辑器阅读baksmali反编译生成的smali文件 (1)解压apk包 unzip xxx.apk 1 (2)用baksmali进行对解压出来的dex文件反编译 java -jar baksma…
Edit: F:\wamp\www\tasks Task ID Name Links? Date commit Date Done 9 Read openCV documents F:\wamp\www\git_repos\GitHub\MyAndroidTestAppsTest17_FromCpp\opencv\build\doc http://docs.opencv.org/trunk/modules/refman.html https://github.com/Itseez/opencv…
Android逆向之smali 头信息 smail文件前三行 .class <访问权限> [关键修饰字] <类名>; .super <父类名>; .source <源文件名> .class指令表示当前的类名,类的访问权限是public,类名是Lcom/example/mark/myfirstapp/MainActivity,类开头的L是遵循Dalvik字节码的相关约定,表示后面跟随的字符串是一个类 .super指定了当前类所继承的父类 .source指定了当…
javaagent 简介 Javaagent 只要作用在class被加载之前对其加载,插入我们需要添加的字节码. Javaagent面向的是我们java程序员,而且agent都是用java编写的,不需要太多的c/c++编程基础,不过这篇文章里也会讲到JVMTIAgent(c实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent. 对于javaagent或许大家都听过,甚至使用过,常见的用法大致如下: java -javaagent:myagent.jar=mode=tes…
本文介绍一下,当下比较基础但是使用场景却很多的一种技术,稍微偏底层点,就是字节码插庄技术了...,如果之前大家熟悉了asm,cglib以及javassit等技术,那么下面说的就很简单了...,因为下面要说的功能就是基于javassit实现的,接下来先从javaagent的原理说起,最后会结合一个完整的实例演示实际中如何使用. 1.什么是javassist? Javassist是一个开源的分析.编辑和创建Java字节码的类库.其主要的优点,在于简单,而且快速.直接使用java编码的形式,而不需要了…
在讲了APM的历史.作用和实际案例之后,下面我们来了解一下APM技术分类和实现方式以及它未来的发展趋势.在这之前,我们首先需要了解一下典型的互联网或移动互联网应用的整个应用交付链. 图1 上面这张示意图给出的就是一种典型的互联网应用的应用交付链,在这个应用交付链最左端是部署在机房或云服务商上的相对可控的区域,例如负载均衡.Web服务.应用服务器.数据库.消息总线.存储.等等.越往右就是离应用的最终用户越近的部分,会涉及到机房或云服务的链路,第三方的服务(例如云服务.CDN.推送.地图等等),用户…
移植MIUI Framework 原文:http://www.miui.com/thread-409543-1-1.html 1. 为什么使用代码插桩 首先我们来回顾第一章中的Android软件架构图,这个图中框架层的代码完全是由Java语言编写的,对于这两层的代码,在没有源代码的情况下我们可以 采取代码插桩的方式来注入我们的代码.但是对于下面几层的代码几乎都是以机器码的形式存在,机器码也是可以修改的,但是修改难度和修改smali代码的难 度不可同日而语.我们这个系列的文章不介绍如何修改这些机器…
各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源项目及库. github排名 https://github.com/trending,博主总结的很好,很全面,开源库地址:https://github.com/zhangdigdk/TimLiu-Android, 目录 UI UI 卫星菜单 节选器 下拉刷新 模糊效果 HUD与Toast 进度条 U…
Android 开源项目及库汇总(2) ListenToCode 2.7 2018.10.10 15:43 字数 8527 阅读 1001评论 0喜欢 29 地图 百度地图– Android百度地图 线路规划,模拟运动轨迹,及全景效果. AirMapView– 支持多个本地地图提供者包括谷歌地图V2和亚马逊地图V2.如果设备没有任何受支持的本地地图提供者,AirMapView会回退到基于web的地图提供者(目前谷歌地图). 数据库 ORMLite– ORMLite做的最棒但是学习成本有点儿高,O…
原文:Best Android Tools For Security Audit and Hacking android系统占移动市场份额的80%且有恶意软件,这是一个问题.Hacker会对手机恶意操作,不只是发送扣费短信.在本文,将会介绍对各式各样的app进行渗透测试和攻击(包含网络测试.网络攻击.嗅探等). Hackode:使用教程 Hackode是一个app.它是黑客的工具箱,可以为渗透测试者.白帽子.IT管理员和计算机安全从业者提供各式功能:比如勘察.扫描漏洞等.Hackode包含很多工…
微信开源,真是喜出望外,必须要去看看啊,比起nuwa来微信好很多,而且github上也有专门的官方文档说明,还有很多资料查询 参考地址:https://github.com/Tencent/tinker/wiki https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 想着以前研究的时候还要分包块什么一些复杂想法,现在发展到这种程度,真是三天不打就上房揭瓦了,很好比喻互联网,学习不能断,…
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ad7a70eaed47bb2699e68e Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师.每周都会举行嘉宾分享,话题讨论等活动. 本期,我们邀请了腾讯WXG Android开发工程师——张绍文,为大家分享<微信热补丁Tinker的实践演进之路>. 分享内容简介: Tinker 是微信官方的 Android 热补丁解决…
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1264&extra=page%3D1 继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的Android开发技术.其中比较著名的有淘宝的Dexposed.支付宝的AndFix以及QZone的超级热补丁方案.微信对热补丁技术的研究并不算早,大约开始于2015年6月.经过研究与尝试现有的各个方案,我们发现它…
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/583b9e3ee8992c2c2df6e6ac 导语 早在去年10月份,facebook就发布了介绍redex的文章,这个据说可以直接对apk做处理,既提高启动性能,又可减少安装包的利器让安卓开发者们都心动不已.直到今年4月,redex终于开源了,我们也第一时间对redex做了研究(有观众可能要说我骗人,这都11月了怎么还第一时间呢?好把这个总结是拖了很久才写),虽然由于坑多,…
第一次已经同步了所有源码(花了很长时间),第一次已经连接手机进行了插桩和解reject,那么第二次还需要这么麻烦吗?答案是:NO ! 1.官方源码,执行如下命令可以实现: repo sync -c 2.若是基于第三方base适配的,cd到base目录,执行如下命令更新到最新: git pull 3.执行完第2步,再cd到本机型的目录,执行以下更新: flyme upgrade 4.清理上次的打包文件,重新打包: flyme clean flyme fullota…