【技术实现步骤摘要】
一种实现hook的方法及装置
本专利技术涉及Android安全
,尤其涉及一种实现hook的方法及装置。
技术介绍
目前,关于Android上的应用程序(Application,APP)加固技术已经进入了虚机加固(VirtualMachineProtect,VMP)阶段。在采用VMP进行APP加固工作时,往往需要利用钩子(Hook)技术,将原函数转换为一套由内部加固虚拟机来解释的指令码,即将需要被hook的原函数替换为一个内部加固虚拟机可执行的hook函数。在现有技术中常采用RegisterNatives技术来实现上述Hook,具体做法为:针对Android安装包(AndroidPackage,APK)中每个要Hook的Java函数,首先在APK的Dex文件中将函数方法修改为本地方法,即native方法,然后在HookFunction.c文件中生成一个与Java函数对应的C函数,即生成一个与需要被Hook的Java函数相对应的Hook函数,后续可以通过调用RegisterNatives方法,将生成的C函数注册为被Hook的Java函数,并使用本地开发程序包(NativeDevelopmentKit,NDK)将HookFunction.c文件以及用于加固的C/C++源文件编译成so库,最后将修改后的Dex文件和编译出的共享库(sharedobject,so)库打包为新的APK。需要注意的是,上述方法中在生成C函数即生成Hook函数时,C函数中的参数和返回值一般与原Java函数的参数和返回值相对应。比如,一个参数和返回值均为整型(int型)且函数名为se ...
【技术保护点】
1.一种实现hook的方法,其特征在于,该方法包括:确定需要生成的hook函数的返回值类型;针对每一种返回值类型,生成参数类型为可变参数且具有该返回值类型的hook函数;基于各个返回值类型对应的hook函数,生成so库;并针对每一个需要进行hook的安卓安装包APK,提取该APK中每一个需要被hook的Java函数的返回值类型并保存在该APK中,以便终端在运行该APK时,从所述so库中选择一个与该需要被hook的Java函数的返回值类型相同且未被使用的hook函数,并将选择的hook函数与该需要被hook的Java函数之间建立链接关系。
【技术特征摘要】
1.一种实现hook的方法,其特征在于,该方法包括:确定需要生成的hook函数的返回值类型;针对每一种返回值类型,生成参数类型为可变参数且具有该返回值类型的hook函数;基于各个返回值类型对应的hook函数,生成so库;并针对每一个需要进行hook的安卓安装包APK,提取该APK中每一个需要被hook的Java函数的返回值类型并保存在该APK中,以便终端在运行该APK时,从所述so库中选择一个与该需要被hook的Java函数的返回值类型相同且未被使用的hook函数,并将选择的hook函数与该需要被hook的Java函数之间建立链接关系。2.如权利要求1所述的方法,其特征在于,所述确定需要生成的hook函数的返回值类型,包括:确定Java函数的返回值类型的种类;确定需要生成的hook函数的返回值类型种类为与确定出的Java函数的返回值类型的种类相同。3.如权利要求1所述的方法,其特征在于,所述生成具有该返回值类型且参数类型均为可变参数的hook函数,包括:针对每一种返回值类型,根据预先配置的hook函数的所需总个数以及该返回值类型的hook函数所占比例,生成具有该返回值类型且参数类型为可变参数的hook函数;并,为生成的每一个hook函数分配一个唯一标识,用于标记该hook函数。4.如权利要求1所述的方法,其特征在于,所述方法还包括:针对每一个需要被hook的Java函数,将所述APK的可执行文件中与该Java函数对应的方法设置为本地方法;将所述生成的so库保存在该APK中,并在所述可执行文件中添加用于加载so库的指令。5.一种实现hook的方法,其特征在于,该方法包括:终端设备根据需要进行hook的安卓安装包APK中包含的用于加载so库的指令,加载so库,其中,所述so库中包含有不同返回值类型且参数类型均为可变参数的hook函数;针对所述APK中每一个需要被hook的Java函数,执行以下操作:从所述so库中选择一个与该Java函数的返回值类型相同且未被使用的hook函数;将选择出的hook函数与该需要被hook的Java函数之间建立链接关系。6.如权利要求5所述的方法,其特征在于,所述方法还包括:根据选择出的hook函数的唯一标识,确定该唯一标识与所述需要被hook的Java函数之间的映射关系,并存储所述映射关系;当执行所述选择出的hook函数时,基于存储的所述映射关系以及所述选择出的hook函数的唯一标识,确定与该选择出的hook函数对应的原Java函数。7.一种实现hook的装置,...
【专利技术属性】
技术研发人员:曾英佩,
申请(专利权)人:中移杭州信息技术有限公司,中国移动通信集团公司,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。