c语言反编译工具,反编译软件有哪些
358 www.Sina.com/http://uncle Chen.github.io/2016/09/07/Android反编译技术总结/I. Apk反编译工具及其用法1 .原则
在学习反编译之前,建议你先学习Apk打包的流程,了解打包后的Apk包含哪些文件,以及各种文件是如何生成的。
下面是Android Wiki推荐的两篇好文章:
Android打包流程
Android构建流程分析
Apk技术也有很多技术,主要集中在如何减小体积,如何提高封装速度,这里很少提到。下面是基本的Apk文件结构图。
Apk文件本质上是一个zip包。用解压工具解压后,你会发现里面包含了什么。简单解释一下Apk文件的工作原理。
AndroidManifest.xml:应用程序的全局配置文件assets文件夹:原始资源文件夹和Android项目对应的assets文件夹通常用于存储原始的网页、语音等。这里不解释与res文件夹的区别。请参考上面介绍的两篇文章。Classes.dex:将源代码编译成class,然后转换成jar,压缩成dex文件。Dex是一个可以直接在Android虚拟机上运行的文件。文件夹:被引用的第三方sdk的so文件。META-INF文件夹:Apk签名文件。Res文件夹:包含布局、图像等的资源文件。Resources.arsc:记录资源文件和资源id的映射关系。上面截图中的每个文件都应该包含在最基本的Apk文件中。但是这些把Apk解压成zip的文件是不能直接读取的。最后,它们都是用build-tools打包工具处理的。尝试直接在文本编辑器中打开清单文件。
反编译Apk的目的是将Apk分解成我们可以读取的文件。我们希望通过逆向编译得到AndroidManifest.xml文件、res文件和java代码。
2.2的反编译步骤。应用
)解压apk工具并打开http://www.Sina.com/https://bit bucket.org/ibotpeaches/apk工具/下载中的资源文件(如AndroidManifest和RES)。
分解3358www.Sina.com/apk文件,反编译里面的资源文件,反编译成可以读取的转载自UncleChen’s Blog,作者:UncleChen。如上所述,直接将Apk文件解压成zip得到的xml资源文件,是不能在文本编辑器中直接打开和读取的,因为打包时是由构建工具处理的。
用法:在https://ibotpeaches.github.io/apk,官网的工具/文档/中有介绍,最新版本是2.2.0,运行环境需要jre1.7。
下面是使用apk工具分解apk文件的基本方法。只需在终端中执行以下命令。
注意, jva-jarapktool.jardyourapkfile.apk//apk tool . jar 是刚刚下载的jar的名字,` d 参数是decode//在这个命令之后`-o例如,//Java-jarapktool . jardyourapkfile . apk-odestiandiadir-s//一些主要的参数化方法及其含义:-f如果目标文件夹已经存在,则为现有的。默认情况下,文件输出到以apk文件名命名的文件夹中。保存classes.dex文件。默认情况下,dex文件被解码成smali文件。-r keep -rresources.arsc文件。默认情况下,resources.arsc文件被解码为特定的资源文件。
获取AndroidManifest.xml文件,assets文件夹,res文件夹,smali文件夹等。它可以在文本编辑器中打开。Original文件夹是原始的AndroidManifest.xml文件,res文件夹是逆向编译的所有资源,smali文件夹是逆向编译的代码。请注意,smali文件夹下的结构与我们源代码中的package是相同的,但它已被更改为smali语言。类似于汇编语法,是Android虚拟机使用的注册语言。
现在,您可以在文本编辑器中打开AndroidManifest.xml文件和res下的布局文件。这将显示这个Apk文件的包名、活动组件、程序所需的权限、xml布局、图标和其他信息。其实当我们把Apk上传到APP market的时候,APP market也会用同样的方法来分析我们的Apk。
注1:其实还有一种方法。每次都可以保存。
解包时必须输入命令java -jar apktool.jar xxx,官网也有解释,就是把这个命令包装成一个shell脚本。方法见https://ibotpeaches.github.io/Apktool/install/。
2:如果编译时发现终端出现了错误brut.android.undefined对象,说明你的apktool.jar版本太低,需要下载新版本的工具。
注3:如果想自己实现一个解析Apk文件并提取版本和权限信息的java服务,可以参考apktool.jar中的Apkdecoder,调用Decode方法实现。下图中可以看到Apktool.jar有解析apk文件的实现。
(2) dex2jar反编译dex文件,获得java源代码。
在最后一步中,我们得到了反编译的资源文件,我们还希望看到这一步中的java源代码。这里使用的工具是dex2jar。
下载地址:https://sourceforge.net/projects/dex2jar/
功能:将dex格式的文件转换成jar文件。Dex文件是Android虚拟机上的可执行文件。众所周知,jar文件实际上是java类文件。官网里有详细的介绍。
用法:打开下载的dex2jar-2.0文件夹,其中包含shell和bat脚本。进入终端,您可以在命令行上使用它。
D2j-dex2jar classes.dex或sh dex 2 jar . sh classes.dex//获取classes.dex文件。如前所述,只要把Apk解压成zip,里面就会有一个dex文件。//用apktool反编译,用`-s 参数运行后,可以看到classes.dex变成了classes-dex2jar.jar
1:第一次下载后,在mac中运行可能会提示需要管理员权限。在这里,我可以在给它们chmod 777后运行这些sh脚本。
2:当我读完这一节的时候,我发现有一个更好的工具enjarify可以把dex转换成jar。https://github.com/google/enjarify是Google用来反编译dex文件的官方note2源代码工具。使用的方法和dex2jar类似,也是简单的命令行操作。在这个工具的首页也提到,dex2jar已经是一个比较老的工具了,在遇到困惑等复杂情况时可能无法正常工作。所以这里推荐你使用工具enjarify。
(3) jd-gui视图java源代码
下载地址:http://jd.benow.ca/,官方网站。选择您需要的版本。
功能:这个工具不用多说,每个写java的人都知道。有时,我们开发一个jar包给其他人使用,并使用它来检查是否所有的类都被正确地输入到jar中。之前我介绍的gradle定制打包jar的博客里也有提到。
用法:下载后双击运行这个工具,将上一步得到的classes-dex2jar.jar直接拖拽到jd-gui程序的界面打开。效果如下图所示。
反编译Apk的步骤摘要
反编译一个Apk,查看它的资源文件和java代码,我们需要用到三个工具。
aptool:https://ibotpeaches.github.io/Apktool/dex2jar:https://github.com/pxb1988/dex2jarjd-gui:http://jd.benow.ca/反编译就是用这三个工具得到AndroidManifest.xml、res、java代码等。但是我们可以看到,如果你想尽可能彻底的反编译一个Apk,并将其剥离干净,这种一步一步的基本操作还是有点麻烦的。另外,强化Apk的情况可能更复杂,需要我们去努力。为了提高效率,我给大家介绍一些我见过的集成工具,尽量一键反编译Apk。
二。自动化工具总结(Apk一键反编译)1。Google提供的工具:android-classyshark下载地址:https://github.com/google/android-classyshark/releases,下载后是一个可执行的jar文件,在win或mac下双击即可运行。
功能:有了接口,一键反编译Apk工具,直接打开Apk文件,就可以看到Apk中所有的文件结构。甚至集成了dex文件查看、java代码查看、方法号分析、导入混淆映射文件等一系列工具。Google这个工具的目的是让我们开发者更清楚的知道我们的Apk中有哪些文件,混乱前后发生了什么变化,方便我们进一步优化我们的Apk打包实现。取以下截图,好帅的工具!
即将发布的Android Studio 2.2集成了一个名为APK分析器的功能。不知道这个功能和这个工具有没有关系。我还没试过2.2版本。感兴趣的朋友可以体验一下预览版。
2.由2实现的工具。Python: AndroidGuard下载地址:https://github.com/androguard/androguard/releases
功能:集成资源、代码和其他文件反编译的工具包。您需要安装Python环境来运行此工具。根据不同的反编译需求,这个工具被编写成了不同的py功能模块,以及静态分析的功能。所以如果你想用Python开发一个解析Apk文件并进行静态扫描分析的服务,可以参考这个工具来实现。
用法:具体用法很多,这里就不展开了。您可以通过工具内置的-h帮助指令来检查每个模块的功能。
uncle chendeimac:androcuard-2.0 uncle Chen $ python androaxml . py-Hu sage:androaxml . py[Options]选项:-h,- help显示此帮助信息并退出-i INPUT,-iNPUT=输入文件名输入(APK或android的二进制xml) -o OUTPUT,-output=输出文件名输出xml-v,API的版本//androaxml.py该模块用于解析AndroidManifest文件,`-I 表示输入apk文件,`-o 表示输出xml文件。3.Mac专用工具:安卓破解工具https://github.com/Jermic/Android-Crack-Tool功能:。这是网上一个叫Jermic的大神开发的,在Mac环境下使用的App。集成了Android开发中常用的一些编译/反编译工具,方便用户进行Apk的逆向分析,并提供查看Apk信息的功能。下面显示的工具截图非常强大。
4.手机上的反编译工具:ApkParser功能:电脑上已经有这么多工具了,手机上也有非常方便的工具。ApkParser是一款安装在手机上的查看APK信息的工具。他可以查看软件AndroidManifest.xml文件、方法数、res资源文件,直接显示在手机上。个人认为这是一个非常实用的工具。作为开发者,手机里肯定有。
5.工具总结。以上工具都是我体验过的,感觉还不错的集成工具。我向你推荐它们。临近本文结尾,发现了另一个福利网站——http://www . androiddevtools . cn/,其中有一章专门总结了Apk反编译的各种工具。相信这么多利器,每个人应该都有100种清理一个App的方法。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。