我知道这可以反编译和重新编译apk。我以前看过这个帖子:Injecting code into APK,但我想要的不是反编译或逆向工程。
在我的例子中,我只想做一些游戏,使用触摸事件兼容游戏垫。我见过一些公司也做过类似的事情,让android游戏与他们的游戏平台兼容。不幸的是,我没有找到将一些代码注入到现有apk中的解决方案。
所以我的问题是:
有没有办法对apk (在游戏应用程序中更改触摸和关键事件)进行一些更改,并在不影响实际源代码的情况下添加一些代码?
发布于 2014-11-20 16:34:44
对于像这样简单的东西,你所需要的只是面包屑。只需将一个调用插入到您的自定义类中,就可以用Java编写其余的调用。
反编译/重新编译很少起作用,而且无论如何对这种情况来说都是过分的。即使是在混淆的应用程序中,使用smali也是有效的,尽管有些应用程序计算了自身的完整性检查,并且如果修改了,也会拒绝运行。
发布于 2014-11-20 12:31:06
为了达到这个目的,首先将这个apk解压缩到源代码中,用于反编译apk
步骤1:
创建一个新文件夹并复制要解码的.apk文件。
现在将这个.apk文件的扩展名重命名为.zip (例如,从filename.apk重命名为filename.zip)并保存它。现在您可以访问classes.dex文件等。在这个阶段,您可以看到可绘制的文件,但不能看到xml和java文件,所以继续。
第2步:
现在,在同一个文件夹(或新文件夹)中解压此.zip文件。
下载dex2jar (https://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=)并将其解压缩到同一个文件夹(或新文件夹)。
将classes.dex文件移动到dex2jar文件夹中。
现在打开命令提示符并将目录更改为该文件夹(或新文件夹)。然后编写d2j-dex2jar classes.dex并按enter键。现在,您可以将classes_dex2jar.jar文件放在同一个文件夹中。
下载java反编译器(http://jd.benow.ca/),双击jd,单击打开的文件,然后从该文件夹打开classes.dex.dex2jar文件:现在您得到了类文件。
按src名称保存所有这些类文件(在jd中,单击“->保存所有源”)。在这个阶段,您获得了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= )的最新版本(都可以从同一个链接下载),并将它们放在同一个文件夹中。
下载框架-res.apk并把它放在同一个文件夹中(并不是所有apk文件都需要这个文件,但它并不有害)
打开命令窗口
导航到APKtool的根目录并键入以下命令: apktool Frameworkres.apk
apktool myApp.apk (其中myApp.apk表示要解码的文件名)
现在,您可以在该文件夹中获得一个文件文件夹,并且可以轻松地读取apk的xml文件。
第4步:
这不是任何步骤,只是将两个文件夹(在本例中都是新文件夹)的内容复制到单个文件夹
更新源代码..。
https://stackoverflow.com/questions/27037015
复制相似问题