- 博客(19)
- 收藏
- 关注
原创 ART异常处理机制(3) - NullPointerException实现
在本篇介绍 NullPointerException在 ART种的实现。在 ART异常处理1 中,我们已经知道了 ART会注册信号处理函数,优先尝试处理 SIGSEGV信号。ART中总共又 4 种 handler 享有优先处理 SIGSEGV信号的权利。今天我们主要分析下 NullPointerHandler 以及 NullPointerException 的检测以及抛出。
2017-11-22 20:20:29 2855
原创 ART异常处理机制(2) - StackOverflowError 实现
在本篇介绍 StackOverflowError 在 ART种的实现。在 ART异常处理1 中,我们已经知道了 ART会注册信号处理函数,优先尝试处理 SIGSEGV信号。ART中总共又 4 种 handler 享有优先处理 SIGSEGV信号的权利。今天我们主要分析下 StackOverflowHandler以及 StackOverflowError的检测以及抛出。先看下StackOve
2017-11-22 20:01:40 4163
原创 ART异常处理机制(4) - throw & catch & finally实现
本文深入研究了 java exception的 throw,try-catch在ART中的实现。
2017-11-21 18:38:10 2552 2
原创 ART异常处理机制(1) - SIGSEGV信号的拦截和处理
主要讲述 Android ART虚拟机的异常处理,StackOverflowError的检测和抛出原理,NullPointerException的检测和抛出原理等。
2017-11-14 20:51:18 9141 1
转载 Segmentation Fault in Linux 原因与避免(SIGSEGV)
https://www.cnblogs.com/no7dw/archive/2013/02/20/2918372.html
2017-11-17 15:09:32 5557
原创 学习 IDA 使用
1.安装 IDA Pro百科:交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或LinuxWinCE
2017-11-14 19:10:11 4518 1
原创 hook read_chk 导致dex2oat进程 abort
1.问题描述Native Crash 如下:Build fingerprint: 'ddddd:7.0/ddddd/7.3.27:user/release-keys'Revision: '0'ABI: 'arm'pid: 23898, tid: 23898, name: dex2oat >>> /system/bin/dex2oat
2017-11-01 22:20:17 2961
原创 Android profile-guided dex2oat
KeyWord: ART,Dalivk,.class file,dex file, java bytecode, dalvik bytecode, oat file,profile,dex2oat,app-image1. ART vs Dalvik 涉及的各类文件 开始之前,简单介绍下ART和Dalvik。我们知道 java是运行在java虚拟机JVM上,所以JAVA代码可移植性比较强。Andro
2017-11-01 21:17:01 8138 9
原创 Java Class/Object Memory layout
1. Java class memory layoutclass内存布局可以从下面这个函数来分析一个Java类对应的内存布局:function Class::ComputeClassSize()714715716717718719720721722723724
2017-11-01 21:14:45 1349
原创 Android ANR Trace 详解
本文主要总结一下 Signal Catcher 线程在收到 SIGQUIT(3)后,Dump 信息的流程。Android SourceCode: 6.0Keyword:block signal,kRunnable,kSuspended,Checkpoint,traces.txt1.ART中 block 信号信号的block在虚拟机
2017-11-01 21:11:42 23842 1
原创 ART Method Execution
ART Method Execution:1.entry_point_from_quick_compiled_code_ 其作为一个ArtMethod对象的成员, 1.1 一般情况下指向这个函数对应的 quick code的起始地址,而当quick code不存在时,它的值则会代表其他的意义; 1.2 当一个 java 函
2017-11-01 21:08:57 1334
原创 ART Mterp Interpreter 解释 bytecode
Interpreter首先分析 Interpreter 如何解释执行 dalvik byte code,Interpreter 在 ART 7.0有 3种实现:InterpereImplenum InterpreterImplKind { kSwitchImplKind, // Switch-based i
2017-11-01 21:06:25 3492 1
原创 从 Java 调用一个 Native 函数
Java 调用Native函数,实际就是 JNI 调用。我们将关注 Java端如何把参数传递到 Native,Java调用Native函数时,额外的做了哪些事情。在前面分析Native 调用Java 函数时,直接打断点,就能得到调用 backtrace,那是得益于 GDB 对 Native代码的调试支持,可以根据包含 symbols的 so库,自动帮忙我们理清
2017-11-01 21:03:36 5565
原创 从 Native 函数调用 Java 函数
从一个Native调用java方法的实例开始:backtrace(gdb) bt#0 art_quick_invoke_stub () at art/runtime/arch/arm64/quick_entrypoints_arm64.S:667#1 0x0000007f8265ae54 in art::ArtMe
2017-11-01 20:56:14 1683
原创 Reference & ReferenceQueue
分析了Java FinalizerReference的创建,Finalizer的执行,以及GC时 Reference的处理。1.Finalizable ClassClass Testpublic class Test { public void finalize() { close(
2017-11-01 20:20:51 2420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人