首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【字节码】AOP 技术 ( “字节码“ 技术简介 | AspectJ 工具 | ASM 工具 )

文章目录 一、" 字节码 " 技术简介 二、AspectJ 工具 三、ASM 工具 一、" 字节码 " 技术简介 ---- 性能优化 , 插件化 , 热修复 , 等技术都需要用到 " 字节码...给 Android 中所有的 Activity 添加安全策略 , 如果每个页面逐个手动添加 , 可能存在遗漏 , 并且会造成代码冗余 ; 通过 AOP 面向切面编程 , 完成上述操作 ; " 字节码...技术应用 : 代码生成 : 编译时生成代码 , 提高开发效率 , 减少手工工作量 , 降低出错概率 ; 代码修改 : 为某些三方库添加崩溃 try catch 异常捕获机制 ; 代码监控 : 编译时..., 监控应用各种性能 , 如页面打开时间 , 页面停留时间 ; 友盟应该用了该技术 ; 代码分析 : 使用编译时字节码技术 , 自定义代码检查 ; 字节码原理 : 使用 javac 编译出 ....---- AspectJ 工具 : 使用简单 : 使用 AspectJ 工具修改字节码文件 , 不需要了解 .class 字节码文件的二进制格式 ; 成熟稳定 : 字节码操作 如果错了 1

1.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

说说编译

1.什么是编译? 顾名思义,所谓的编译就是在代码编译期间修改已有的代码或者生成新代码。 ? Java-字节码-dex 如图,这是Java代码的编译流程。...从图中可以看出,编译可以从两个方面着手 Java 文件。类似 APT、AndroidAnnotation 这些代码生成的场景,它们生成的都是 Java 文件,是在编译的最开始介入。...可以操作“.class”的 Java 字节码,也可以操作“.dex”的 Dalvik 字节码,这取决于我们使用的方法。...缺点是:如果使用者对字节码不熟悉的话不好操作 3.掌握应该具备的基础知识 (1)熟练掌握字节码相关技术。...如AspectJ,ASM 4.实践 字节码--你也可以轻松掌握,Android字节码——详细讲解 附带Demo 其实这两篇文章我只是大致理解了,并没有运行。

1.2K20

造轮子系列 —— 方法

今天推荐一个群友开源的框架 —— Mamba ,想学习 Gradle Plugin 和 ASM 的朋友们可以关注一波。...,则对方法进行效果如下: System.out.println("========start========="); TimeUtil.setsStartTime("newFunc", System.nanoTime...4、Mamba Mamba 的实现类似于 Matrix,但的内容不是 methodId,而是当前的类、方法名和方法参数,效果如下: public void test() {...性能 大家可能会比较关心后的性能问题,我这里列一下测试用例和结果: 1、方法,多次测试耗时为 0 毫秒 2、方法参数,多次测试,耗时大约在 2 毫秒 注意 方法的参数收集目前只支持最多...时还需要为 Mamba 实现类配置 exclude,避免导致方法循环调用 总结 总的来说,各个方案实现都差不多,略微的差异在于业务的不同实现。

66420

【Android 逆向】函数拦截 ( GOT 表拦截 与 拦截 | 拦截简介 | 拦截涉及的 ARM 和 x86 中的跳转指令 )

文章目录 一、GOT 表拦截与拦截 二、拦截简介 三、拦截涉及的 ARM 和 x86 中的跳转指令 一、GOT 表拦截与拦截 ---- 函数拦截有 2 种方式 : 使用 GOT 表进行函数拦截...: 修改 GOT 表实现函数拦截 ; 拦截 : 该方法就是 在实际被调用的函数中添加跳转代码实现函数拦截 ; 在 【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 |...通过在实际被调用的函数中添加跳转代码实现函数拦截 ) 博客中分析到 , " 使用 GOT 表进行函数拦截 " 方法不能保证 100% 成功 , 拦截 可以实现 100% 拦截成功率 ; " 拦截..." 由于需要 修改代码 , 可能会 被反调试工具发现 , 如果是游戏 , 账号估计就凉了 ; 反调试工具 不可能监控所有的函数 , 一个应用的函数个数都是以万进行计算的 ; 二、拦截简介 ----...三、拦截涉及的 ARM 和 x86 中的跳转指令 ---- 拦截 时 , 在 实际函数 入口处写入的 跳转代码 就是 汇编中的 跳转指令 ; 跳转指令 可以理解为 " 指令 " 或 " 机器码

1K10

原创Paper | TinyInst 的实现原理分析

本文将通过分析 TinyInst 在 Windows 平台上的源码,来理解 TinyInst 的基本运行原理;为后续调试 TinyInst 的衍生工具(如 Jackalope fuzzing 工具)...当执行流进入目标模块后,TinyInst 将收到目标程序抛出的 0xC0000005 的异常,此时 TinyInst 将从执行流的位置按 basic-block(基础块) 解析代码指令,在基础块头部添加代码...全局跳转表」进行分析,接下来将先分析操作。...异常,随后控制权转交给 TinyInst,TinyInst 最终调用 tinyinst.cpp#TinyInst::TryExecuteInstrumented() 开始操作,这里调用栈为: 跟入...9.执行流程示意图 参考资料 通过以上「二进制重写」和「全局跳转表」的相互配合,TinyInst 实现了基本的动态检测功能;下面我们用状态图来总结概括 TinyInst 的实现流程,如下: 在以上

48820

【Android 逆向】函数拦截实例 ( ② 操作 | 保存实际函数入口 6 字节数据 | 在的函数入口写入跳转指令 | 构造拼接函数 )

文章目录 前言 一、函数拦截需要的几个参数 二、前先保存实际函数入口 6 字节数据 三、在的函数入口写入跳转指令 | 构造拼接函数 前言 【Android 逆向】函数拦截实例 ( 函数拦截流程...6 字节数据 ---- 前先 保存函数的入口 6 字节数据 , 因为之后 , 会使用跳转代码 0xE9,0,0,0,0 覆盖函数入口内存 , 被破坏的实际函数 最终还是要执行 , 需要拷贝一下..., 供之后实际函数调用使用 ; unsigned char code[64] = { 0 }; /* 前先保存函数的入口 6 字节数据 , 因为之后 , * 会使用跳转代码 0xE9,0,0,0,0...---- 这里执行了 2 次操作 : 第一次是实际函数跳转 : 函数 , pApi 是实际函数 , pUser 是后跳转到的拦截函数 ; 该情况是在 clock_gettime 函数的入口处插入跳转代码...【Android 逆向】函数拦截 ( 修改内存页属性 | x86 架构拦截 ) 【Android 逆向】函数拦截 ( ARM 架构下的拦截 | 完整代码示例 ) 博客中有详细的说明 , 先修改内存页属性

1K10

Winafl中基于的覆盖率反馈原理

最近winafl增加支持对Intel PT的支持的,但是只支持x64,且覆盖率计算不全,比如条件跳转等,所以它现在还是不如直接用去hook的方式来得准确完整,这里主要想分析也是基于 DynamoRIO...的覆盖率反馈原理。...之前曾有人在《初识 Fuzzing 工具 WinAFL》(https://paper.seebug.org/323/#32)中“3.2.2 模块”一节中简单分析过其原理,但没有找到我想要的答案,...在模块winafl.dll中打开前面创建的命名管道,然后通过管道与fuzzer主进程进行交互: ? 4....当模块winafl.dll监测到程序首次运行至目标函数入口时,pre_fuzz_handler函数会被执行,然后通过管道写入'P'命令,代表开始进入目标函数,afl-fuzz.exe进程收到命令后,

2K20

调研字节码技术,用于系统监控设计和实现

---- 接下来我们开始介绍关于使用字节码非入侵的方式进行系统监控,关于字节码常用的有三个组件,包括:ASM、Javassit、Byte-Buddy,接下来我们分别介绍它们是如何使用的。...一些字节码操作 } 当程序启动加载的时候,每个类的每一个方法都会被监控到。类的名称、方法的名称、方法入参出参的描述等,都可以在这里获取。...监控方法 cn.bugstack.middleware.monitor.probe.MyMonitorTransformer public class MyMonitorTransformer implements...-0000","age":19,"code":"0000","info":"success","name":"虫虫:aaa"} 耗时:46(s) 监控 - End 从测试结果来看与 ASM 做字节码的效果是一样...监控方法 cn.bugstack.middleware.monitor.MonitorMethod public class MonitorMethod { @RuntimeType

1K40

【Android 插件化】“ 式 “ 插件化框架 ( 代理 Activity 组件开发 )

插件化简介 ( 组件化与插件化 ) 【Android 插件化】插件化原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件化】插件化原理 ( 类加载器 ) 【Android 插件化】“ 式...“ 插件化框架 ( 原理与实现思路 ) 【Android 插件化】“ 式 “ 插件化框架 ( 类加载器创建 | 资源加载 ) 【Android 插件化】“ 式 “ 插件化框架 ( 注入上下文的使用...) 【Android 插件化】“ 式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件化】“ 式 “ 插件化框架...---- 文章目录 Android 插件化系列文章目录 一、加载插件包 dex 的类加载器 二、生命周期回调方法 三、代理 Activity 组件 四、博客资源 参考 【Android 插件化】“ 式...“ 插件化框架 ( 原理与实现思路 ) 中给出的实现思路 , 逐步实现 “ 式 “ 插件化框架 ; 在 【Android 插件化】“ 式 “ 插件化框架 ( 类加载器创建 | 资源加载 ) 博客中

61420

【Android 插件化】“ 式 “ 插件化框架 ( 运行应用 | 代码整理 )

插件化简介 ( 组件化与插件化 ) 【Android 插件化】插件化原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件化】插件化原理 ( 类加载器 ) 【Android 插件化】“ 式...“ 插件化框架 ( 原理与实现思路 ) 【Android 插件化】“ 式 “ 插件化框架 ( 类加载器创建 | 资源加载 ) 【Android 插件化】“ 式 “ 插件化框架 ( 注入上下文的使用...) 【Android 插件化】“ 式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件化】“ 式 “ 插件化框架..." 模块 四、" 宿主 " 模块代码 五、" 插件 " 模块代码 六、" 依赖库 " 模块代码 1、插件 Activity 接口 2、插件 Activity 基类 3、代理 Activity ( ...MissingSuperCall") @Override public void onSaveInstanceState(Bundle outState) { } } 3、代理 Activity (

50920
领券