您的位置:首页 > 移动开发 > Android开发

Android平台的防破解及逆向工程心得

2016-08-31 23:57 363 查看
Android平台的防破解及逆向工程心得
作者:雨水,日期:2016-08-31 
CSDN博客: http://blog.csdn.net/gobitan/
摘要:Android防破解与逆向工程是一个东西的两个方面,开发者想尽可能的隐藏代码细节,而逆向工程想尽可能挖掘apk的内部。本文介绍了最近接触到的一些防破解以及破解方法。

一种通过runtime绑定的防破解方法
第一级别的防破解方法:这是最普通的防破解办法。就是对Java代码做混淆处理,目前经过混淆的代码基本上还是能被还原80-90%。最常见的工具包括apktool,dex2jar以及Onekey-Decompile-Apk等等。尤其是一键反编译这个工具很好用。
第二级别的防破解方法:把重要的,想隐藏的代码用C来写,放在so文件中,增加破解的难度。这个在破解的难度上确实增加了,要去破解so文件,难度确实增加不少。但有个缺点就是so文件对外的接口暴露无遗。包括输入和输出参数等清清楚楚,而且很容易通过挂钩子等方法来掌握so文件提供的方法。
第三级别的防破解方法:通过runtime运行时绑定接口,将接口和实现都放到so文件中,只有调用的地方可以看到调用接口。不清楚的就会奇怪为什么跟到一个调用接口发现跟丢了,而该方法又不带有native。这个是通过JNI的JNI_OnLoad动态绑定上去的。

常见的破解方法
最常见破解方法
就是上面提到的apktool, dex2jar及Onekey-Decompile-Apk;

通过Xposed挂钩子的方法
Xposed是一个很强大的工具,可以不用修改apk代码就可以观察或者修改apk的运行,类似写一个插件。具体我就不介绍了,详细参见https://github.com/rovo89/XposedBridge/wiki/Development-tutorial

通过IDA工具破解so文件
IDA是一个非常专业的so文件反编译工具,有很强大的插件。具体不详细介绍,网上去搜。

参考资料:
[1] https://github.com/ufologist/onekey-decompile-apk
[2] https://github.com/rovo89/XposedBridge/wiki/Development-tutorial
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息