c语言反编译工具,反编译软件有哪些

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: