android 反编译、反调试方法总结2

0x06 CM中的那些壳子

加固手法

1.不替换源classes.dex,也没有做任何加密的处理,对classes.dex中的Activity,service, receiver
等的oncreate,onReceive,加密替换,壳首先拿到执行权,在自身so里完成对源dex还原。
2.不替换源classes.dex,也没有做任何加密的处理, 修改原Dex的Class_Data,将
MyContentProvider,Application,Activity,service类的入口函数 onCreate方法标记为native方
法,但是原始字节码仍然未加密保存在dex文件中。
3.对classes.dex整包加密,使用壳加载器内存解密classes.dex,并替换原始成源classes.dex
4.对classes.dex整包加密,并将原dex拆分成两部分,在内存中分两块区域存储。

脱壳手法:

1.对部分整包加密的可以通过运行时memory dump,部分通过拦截dvmDexFileOpenPartial函
数即可获取完整dex。(dex连续)
2.对于修改了dex的Class_data和classes.dex做了拆分的,可以通过找到dex对应的pDvmDex
结构,重建dex(dex不连续或不完整的)

0x07 android平台常用的hook框架

▏cydia substrate。原理:框架注入zygote进程,采用inline hook( 修改目标函数前N字节,跳转到自定义函数入口,备份目标函数前N个字节,跳转回目标函数)
▏Xposed。原理:替换app_process,将需要hook的java函数替换成JNI函数,所有需要HOOK的函数首先由xposedCallHandler处 理,xposedCallHandler负责调用注册的beforeHookMethod和afterHookedMethod
▏adbi。原理:利用ptrace()函数attach到一个进程上,然后在其调用序列中插入一个调用dlopen()函数的步骤,将一个实现预先备好的.so文件加载到要hook的进程中,最终由这个加载的.so文件在初始化化函数中hook指定的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值