Linux Assembly

寄存器

用于解决处理器与内存之前的数据存储效率问题存在的。
IA-32平台寄存器核心组有下面几种.

  1. 通用寄存器 8个32位寄存器 用于存储正在访问的数据

Mehr lesen

Java NIO

[TOC]

转载自:

Java NIO 系列教程

NIO入门

Mehr lesen

ART Java Method Hook 浅析

ART Java Method Hook 浅析

最近使用别人的hook技术完成了一个hotfix的框架,之前只对Dalvik的hook有所了解,对art的执行过程不是很熟悉,所以使用GDB跟踪了一下ART启动执行过程。这里整理一下。

Mehr lesen

Method Replace Crash in 4.x

前段时间发现了一个Legend的hook框架,实际使用之后发现并不支持4.x系统,会崩溃.

这个问题需要记录一下,我用hook的方法替代原来的方法后调用hook类的getMethods之类的方法会引起崩溃,崩溃日志如下.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
04-26 15:01:55.258 10961-10961/? E/dalvikvm: Unable to find method Lcom/legend/demo/App;.onCreate (Landroid/app/Application;)V in DEX file!
04-26 15:01:55.258 10961-10961/? E/dalvikvm: VM aborting
04-26 15:01:55.258 10961-10961/? A/libc: Fatal signal 6 (SIGABRT) at 0x00002ad1 (code=-6), thread 10961 (com.legend.demo)
04-26 15:01:55.308 368-368/? I/DEBUG: Build fingerprint: 'htc/htccn_chs_2/htc_a51dtul:4.4.4/KTU84P/484493.10:user/release-keys'
04-26 15:01:55.308 368-368/? I/DEBUG: Revision: '0'
04-26 15:01:55.308 368-368/? I/DEBUG: pid: 10961, tid: 10961, name: com.legend.demo >>> com.legend.demo <<<
04-26 15:01:55.308 368-368/? I/DEBUG: debuggerd: checkTellHTCSettings
04-26 15:01:55.308 368-368/? I/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
04-26 15:01:55.308 1102-1213/? V/HtcNativeCrashUtil: Read id1=-1243796867 id2=-217320719, they are start flags. This is HTC header
04-26 15:01:55.388 368-368/? I/DEBUG: r0 00000000 r1 00002ad1 r2 00000006 r3 00000000
04-26 15:01:55.388 368-368/? I/DEBUG: r4 00000006 r5 00000016 r6 00002ad1 r7 0000010c
04-26 15:01:55.388 368-368/? I/DEBUG: r8 00000013 r9 5c89ca10 sl 57662f54 fp 00000000
04-26 15:01:55.388 368-368/? I/DEBUG: ip 41a882c8 sp be950098 lr 4004cd25 pc 4005bd28 cpsr 000f0010
04-26 15:01:55.388 368-368/? I/DEBUG: d0 74726f6261204d56 d1 6f6874656d20646e
04-26 15:01:55.388 368-368/? I/DEBUG: d2 0000008400000075 d3 5c894de80000006c
04-26 15:01:55.388 368-368/? I/DEBUG: d4 0063006900660069 d5 006f006900740061
04-26 15:01:55.388 368-368/? I/DEBUG: d6 006e0061004d006e d7 0072006500670061
04-26 15:01:55.388 368-368/? I/DEBUG: d8 0000000000000000 d9 0000000000000000
04-26 15:01:55.388 368-368/? I/DEBUG: d10 0000000000000000 d11 0000000000000000
04-26 15:01:55.388 368-368/? I/DEBUG: d12 0000000000000000 d13 0000000000000000
04-26 15:01:55.388 368-368/? I/DEBUG: d14 0000000000000000 d15 0000000000000000
04-26 15:01:55.388 368-368/? I/DEBUG: d16 010000000cffffff d17 08ffffffff000000
04-26 15:01:55.388 368-368/? I/DEBUG: d18 00630069006e0055 d19 004c00650064006f
04-26 15:01:55.388 368-368/? I/DEBUG: d20 0000000100000001 d21 3ff0000000000000
04-26 15:01:55.388 368-368/? I/DEBUG: d22 3efa019fabb79d95 d23 3f2a019f8723aeaa
04-26 15:01:55.388 368-368/? I/DEBUG: d24 3f56c16c16c76a94 d25 3f81111111185da8
04-26 15:01:55.388 368-368/? I/DEBUG: d26 3fa555555555551c d27 3fc55555555554db
04-26 15:01:55.388 368-368/? I/DEBUG: d28 3fe0000000000000 d29 0000000000000001
04-26 15:01:55.388 368-368/? I/DEBUG: d30 fff0000000000000 d31 4000000000000000
04-26 15:01:55.388 368-368/? I/DEBUG: scr 68000010
04-26 15:01:55.388 368-368/? I/DEBUG: backtrace:
04-26 15:01:55.388 368-368/? I/DEBUG: #00 pc 00022d28 /system/lib/libc.so (tgkill+12)
04-26 15:01:55.388 368-368/? I/DEBUG: #01 pc 00013d21 /system/lib/libc.so (pthread_kill+48)
04-26 15:01:55.388 368-368/? I/DEBUG: #02 pc 00013f35 /system/lib/libc.so (raise+10)
04-26 15:01:55.388 368-368/? I/DEBUG: #03 pc 00012ac3 /system/lib/libc.so
04-26 15:01:55.388 368-368/? I/DEBUG: #04 pc 000225d4 /system/lib/libc.so (abort+4)
04-26 15:01:55.388 368-368/? I/DEBUG: #05 pc 0004e623 /system/lib/libdvm.so (dvmAbort+110)
04-26 15:01:55.388 368-368/? I/DEBUG: #06 pc 0007df8b /system/lib/libdvm.so (dvmGetMethodIdx(Method const*)+194)
04-26 15:01:55.388 368-368/? I/DEBUG: #07 pc 0007f93f /system/lib/libdvm.so (dvmCreateReflectMethodObject(Method const*)+226)
04-26 15:01:55.388 368-368/? I/DEBUG: #08 pc 0007fb45 /system/lib/libdvm.so (dvmGetDeclaredMethods(ClassObject*, bool)+292)
04-26 15:01:55.388 368-368/? I/DEBUG: #09 pc 0007601f /system/lib/libdvm.so
04-26 15:01:55.388 368-368/? I/DEBUG: #10 pc 0002a0a0 /system/lib/libdvm.so
04-26 15:01:55.388 368-368/? I/DEBUG: #11 pc 000329a4 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
04-26 15:01:55.388 368-368/? I/DEBUG: #12 pc 0002fec0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+232)
04-26 15:01:55.388 368-368/? I/DEBUG: #13 pc 0006dabd /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
04-26 15:01:55.388 368-368/? I/DEBUG: #14 pc 000777c1 /system/lib/libdvm.so
04-26 15:01:55.388 368-368/? I/DEBUG: #15 pc 0002a0a0 /system/lib/libdvm.so
04-26 15:01:55.388 368-368/? I/DEBUG: #16 pc 000329a4 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
04-26 15:01:55.388 368-368/? I/DEBUG: #17 pc 0002fec0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+232)
04-26 15:01:55.388 368-368/? I/DEBUG: #18 pc 0006d78d /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
04-26 15:01:55.388 368-368/? I/DEBUG: #19 pc 00052def /system/lib/libdvm.so
04-26 15:01:55.388 368-368/? I/DEBUG: #20 pc 0004fbdb /system/lib/libandroid_runtime.so
04-26 15:01:55.388 368-368/? I/DEBUG: #21 pc 00050d9d /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+472)
04-26 15:01:55.388 368-368/? I/DEBUG: #22 pc 000010bb /system/bin/app_process
04-26 15:01:55.388 368-368/? I/DEBUG: #23 pc 0000e53b /system/lib/libc.so (__libc_init+50)
04-26 15:01:55.388 368-368/? I/DEBUG: #24 pc 00000db8 /system/bin/app_process

Mehr lesen

Android Studio+LLDB调试内核Binder

文中所使用的例子:https://github.com/dodola/BinderDebug

Mehr lesen

Android post

收录找到的不错的文档(持续更新中!)

gitbook地址 Gitbook

##最近文章

Mehr lesen

ecmascript6

一. let 和 const

1 let

基本用法

ES6新增let命令,与var用法类似,但所声明的变量只在声明的代码块中使用

1
2
3
4
5
6
7
{
let a=10;
var b=1;
}
a//a is not defined
b//1

Mehr lesen

河与城溪


title: Hello World

1
2
3
/*
*/

Mehr lesen

coderunner

ASM x64

  • 配置
    ASM x64 配置

Mehr lesen

Kotlin

第一次知道kotlin这个语言是在JakeWharton的这个dex-method-list 项目里,本来这个项目用的是java后来大神又用Kotlin实现了一下,前两天1.0正式版发布了,被各种新闻刷了一下后有必要学习一下。

Mehr lesen