A. 什么是android逆向工程师
必须掌握的技能
1、负责安卓程序的加解密和数据传输分析、拆解、逆向等工作;
2 、逆向APK,了解运行过程;
3 、Andorid本地提权获得root权限;
4 、熟练掌握软件逆向静态分析、动态调试、代码跟踪等;
5 、熟悉Android开发,了解打包、反编译、破解流程;
6 、so破解。
目前了解的如下:
1,加解密:这就很多了,一般都是遇到后再折腾解密,而且解密代码和秘钥一般都在代码里面。
2,Andorid本地提权获得root权限,一般真机是用recovery刷机包,但是病毒提权是怎么样的
目前掌握的一种提权的是像输入命令行一样输入su并且用pm提权
还有一种是修改init.rc文件
3,ida动态调式和代码跟踪
4,打包,编译和破解的流程是什么样的?
5,so破解:一般就是破壳。各种壳(360,娜迦等等)
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。加壳的程序经常想尽办法阻止外部程序或软件对加壳程序的反汇编分析或者动态分析,以达到它不可告人的目的。这种技术也常用来保护软件版权,防止被软件破解。
6,了解反破解的技术
目前掌握的技术有:
1,反模拟器
2,反静态代码分析器如:反jeb
应该也是有很多反ida的,也就是加壳。
任职要求
1、具有丰富的Android开发分析经验,熟悉android系统架构,熟悉android安全机制;
2、精通汇编语言、java、C/C++语言,熟悉Smali语言,对逆向工程有浓厚兴趣;
3、熟练掌握ida、gdb逆向分析工具;
4、熟练掌握软件逆向静态分析、动态调试、代码跟踪等;
5、熟悉so和Java层hook;
6、熟悉Android开发,了解打包、反编译、破解流程;
7、深入理解arm Linux和Android底层运行机制;
8、熟练掌握各种调试工具:Smali、Dedexer、Dexmp、Apktool、Dex2jar、jd-gui。
B. 如何利用机器学习进行android恶意软件分析
随着移动互联网技术迅速发展,移动设备安全也日益经受着考验。自2008年10月第一部Android智能手机发布以来,Android系统迅速占领了智能手机领域高地,仅推出两年就占据了全球48%的市场份额。时至今日,根据最新资料显示,在2013年第三季度,Android市场份额已提升至81.3%,是iOS等其他平台所不能企及。与此同时,作为开发者平台,Android也超越iOS成为了应用开发人员的首选。预计到2017年,Android设备将突破10亿大关并产生超过50亿次的应用程序下载,这也意味着越来越多的恶意软件将渗透到各个应用下载平台上,和普通程序一样被手机用户下载、安装和使用。Android平台的开放性以及相关监管规范的缺失使其成为恶意软件的一大温床,然而对Android恶意软件检测和防御的研究依然处于初级阶段。现有方法能够很有效地检测已知恶意软件,然而对于全新恶意软件的检测依然没有有效的方法,因此本文对检测新恶意软件的方法进行了研究,提出了一种基于监督型机器学习检测Android恶意软件的框架AMDetector。本文创新之处在于以下几点:第一,针对现有方法复用性差、灵活性低的问题,提出了一个基于机器学习方法检测Android恶意软件的通用框架,框架优点在于(1)借鉴编译器设计思想,将整体流程细化为相互独立的子模块(特征抽取、特征筛选、分类模型生成、分类模型验证等),实现了各子模块的独立优化和快速组装;(2)利用数据库来存储软件特征,实现了一次抽取,多次使用,方便了统计和分析。第二,基于Android软件代码字节序列、软
C. 关于android反编译apk的问题
关键代码用ndk写,然后加壳
D. 如何系统的学习安卓逆向分析
首先,逆向分析是一门技术,也是一门艺术。
其次,安卓逆向同样可细分为应用层APK逆向、安卓设备框架、内核驱动等逆向、基于安卓的硬件产品逆向等。此处假定楼主说的是第一种逆向。
应用层的逆向分析根据需求的不同,又可细分成APK流程逆向与功能逆向。
流程逆向通常是指简单的对APK运行流程进行分析,此类分析通常可以使用将APK置于沙盒环境中运行捕捉并查看运行结果。这种逆向需求通常不是很多,典型的工种有杀软厂商的病毒分析工程师。
功能逆向相比流程逆向则困难得多。但需求比较普遍。实际逆向分析过程中对功能实现的理解,在很大程度上取决于逆向人员相关的软件开发知识。比如,分析Android程序的JAVA代码就需要掌握基本的Android软件开发的知识。分析so库的代码就需要了解C/C++相关的so库开发的知识。除了基本开发相关的能力外,逆向分析人员还需要具备以下知识:
ARM/X86/MIPS汇编语言-分析so库时可能需要阅读大量的反汇编代码。
常见逆向分析工具的使用-JDGUI/IDA PRO/APKTOOL/JEB/DEX2JAR
常用的安卓程序调试与反调试手段-调试器检测与反检测/脱壳/反混淆
常用的加密与解密算法-好的逆向分析人员需要有快速识别常见加密解密算法的能力
最后,就是多动手,多动手练习是掌握逆向分析技术最好的方法。
E. Android软件安全与逆向分析的介绍
《Android软件安全与逆向分析》是人民邮电出版社出版的一本图书,作者丰生强
F. Android逆向工程师是做什么的
必须掌握的技能
1、负责安卓程序的加解密和数据传输分析、拆解、逆向等工作;
2 、逆向APK,了解运行过程;
3 、Andorid本地提权获得root权限;
4 、熟练掌握软件逆向静态分析、动态调试、代码跟踪等;
5 、熟悉Android开发,了解打包、反编译、破解流程;
6 、so破解。
目前了解的如下:
1,加解密:这就很多了,一般都是遇到后再折腾解密,而且解密代码和秘钥一般都在代码里面。
2,Andorid本地提权获得root权限,一般真机是用recovery刷机包,但是病毒提权是怎么样的
目前掌握的一种提权的是像输入命令行一样输入su并且用pm提权
还有一种是修改init.rc文件
3,ida动态调式和代码跟踪
4,打包,编译和破解的流程是什么样的?
5,so破解:一般就是破壳。各种壳(360,娜迦等等)
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。加壳的程序经常想尽办法阻止外部程序或软件对加壳程序的反汇编分析或者动态分析,以达到它不可告人的目的。这种技术也常用来保护软件版权,防止被软件破解。
6,了解反破解的技术
目前掌握的技术有:
1,反模拟器
2,反静态代码分析器如:反jeb
应该也是有很多反ida的,也就是加壳。
任职要求
1、具有丰富的Android开发分析经验,熟悉android系统架构,熟悉android安全机制;
2、精通汇编语言、Java、C/C++语言,熟悉Smali语言,对逆向工程有浓厚兴趣;
3、熟练掌握ida、gdb逆向分析工具;
4、熟练掌握软件逆向静态分析、动态调试、代码跟踪等;
5、熟悉so和Java层hook;
6、熟悉Android开发,了解打包、反编译、破解流程;
7、深入理解arm Linux和Android底层运行机制;
8、熟练掌握各种调试工具:Smali、Dedexer、Dexmp、Apktool、Dex2jar、jd-gui。
G. Android软件安全与逆向分析的Android术语
逆向分析是一种逆向工程技术,是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理 。Android 软件安全与逆向分析是针对Android 软件的逆向分析,对原有APK文件进行反向研究,包括对语法,代码等进行分析,破解原有APK的源代码,资源文件比如图片,音频等等行为。
1.APK一旦被破解,反编译之后的源码就被破解者获取,开发者的劳动成果就被窃取,危害了开发者的利益。
2.反编译的APK如果被进行二次打包,那么APP就成为盗版产品,盗版产品侵害开发者的版权
3.反编译的产品有可能被破解者进行二次打包,注入恶意代码,窃取用户隐私,恶意扣除用户手机流量和资费,获取用户数据等等,这些行为严重伤害用户的利益。
4.盗版产品不受保护,用户得不到合理的售后支持和服务。
在这种情况下就需要加强对安卓APK DEX文件进行保护的技术,防止反编译。dex文件其实就是Android系统中可以在Dalvik虚拟机上直接运行的文件格式。Java源码通过ADT编译成Smali语言这是一个优化的过程,相对于.class文件它体积小、运行效率高、被编译后可读性低;Smali再到class. DEX本身就是一个加壳保护的过程。 DEX文件如果未做好保护,黑客通过反编译可让源码完全暴露,可利用阅读源码来找到App的设计流程,通过对程序流程的了解将很容易对程序进行盗版、恶意篡改、恶意代码注入等危险行为 。
1.隔离Jave程序。这种是最根本的保护,将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类进行加密,开发人员可以将关键的JavaClass放在服务器端,用户通过服务器接口获取服务而不是直接通过java文件。破解者就无法获取class文件了。目前有很多通过接口提供服务的标准和协议,比如HTTP,webservice,RPC等等。但是呢,这种方式并不是适合所有的APP,比如单机运行的程序的无法隔离Java程序。
2.对class文件进行加密保护。开发者可以将一些关键的class文件进行加密,比如对注册码,序列号管理相关的类进行加密来防止反编译。在使用这些被加密的类之前,程序需要首先对这些类进行解密,然后才能将这些类加载在JVM中。要解密这些类,必须要通过一些硬件或是软件才能完成。
3.转换成本地代码
这是一种防止反编译的比较有效的方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,或者可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。不过对于一些关键的模块,有时这种方案往往是必要的。为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。如果签名检查通过,则调用相关JNI方法.
4.代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。下面我们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术 。
5.第三方工具加密
上面四种方式可能要耗费开发者很大一部分精力和时间,如果想要方便的话,可以寻求第三方的加密工具。目前市场上有一些工具是可以帮助APK加密的,比较知名的是爱加密的加密平台。相对于上面四种方式,这种第三方的加密工具要更全面和专业,可以有效的保护dex文件,so库文件,xml主配文件以及其他资源文件不被反编译和恶意篡改。
爱加密专家提醒,这些方式并不是独立运用的,有时候可以混合使用,根据自己的情况来定,比如说高级混淆之后还是可以使用第三方的爱加密工具进行高级保护,多一重安全。
H. 什么是android 逆向分析
首先,逆向分析是一门技术,也是一门艺术。
其次,安卓逆向同样可细分为应用层APK逆向、安卓设备框架、内核驱动等逆向、基于安卓的硬件产品逆向等。此处假定楼主说的是第一种逆向。
应用层的逆向分析根据需求的不同,又可细分成APK流程逆向与功能逆向。
流程逆向通常是指简单的对APK运行流程进行分析,此类分析通常可以使用将APK置于沙盒环境中运行捕捉并查看运行结果。这种逆向需求通常不是很多,典型的工种有杀软厂商的病毒分析工程师。
功能逆向相比流程逆向则困难得多。但需求比较普遍。实际逆向分析过程中对功能实现的理解,在很大程度上取决于逆向人员相关的软件开发知识。比如,分析Android程序的JAVA代码就需要掌握基本的Android软件开发的知识。分析so库的代码就需要了解C/C++相关的so库开发的知识。除了基本开发相关的能力外,逆向分析人员还需要具备以下知识:
ARM/X86/MIPS汇编语言-分析so库时可能需要阅读大量的反汇编代码。
I. Android逆向书籍推荐有哪些
如下:
1、丰生强《Android软件安全权威指南》,2019年3月出版。
2、姜维《Android应用安全防护和逆向分析》,2018年1月出版。
3、丰生强《Android软件安全与逆向分析》,2013年2月出版。
1和3作者都是丰生强(非虫大神),里面有很多相同的内容,但1比3新增了这六年间新出的技术,2中作者说有几章是非虫的支持。
介绍
安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。