源地址:https://www.ctvol.com/asreverse/41028.html
.text:00000E58 EXPORT Java_com_example_javandk1_MainActivity_getText
.text:00000E58 Java_com_example_javandk1_MainActivity_getText
.text:00000E58 ; DATA XREF: LOAD:000001C8↑o
.text:00000E58 ; __unwind {
.text:00000E58 STMFD SP!, {R3-R5,LR} ; 入栈
.text:00000E5C MOV R5, R1 ; 没有被静态修饰,所以这里是jobj
.text:00000E60 LDR R3, [R0] ; *env
.text:00000E64 MOV R4, R0 ; r4=r0=env
.text:00000E68 LDR R1, =(aComExampleJava - 0xE78) ; 偏移
.text:00000E6C LDR R3, [R3,#JNINativeInterface.FindClass]
.text:00000E70 ADD R1, PC, R1 ; "com/example/javandk1/MainActivity"
.text:00000E74 BLX R3 ; JNINativeInterface.FindClass(env,main)
.text:00000E78 LDR R12, [R4] ; r4=env
.text:00000E7C LDR R2, =(aActivity - 0xE90)
.text:00000E80 LDR R3, =(aLjavaLangStrin - 0xE94)
.text:00000E84 LDR R12, [R12,#JNINativeInterface.GetFieldID]
.text:00000E88 ADD R2, PC, R2 ; "Activity"
.text:00000E8C ADD R3, PC, R3 ; "Ljava/lang/String;"
.text:00000E90 MOV R1, R0 ; r1=r0=findclass返回值
.text:00000E94 MOV R0, R4 ; r0=r4=env
.text:00000E98 BLX R12 ; getfieldid(env,findclass,activit,string)
.text:00000E9C LDR R3, [R4] ; r3=*env
.text:00000EA0 MOV R1, R5 ; jobj
.text:00000EA4 LDR R3, [R3,#JNINativeInterface.GetObjectField]
.text:00000EA8 MOV R2, R0 ; r2=r0=getfieldid返回值
.text:00000EAC MOV R0, R4 ; r0=r4=env
.text:00000EB0 BLX R3 ; GetObjectField(env,jobj,getfieldid)
.text:00000EB4 LDR R3, [R4] ; r3=*env
.text:00000EB8 MOV R2, #0 ; r2=0
.text:00000EBC LDR R3, [R3,#JNINativeInterface.GetStringUTFChars]
.text:00000EC0 MOV R1, R0 ; r1=r0=GetObjectField返回值
.text:00000EC4 MOV R0, R4 ; r0=r4=env
.text:00000EC8 BLX R3 ; GetStringUTFChars(env,getobjevtfield,0)
.text:00000ECC LDR R3, [R4] ; r3=*env
.text:00000ED0 LDR R3, [R3,#JNINativeInterface.NewStringUTF]
.text:00000ED4 MOV R1, R0 ; r1=r0=GetStringUTFChars返回值
.text:00000ED8 MOV R0, R4 ; r0=r4=env
.text:00000EDC BLX R3 ; NewStringUTF(env,utfchars)
.text:00000EE0 LDMFD SP!, {R3-R5,PC}
.text:00000EE0 ; End of function Java_com_example_javandk1_MainActivity_getText
在安卓逆向的学习中,我们会经常遇到这样的分析,要知道各个寄存器中存储的什么东西,还有关键字的各种意思,当然,这边关键字不需要死记硬背,只要多看代码,不知道就看下笔记,自然就会记住。