为什么要加固APP?
答:因为黑客通过反编译APK得到源码后,会在应用中插入代码,获取利益,比如添加广告,盗取用户账号、密码,后台定制活动等。
 
反编译的方法?
反编译是指apk文件通过反编译工具(例如ApkTool,BakSmali,dex2jar等)对其进行反编译,
 
反编译后会失去原版APP的什么属性?
在反编译时会失去原本的程序签名
在反编译后,如果修改代码,会破坏代码的完整性。
 
 
一、破解者如何盗取移动支付用户账号密码–防劫持和校验技术
1.界面劫持:在登陆界面上布置一层透明的UI界面,当用户输入密码时是输入在透明UI界面上,获取用户账户密码。
  反劫持技术:APP自身进行检测自己的Activity是否是在栈顶,通过弹窗提示用户。
2.校验:完整性校验、签名校验。防止二次打包。防止打包党通过反编译后在apk内添加广告。
    2.1完整性校验:运行时计算md5、sha1等。
    2.2签名校验:判断应用签名,是否为正版签名,否则提示或退出。
    由于Java层代码容易被反编译,所以我们要把校验技术放在native层(系统运行库层)
二、破解者如何盗取移动支付用户账号密码–自定义键盘
    Android软键盘采用了一套统一的通信机制,通过重载BaseInputConnection类方法,可以拦截到输入字符,EditText类也有类似的监听拦截方法。
1、自定义键盘一般采用标准的数字键和qwerty键盘布局。
2、更优秀的做法,采用乱序,大大提高了安全等级。
 
 
关于第三方的加固方案
安卓dalvik虚拟机要求dex文件在内存中以明文形式存在,那么任何加壳方法,到头来到了内存还是明文存在,各种dump方法终究是可以获得它的.那么APP究竟应该如何加固才能防止APP被篡改?
 
app被篡改是防止不了的,只要有人肯逆向。目前最正统的做法就是加壳,不要小看加壳,dump出dex对于大多数人来说依然是一件非常困难的事,如果脱不掉就别谈篡改了。壳被脱掉后也是有办法阻碍篡改的,关键就在于反二次打包,可以通过在原生层验证签名来实现。另外有一种办法,处理编译后的二进制AndroidManifest.xml文件,添加无效的参数,使反编译得到错误的清单文件,篡改者用这个错误的清单文件回编译会使app在一个错误的上下文中运行,可检测到。

1、梆梆

2、通付盾

3、360加固保

4、爱加密

5、腾讯

6、娜迦

版权声明:本文为jsonfan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jsonfan/p/5551901.html