申 请 I D :Lg108
1、申 请 I D:Lg1082、个人邮箱:2360299583@qq.com
3、原创技术文章:这篇文章是我从自己简书博客里挑出拿来申请的,原文博客地址:https://www.jianshu.com/p/fe2a1c11b251
Android逆向基础
我们Android项目的apk如果没有做任何处理,没有混淆,也没有加固。通过反编译工具反编译出来后就能很清晰的看到你的源代码,可以看到,包名,包结构,类名以及类文件都原封不动的显示出来了。这样的话对于我们的项目而言就没有任何安全性可言了,所以一般我们的项目在发布之前会进行混淆加固处理,那么混淆、加固是什么意思呢?
###混淆
混淆就是将源代码中部分包名、类名、变量名,方法名替换成毫无意义的字母(混淆规则代码里定义要保留的类名和方法名,至于为什么要保留,如下图所示,除此之外的其它类名和方法名工具都会自动帮我们混淆),除此之外混淆还会隐藏掉部分类文件。这样一来反编译出来的代码阅读难度就大大增加了。AndroidStudio中已经集成了用于混淆的已经集成 ProGuard工具,我们只要编写好混淆规则代码后,打包后的release 包就已经是混淆过的包了。
>ProGuard 是怎么做到混淆的?
1、压缩: 移除无效的类、属性、方法等
2、优化: 优化字节码,并删除未使用的结构
3、混淆: 将类名、属性名、方法名混淆为难以读懂的字母,比如a,b,c
!(https://upload-images.jianshu.io/upload_images/4834678-1f84e65be60243a2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
###加固(加壳)
将APK的外层加了一层壳,如果想反编译,必须突破这层壳的保护。加固后的APK,反编译出来,看到的只是外面那层壳的代码,这部分代码很少,而且跟源代码完全不一样,连原本的包名都没有了。加固涉及到的技术手段就很多了,同时也非常的深奥,例如dex 文件加密和字节码变形等。所以小公司如果没有特别的安全需求的话,一般都会选择第三方加固平台如360加固包来进行加固。
###脱壳
就是上面加壳的一个逆向过程,脱壳之后就可以拿到加壳前的源代码了,这样就可以通过阅读源码在源码基础上做一些修改或其它操作,从而实现一些原有APP不能实现的功能。
###反射
反射在逆向中算是很重要的基础了,得到类后很多变量、方法都是可以通过反射得到的,之前自己总结了一篇反射的博文,这里就不在啰嗦了,之前文章链接:(https://www.jianshu.com/p/87a9b58d107b)
###Xposed
- 基础(之前总结的):(https://www.jianshu.com/p/413a739fd355)
- 需要root,除了接口和抽象方法,其它都可以hook。
- 原理:(https://blog.csdn.net/ascii2/article/details/47974217)
###Dexposed
- Dexposed是阿里巴巴新开源的一个非侵入式的AOP(面向切面编程)框架,与Xposed不同的是不需要root,仅可以hook自己的程序代码和应用程序中调用的 Android 框架中的函数(项目通过引包引入的Android框架函数,如import android.widget.Toast类中的函数),不可hook其它应用进程(包含系统应用进程如com.android.systemui.statusbar.policy.Clock系统时间进程)的一些方法。
- Dexposed框架的AOP原理来自Xposed,不同的是,Xposed通过劫持 zygote(须root),而Dexposed通过劫持 java method,将java method改变为native,并且将这个方法的实现链接到一个通用的Native Dispatch方法上。(下图为原理,援引自Qcon大会手淘hotpatch技术介绍ppt),最大的用处自然是hot patch,用这种东西来热替换某个导致崩溃的方法。手淘还有做的一件事,就是用它作性能监控。
!(https://upload-images.jianshu.io/upload_images/4834678-3a8997fc0c5f3978.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 原理:(https://blog.csdn.net/jiabailong/article/details/52369300)
- 仅支持在Dalvik(Android L(5.0)以前)虚拟机上无侵入地实现运行时方法拦截。然而,随着ART(Android 5.0后)取代Dalvik来运行Android时,Dexposed就不支持了,取而代之就出现了下面的epic来填补这个不足。
###epic
- ART上的Dexposed(支持 Android 4.0~9.0)
- (https://github.com/tiann/epic)
- 原理: (http://weishu.me/2017/03/20/dive-into-art-hello-world/)
[我为Dexposed续一秒——论ART上运行时 Method AOP实现](http://weishu.me/2017/11/23/dexposed-on-art/)
###VirtualApp
- (https://github.com/asLody/VirtualApp)
- 类似于虚拟机,在Android中开辟了一个虚拟空间来运行应用。
- 原理:(http://rk700.github.io/2017/03/15/virtualapp-basic/)
(https://blog.csdn.net/ganyao939543405/article/details/76146760)
###VirtualXposed
- 结合上面epic和VirtualApp的免Root的Xposed
- (https://github.com/android-hacker/VirtualXposed)
- 原理:[无需Root也能使用Xposed!](http://weishu.me/2017/12/02/non-root-xposed/)
抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
ps:资料收集是无法申请到的,写原创内容才可以。
页:
[1]