在静态反汇编一个SO的过程中,开头得到这样一段汇编代码:
.text:00002770 EXPORT Java_com_happyhour_android_xt_getKey
.text:00002770
.text:00002770 var_2D8 = -0x2D8
.text:00002770 var_2D4 = -0x2D4
.text:00002770 var_2D0 = -0x2D0
.text:00002770 var_2CC = -0x2CC
.text:00002770 var_2C8 = -0x2C8
.text:00002770 var_2C4 = -0x2C4
.text:00002770 var_2C0 = -0x2C0
.text:00002770 var_2BC = -0x2BC
.text:00002770 var_2B8 = -0x2B8
.text:00002770 var_2B4 = -0x2B4
.text:00002770 var_2B0 = -0x2B0
.text:00002770 var_2AC = -0x2AC
.text:00002770 var_2A4 = -0x2A4
.text:00002770 var_294 = -0x294
.text:00002770 var_274 = -0x274
.text:00002770 dest = -0x21C
.text:00002770 var_218 = -0x218
.text:00002770 s = -0x214
.text:00002770 var_1C = -0x1C
.text:00002770
.text:00002770 PUSH {R4-R7,LR}
.text:00002772 MOVS R6, R3
.text:00002774 LDR R3, =(__stack_chk_guard_ptr - 0x277E)
.text:00002776 LDR R4, =0xFFFFFD3C
.text:00002778 MOVS R5, R0
.text:0000277A ADD R3, PC ; __stack_chk_guard_ptr
.text:0000277C LDR R3, [R3] ; __stack_chk_guard
有几个疑惑的地方是:
1、__stack_chk_guard_ptr 这是什么东西?跟进去之后,发现这个地址放的是这样写的
00006f74 dd 0x00000000;
如果 这个真的是 0的话,那下面的语句就解释不清楚了,把地址为0的内容放入堆栈中。
.text:0000277E ADD SP, R4
.text:00002780 LDR R1, [R3]
.text:00002782 STR R3, [SP,#0x2D8+var_2AC]
.text:00002784 STR R1, [SP,#0x2D8+var_1C]
.text:00002786 CMP R6, #0
.text:00002788 BNE loc_278C
.text:0000278A B loc_2A64
对了。java jni 传递两个参数给一个是context 一个是hashmap
求各位帮忙看看,
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!