为什么要加固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、娜迦

app加固的更多相关文章

  1. #云栖大会# 移动安全专场——APP加固新方向(演讲速记)

    主持人导语: 近些年来,移动APP数量呈现爆炸式的增长,黑产也从原来的PC端转移到了移动端,伴随而来的逆向攻击手段也越来越高明.在解决加固产品容易被脱壳的方案中,代码混淆技术是对抗逆向攻击最有效的方式 ...

  2. APP加固技术历程及未来级别方案:虚机源码保护

    传统App加固技术,前后经历了四代技术变更,保护级别每一代都有所提升,但其固有的安全缺陷和兼容性问题始终未能得到解决.而下一代加固技术-虚机源码保护,适用代码类型更广泛,App保护级别更高,兼容性更强 ...

  3. Android App加固原理与技术历程

    App为什么会被破解入侵 随着黑客技术的普及化平民化,App,这个承载我们移动数字工作和生活的重要工具,不仅是黑客眼中的肥肉,也获得更多网友的关注.百度一下"App破解"就有529 ...

  4. 当前安卓App加固到底该如何做到防篡改?

    安卓dalvik虚拟机要求dex文件在内存中以明文形式存在,那么任何加壳方法到头来到了内存还是明文存在,各种dump方法终究是可以获得它的.App究竟应该如何加固才能防止被篡改?   加固和 dump ...

  5. APP加固反调试(Anti-debugging)技术点汇总

    0x00 时间相关反调试 通过计算某部分代码的执行时间差来判断是否被调试,在Linux内核下可以通过time.gettimeofday,或者直接通过sys call来获取当前时间.另外,还可以通过自定 ...

  6. Android常见App加固厂商脱壳方法的整理

    目录 简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结构 壳史 壳的识别 Apk文件结构 Dex文件结构 壳史 第一代壳 Dex ...

  7. 使用360对app安全进行加固

    在写了第一个app之后,打算上架到各个渠道看看,无意间看到了360的app加固工具 http://jiagu.360.cn/ 自己体验了一把,加固过程很傻瓜化, 加固好了之后,还要对app进行二次签名 ...

  8. ionic ios 友盟多渠道/自动签名/加固之腾讯云。乐固

    之前写了一篇文章主要是介绍使用gradle进行多渠道分发处理的文章--链接:http://www.cnblogs.com/happen-/p/6029387.html 最近在做app上线的处理,发现某 ...

  9. android加固系列—2.加固前先要学会破解,调试内存值修改程序走向

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] 因公司项目需要对app加固,经过本人数月的研究,实现了一套完整的仿第三 ...

随机推荐

  1. 关于ps中的锯齿

    1.1 索引透明颜色与Alpha透明通道   要说索引颜色透明,首先要讲讲什么是索引颜色,百度百科上有对索引颜色的解释,我觉得很关键的一句是“挑选一副图片中最有代表性的若干种颜色(通常不超过256种) ...

  2. Struts2中的ModelDriven机制及其运用

    所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2.actions; public cla ...

  3. Unity -- EventSystem完全掌握

    Event System 组成 系统生成的Event System里面主要有两个Components,分别是Event System和Standalone Input Module. 其中Standa ...

  4. poj1543-Perfect Cubes(暴力)

    水题:求n^3 =  a^3 + b^3 + c^3 ;暴力即可 #include<iostream> using namespace std; int main(){ int n ; c ...

  5. 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决

    Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决:   1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty ...

  6. 【转】logback logback.xml常用配置详解(三) <filter>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  7. MySql存储过程的操作

    [存储过程1] 写一个存储过程 procedure实现两数相加 DELIMITER && CREATE PROCEDURE pr_add(xx INT,yy INT) BEGIN DE ...

  8. 动态加载多国语言 ---- cookie + 浏览器

    一.多国语言缩写列表 因为涉及到浏览器的可接收语言,所以需要知道各个国家的语言缩写. 这个百度一下即可. en 英文 en_US 英文 (美国) ar 阿拉伯文 ar_AE 阿拉伯文 (阿拉伯联合酋长 ...

  9. 如何利用python监控主机存活并邮件、短信通知

    功能: 1.使用定时任务执行脚本,检查主机存活信息2.将主机存活信息写入指定文件3.发现宕机的主机后给用户发邮件提醒备注:因为139邮箱在接受到邮件后会自动给用户发送条短信告知(且此服务免费),所以间 ...

  10. 从一个NOI题目再学习二分查找。

    二分法的基本思路是对一个有序序列(递增递减都可以)查找时,测试一个中间下标处的值,若值比期待值小,则在更大的一侧进行查找(反之亦然),查找时再次二分.这比顺序访问要少很多访问量,效率很高. 设:low ...