怎么对androidapp实现逆向分析

黄生高 2019-12-21 23:56:00

推荐回答

首先,逆向分析是一门技术,也是一门艺术。其次,安卓逆向同样可细分为应用层APK逆向、安卓设备框架、内核驱动等逆向、基于安卓的硬件产品逆向等。此处假定说的是第一种逆向。应用层的逆向分析根据需求的不同,又可细分成APK流程逆向与功能逆向。流程逆向通常是指简单的对APK运行流程进行分析,此类分析通常可以使用将APK置于沙盒环境中运行捕捉并查看运行结果。这种逆向需求通常不是很多,典型的工种有杀软厂商的病毒分析工程师。功能逆向相比流程逆向则困难得多。但需求比较普遍。实际逆向分析过程中对功能实现的理解,在很大程度上取决于逆向人员相关的软件开发知识。比如,分析Android程序的JAVA代码就需要掌握基本的Android软件开发的知识。分析so库的代码就需要了解C/C++相关的so库开发的知识。除了基本开发相关的能力外,逆向分析人员还需要具备以下知识:ARM/X86/MIPS汇编语言-分析so库时可能需要阅读大量的反汇编代码。常见逆向分析工具的使用-JDGUI/IDAPRO/APKTOOL/JEB/DEX2JAR常用的安卓程序调试与反调试手段-调试器检测与反检测/脱壳/反混淆常用的加密与解密算法-好的逆向分析人员需要有快速识别常见加密解密算法的能力最后,就是多动手,多动手练习是掌握逆向分析技术最好的方法。
齐文泉2019-12-22 00:06:48

提示您:回答为网友贡献,仅供参考。

其他回答

  • 必须掌握的技能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破解:一般就是破壳。各种壳加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。加壳的程序经常想尽办法阻止外部程序或软件对加壳程序的反汇编分析或者动态分析,以达到它不可告人的目的。这种技术也常用来保护软件版权,防止被软件破解。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、深入理解armLinux和Android底层运行机制;8、熟练掌握各种调试工具:Smali、Dedexer、Dexdump、Apktool、Dex2jar、jd-gui。
    辛在柱2019-12-22 00:19:04

相关问答

用的Arcengine10~你看看namespaceGisEditor{//////最短路径分析///publicclassClsPathFinder{privateIGeometricNetworkm_ipGeometricNetwork;privateIMapm_ipMap;privateIPointCollectionm_ipPoints;privateIPointToEIDm_ipPointToEID;privatedoublem_dblPathCost=0;privateIEnumNetEIDm_ipEnumNetEID_Junctions;privateIEnumNetEIDm_ipEnumNetEID_Edges;privateIPolylinem_ipPolyline;#regionPublicFunction//返回和设置当前地图publicIMapSetOrGetMap{set{m_ipMap=value;}get{returnm_ipMap;}}//打开几何数据集的网络工作空间publicvoidOpenFeatureDatasetNetworkIFeatureDatasetFeatureDataset{CloseWorkspace;if!InitializeNetworkAndMapFeatureDatasetConsole.WriteLine"打开network出错";}//输入点的集合publicIPointCollectionStopPoints{set{m_ipPoints=value;}get{returnm_ipPoints;}}//路径成本publicdoublePathCost{get{returnm_dblPathCost;}}//返回路径的几何体publicIPolylinePathPolyLine{IEIDInfoipEIDInfo;IGeometryipGeometry;ifm_ipPolyline!=nullreturnm_ipPolyline;Polylinem_ipPolyline2=newPolyline;m_ipPolyline=IPolylinem_ipPolyline2;IGeometryCollectionipNewGeometryColl=m_ipPolylineasIGeometryCollection;ISpatialReferenceipSpatialReference=m_ipMap.SpatialReference;IEIDHelperipEIDHelper=newEIDHelper;ipEIDHelper.GeometricNetwork=m_ipGeometricNetwork;ipEIDHelper.OutputSpatialReference=ipSpatialReference;ipEIDHelper.ReturnGeometries=true;IEnumEIDInfoipEnumEIDInfo=ipEIDHelper.CreateEnumEIDInfom_ipEnumNetEID_Edges;intcount=ipEnumEIDInfo.Count;ipEnumEIDInfo.Reset;forinti=0;idblHeightdblSearchTol=dblWidth/100;elsedblSearchTol=dblHeight/100;m_ipPointToEID.SnapTolerance=dblSearchTol;returntrue;}//关闭工作空间privatevoidCloseWorkspace{m_ipGeometricNetwork=null;m_ipPoints=null;m_ipPointToEID=null;m_ipEnumNetEID_Junctions=null;m_ipEnumNetEID_Edges=null;m_ipPolyline=null;}#endregion}。
TCPdump抓包命令tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。一、概述顾名思义,tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。引用#tcpdump-vvtcpdump:listeningoneth0,link-typeEN10MBEthernet,capturesize96bytes11:53:21.444591IPtos0x10,ttl64,id19324,offset0,flags#tcpdump-ieth0-nntcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecodelisteningoneth0,link-typeEN10MBEthernet,capturesize96bytes01:33:40.41IP192.168.1.100.22>192.168.1.11.1190:P116:232116ack1win964801:33:40.41IP192.168.1.100.22>192.168.1.11.1190:P232:364132ack1win9648:传送端是192.168.1.100这个IP,而传送的PortNumber为22,那个大于的符号指的是数据包的传输方向。192.168.1.11.1190:接收端的IP是192.168.1.11,且该主机开启port1190来接收。P116:232116:这个数据包带有PUSH的数据传输标志,且传输的数据为整体数据的116~232Byte,所以这个数据包带有116Bytes的数据量。ack1win9648:ACK与Windowsize的相关资料。最简单的说法,就是该数据包是由192.168.1.100传到192.168.1.11,通过的port是由22到1190,且带有116Bytes的数据量,使用的是PUSH的标记,而不是SYN之类的主动联机标志。接下来,在一个网络状态很忙的主机上面,你想要取得某台主机对你联机的数据包数据时,使用tcpdump配合管线命令与正则表达式也可以,不过,毕竟不好捕获。我们可以通过tcpdump的表达式功能,就能够轻易地将所需要的数据独立的取出来。在上面的范例一当中,我们仅针对eth0做监听,所以整个eth0接口上面的数据都会被显示到屏幕上,但这样不好分析,可以简化吗?例如,只取出port21的联机数据包。