addr_ArtMethod_UnRegisterNative onEnter: void com.cwuzao.nativedemo.MainActivity.Func()
addr_ArtMethod_UnRegisterNative onEnter: void com.cwuzao.nativedemo.MainActivity.RegisterFunc()
addr_ArtMethod_UnRegisterNative onEnter: void com.cwuzao.nativedemo.MainActivity.onCreate(android.os.Bundle)
addr_ArtMethod_UnRegisterNative onEnter: java.lang.String com.cwuzao.nativedemo.MainActivity.stringFromJNI()
addr_ArtMethod_UnRegisterNative onEnter: java.lang.String com.cwuzao.nativedemo.MainActivity.stringFromJNI2()
methodName
-
> public native java.lang.String com.cwuzao.nativedemo.MainActivity.stringFromJNI()
Func.getArtMethod
-
>
0
1
2
3
4
5
6
7
8
9
A B C D E F
0123456789ABCDEF
75ae4c56c0
20
25
c8
12
01
01
00
08
00
00
00
00
b1
3b
00
00
%
...........;..
75ae4c56d0
10
02
00
00
00
00
00
00
00
80
22
94
75
00
00
00
..........".u...
75ae4c56e0
0c
2c
75
93
75
00
00
00
70
96
f1 ac
75
00
00
00
.,u.u...p...u...
methodName
-
> public native java.lang.String com.cwuzao.nativedemo.MainActivity.stringFromJNI2()
Func.getArtMethod
-
>
0
1
2
3
4
5
6
7
8
9
A B C D E F
0123456789ABCDEF
75ae4c56f0
20
25
c8
12
01
01
00
08
00
00
00
00
b2
3b
00
00
%
...........;..
75ae4c5700
11
02
00
00
00
00
00
00
00
80
22
94
75
00
00
00
..........".u...
75ae4c5710
00
f5 f0 ac
75
00
00
00
70
96
f1 ac
75
00
00
00
....u...p...u...
/
/
调用一次stringFromJNI2
addr_FindCodeForNativeMethod onEnter: java.lang.String com.cwuzao.nativedemo.MainActivity.stringFromJNI2()
addr_FindSymbol: Java_com_cwuzao_nativedemo_MainActivity_stringFromJNI2
addr_artFindNativeMethod onLeave:
0x7593752d5c
methodName
-
> public native java.lang.String com.cwuzao.nativedemo.MainActivity.stringFromJNI2()
Func.getArtMethod
-
>
0
1
2
3
4
5
6
7
8
9
A B C D E F
0123456789ABCDEF
75ae4c56f0
20
25
c8
12
01
01
00
08
00
00
00
00
b2
3b
00
00
%
...........;..
75ae4c5700
11
02
00
00
00
00
00
00
00
80
22
94
75
00
00
00
..........".u...
75ae4c5710
5c
2d
75
93
75
00
00
00
70
96
f1 ac
75
00
00
00
\
-
u.u...p...u...
/
/
这ArtMethod在
0x20
处发生变化,打印调用前后stringFromJNI2
0x20
的地址所在模块
[AOSP on msm8996::com.cwuzao.nativedemo]
-
> Process.findModuleByAddress(
0x75acf0f500
)
{
"base"
:
"0x75aca2d000"
,
"name"
:
"libart.so"
,
"path"
:
"/system/lib64/libart.so"
,
"size"
:
6041600
}
[AOSP on msm8996::com.cwuzao.nativedemo]
-
> Process.findModuleByAddress(
0x7593752d5c
)
{
"base"
:
"0x7593744000"
,
"name"
:
"libnative-lib.so"
,
"path"
:
"/data/app/com.cwuzao.nativedemo-UgxLVJ25_JE-ydv0Rl_x2A==/lib/arm64/libnative-lib.so"
,
"size"
:
212992
}
[AOSP on msm8996::com.cwuzao.nativedemo]
-
> console.log(hexdump(ptr(
0x75acf0f500
)))
0
1
2
3
4
5
6
7
8
9
A B C D E F
0123456789ABCDEF
75acf0f500
fd
7b
bf a9 fd
03
00
91
e6
1f
bf
6d
e4
17
bf
6d
.{.........m...m
75acf0f510
e2
0f
bf
6d
e0
07
bf
6d
e6
1f
bf a9 e4
17
bf a9 ...m...m........
75acf0f520
e2
0f
bf a9 e0
07
bf a9 d7
01
ff
97
f1
03
00
aa ................
75acf0f530
e0
07
c1 a8 e2
0f
c1 a8 e4
17
c1 a8 e6
1f
c1 a8 ................
75acf0f540
e0
07
c1
6c
e2
0f
c1
6c
e4
17
c1
6c
e6
1f
c1
6c
...l...l...l...l
75acf0f550
fd
7b
c1 a8
51
00
00
b4
20
02
1f
d6 c0
03
5f
d6 .{..Q... ....._.
/
/
0x75acf0f500
这段
hex
可以转成arm汇编就是art_jni_dlsym_lookup_stub
/
/
0x7593752d5c
-
0x7593744000
就是stringFromJNI2的代码位置
addr_FindCodeForNativeMethod onEnter: void com.cwuzao.nativedemo.MainActivity.Func()
addr_FindSymbol: Java_com_cwuzao_nativedemo_MainActivity_Func
addr_FindSymbol: Java_com_cwuzao_nativedemo_MainActivity_Func__
addr_FindSymbol: Java_com_cwuzao_nativedemo_MainActivity_Func
addr_FindSymbol: Java_com_cwuzao_nativedemo_MainActivity_Func__
addr_artFindNativeMethod onLeave:
0x0
/
/
运行到这里程序崩溃了