Closed noopoo closed 3 years ago
测试环境, nexus 6, lineageos android 9 应用 whatsapp,目标被 hook 的函数 sub_909858B4 为 thumb 被hook的函数跳转时是 thumb 环境
libwhatsapp.so:9096884C 02 21 MOVS R1, #2 libwhatsapp.so:9096884E 2A 46 MOV R2, R5 libwhatsapp.so:90968850 1D F0 30 F8 BL sub_909858B4 ** 下钩子处,明显 thumb 指令 libwhatsapp.so:90968854 04 46 MOV R4, R0
sub_909858B4 是被 hook 的函数,这里插入的 stub 是arm32的
libwhatsapp.so:909858B4 sub_909858B4 ; libwhatsapp.so:909858B4 04 F0 1F E5 LDR PC, =(new_hook_function+1) ** 插入的是 arm32 stub libwhatsapp.so:909858B4 ; End of function sub_909858B4
BL 到 sub_909858B4 时,由于 T 寄存器仍然是 1,导致把 sub_909858B4 的 arm32 当作 thumb 执行,SIGILL 4 非法指令crash
你如果 hook thumb 的函数, 需要手动给地址 +1.
懂了,谢谢指点
测试环境, nexus 6, lineageos android 9 应用 whatsapp,目标被 hook 的函数 sub_909858B4 为 thumb 被hook的函数跳转时是 thumb 环境
sub_909858B4 是被 hook 的函数,这里插入的 stub 是arm32的
BL 到 sub_909858B4 时,由于 T 寄存器仍然是 1,导致把 sub_909858B4 的 arm32 当作 thumb 执行,SIGILL 4 非法指令crash