我知道这可以反编译和重新编译 apk。而且我看到了这个帖子:之前将代码注入APK ,但我想要的不是反编译或逆向工程。
就我而言,我只想制作一些使用与游戏手柄兼容的触摸事件的游戏。我见过一些公司做这样的事情并让安卓游戏与他们的游戏手柄兼容。不幸的是,我没有找到将一些代码注入现有 apk 的解决方案。
所以我的问题是:
有没有办法对 apk 进行一些更改(更改游戏应用程序中的触摸和按键事件)并在其中添加一些代码而不影响真正的源代码?
对于像这样简单的事情,您只需要 baksmali/smali。只需将一个调用插入到您的自定义类的程序集中,您就可以用 Java 编写其余部分。
反编译/重新编译很少起作用,无论如何对于这种情况来说都是多余的。使用 smali 甚至适用于混淆的应用程序,尽管一些应用程序会自行计算完整性检查,并且如果修改将拒绝运行。
为此,首先您将此 apk 反编译成源代码以用于反编译 apk 以下用途
步骤1:
创建一个新文件夹并复制要解码的 .apk 文件。
现在将此.apk 文件的扩展名重命名为.zip(例如,从filename.apk 重命名为filename.zip)并保存。现在您可以访问 classes.dex 文件等。在这个阶段您可以看到 drawables 但看不到 xml 和 java 文件,所以继续。
第2步:
现在将这个 .zip 文件解压到同一个文件夹(或 NEW FOLDER)中。
下载 dex2jar ( https://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q= ) 并将其解压到同一个文件夹(或新文件夹)。
将 classes.dex 文件移动到 dex2jar 文件夹中。
现在打开命令提示符并将目录更改为该文件夹(或 NEW FOLDER)。然后编写 d2j-dex2jar classes.dex 并回车。您现在在同一文件夹中拥有 classes_dex2jar.jar 文件。
下载java反编译器(http://jd.benow.ca/),双击jd-gui,点击打开文件,然后从那个文件夹打开classes.dex.dex2jar文件:现在你得到了类文件。
通过 src 名称保存所有这些类文件(在 jd-gui 中,单击 File -> Save All Sources)。在这个阶段,您获得了 java 源代码,但 .xml 文件仍然无法读取,因此请继续。
第 3 步:
现在打开另一个新文件夹
放入要解码的 .apk 文件
下载最新版本的 apktool ( https://code.google.com/p/android-apktool/downloads/detail?name=apktool1.5.2.tar.bz2&can=2&q= ) 和 apktool 安装窗口 ( https://code .google.com/p/android-apktool/downloads/detail?name=apktool-install-windows-r05-ibot.tar.bz2&can=2&q=)(两者都可以从同一个链接下载)并将它们放在同一个文件夹
下载framework-res.apk,放到同一个文件夹下(不是所有的apk文件都需要这个文件,不过没关系)
打开命令窗口
导航到 APKtool 的根目录并键入以下命令: apktool if framework-res.apk
apktool d myApp.apk(其中 myApp.apk 表示您要解码的文件名)
现在您在该文件夹中获得了一个文件夹,并且可以轻松读取 apk 的 xml 文件。
第4步:
这不是任何步骤,只需将两个文件夹(在本例中为两个新文件夹)的内容复制到单个文件夹
并更新源代码...