如何编译android 可执行的二进制文件

如何编译android 可执行的二进制文件,第1张

Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码。之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能。最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反编译到java源码想必就不用我来多说了吧。首先我们需要的工具是dex2jar和jd-gui其中第一个工具dex2jar是用来把classex.dex文件也就是dex二进制码转化为java的标准.class二进制码,然后jd-gui是把标准的.class二进制码再反编译为java源码。首先从apk包里面提取出classes.dex放到dex2jar目录下然后在命令行下执行dex2jar.bat classes.dex这时执行成功后会生成一个classes.dex.dex2jar.jar文件这个文件再用jd-gui打开,如下图几乎跟我自己写的这个程序的源码一样提供这个反编译方法主要用于大家学习与研究,有问题可以与我邮件讨论。希望大家不要用这个方法从事恶意的活动,毕竟,别人辛辛苦苦写程序也不容易,用这个方法可以大致的学习到别人写的程序的逻辑,架构,希望对大家有所帮助。Android 逆向apk程序的心得本文主要介绍如何逆向一个Android的APK应用程序,本文提供的方法仅供研究学习之用。本文需要用到的工具有jdk 这个用于搭建java运行环境AXMLPrinter2.jar 这个用于逆向.xml文件baksmali.jar 这个用于逆向classex.dex文件由于Android的.apk文件实际上就是一个zip文件 可以直接用winrar打开

反编译apk工具使用最广泛的就是apktool,这里先说一下整个流程用到的工具有:

1.apktool,下载后拿到apktool.bat和apktool.jar,然后把这两个工具放到C:\Windows底下。这个工具的作用主要是得到apk的资源文件和配置文件

2.dex2jar 下载这个工具解压后放到任意盘都可以,后面主要用这个根据apk的classes.dev文件生成供jd-gui工具解析的jar。

3.jd-gui上一步提到其作用,和2一样,也是下载后放到任意盘即可,到时候只要运行jd-gui.exe打开上一步生成的jar即可查看源码,下面对这个工具不再赘述

下面详细说一下前面两个工具类的详细用法:

先说apktool的用法:

1.下载后拿到apktool.bat和apktool.jar,然后把这两个工具放到C:\Windows底下

2.cmd打开后默认是你的计算机,默认的不用改,直接输入apktool,如果出现如下图的效果,即表示准备已就绪

接下来,apktool d f:\app-debug.apk f:\app像这样输入,这里的f:\app-debug.apk是你的将要被反编译的apk的绝对路径,后面的f:\app是apk反编译后资源文件将要放入的文件夹,不需要事先新建好,在这里写好就行了,输入完回车,如果成功的话,即可在文件夹中看到资源文件,这里apktool的流程算完了。

接下来说一下第二个工具,dex2jar的使用流程:

1.把你将要反编译的apk的扩展名改成压缩包的扩展名(rar\zip等),然后对其解压,找到classes.dev文件,将之复制后贴到dex2jar底下,效果如如下:

接下来又要写命令了,同样cmd,然后转换到你的dex2jar目录,然后输入dex2jar.bat classes.dev,然后回车即可在dex2jar.目录中看到一个classes_dex2jar.jar。好了,完了,贴图

得到classes_dex2jar.jar了,前面说了jd-gui的作用了,直接打开这个就行了,得到的就是源代码了

注:写这篇文章是为了让那些学习android 热修复的童鞋了解下,当然如果是大牛可以略过。

点击Build -->Rebuild project,点击完成后需要打包成jar 的class文件会在下面所示的目录中显示,指出的就是我们需要打包的class文件,生成的class文件在app/build/intermediates/classes中

先做个例子:这边取个.class文件,例如Test.class,用来生成dex 

.class生成dex 需要用到androidstudio 支持的dx.bat ,我们找到android SDK 目录下的

build-tools文件目录。

打开cmd 运行 命令:

dx --dex --output  需要生成dex的目录和名称   class文件所在的目录

例如:我需要生成dex文件在C盘的一个文件夹目录下,而class 文件在C盘的一个目录中

这时候只要在--dex 后面加上--no-strict 就可以了。

让编译器监测不那么严格。

如下:dx --dex --no-strict --output 

编译通过,成功生成dex文件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11512034.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存