android so劫持,[原创][原创]根据”so劫持”过360加固详细分析

本文详细介绍了如何通过SO劫持技术绕过360加固保护,涉及思路分析、反调试方法、寻找核心解释函数以及理解虚拟解释函数过程。通过在特定函数处设置断点,修改关键指令,以及分析中间值和映射表,实现了对360加固保护的逆向工程。
摘要由CSDN通过智能技术生成

参考:https://bbs.pediy.com/thread-223699.htm

http://blog.csdn.net/luoshengyang/article/details/8923483

前几日看到大神写的

https://bbs.pediy.com/thread-223699.htm这篇博客感觉受益匪浅,但是其中有一些自己的理解想跟大家一起分享,算不上原创,希望各位大侠不要嘲笑。共同学习。

一:思路分析:

275e1b24f9ed7eb9a6a36ef771dd4230.png

一个经过360加固的APK的运行过程应该为图中左边所示,在以上这种so劫持的思路为:第一步通过hook loadlibrary方法先加载自己的so,即:libhook.so

第二步在libhook.so中再加载libjiagu.so,并执行其中的JNI_Onload方法,完成最后的解释。

这样做有个最大的好处是:就是在libhook.so中通过hook 注册函数dvmUseJNIBridge()得到oncreate函数的地址,更好的进一步分析360的虚拟解释函数。因为360壳比较复杂,前面有一堆的解密等操作,这样做可以直接切入要害。

二、此思路能否过反调试?

1.原作者这种巧妙的运用sleep(9),不以调试模式启动,等在sleep(9)的时候直接附加,这个时候360在JNI_Onload中的反调试已经运行完了,所以不会触发反调试。

2.以下这种是在以调试模式启动的时候过反调试的基本操作:

首先看Dalvik虚拟机JNI方法的注册过程分析,通过老罗的分析博客,(老罗的分析真的很到位,此处盗用老罗的图)可以大致知道运行图如下:

43bd5b8cccc8a40a961b6953a354efbc.png

因此来说在整个so劫持的关于JNI方法注册大致是如下:

738761c82f0d8aa079d84c41d8e5df39.png

从中我们可以看出要想在调试运行过程中在new_dvmUseJNIBridge()函数处下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值