❶ 安卓反编译软件哪个好用
亲爱的楼主你好
我之前用的apk反编译不错
通过应用宝下载可以下载到安全的版本
对软件内容进行修改等是非常得力的助手
应用宝上还会有推出游戏的介绍以及使用方法等,备受使用者好评
兼容性好,可以编译出很多游戏软件,功能强大
希望对你有帮助
❷ 如何进行APK反编译
如何进行APK反编译
我们下载到某些apk的时候,可能总想学习下别人是怎么进行程序设计的,或者怎样使用xml文件布局的,这时就想到将apk文件的后缀改为rar并解压,最终得到一些图片资源和很多打开为乱码的文件,可见这种方式不可行,这就需要使用下面的工具对apk进行反编译了。
一、工具准备:apktool、dex2jar、jd-gui
工具包也可以在这里下载。
1、dex2jar可以在这里下载,jd-gui可以在这里下载。
2、apktool,可以到Google官方下载,apktool-1.0.0.tar.bz2(里面有apktool.jar)和apktool-install-windows-2.1_r01-1.zip两个包都要下。解压apktool.jar到 C:\Windows,解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)。
二、使用dex2jar + jd-gui 得到apk的java源码,步骤如下:
1、用.rar打开apk文档,将classes.dex文件解压出来,然后使用工具反编译成.jar文件。
在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称,比如:我的dex2jar.bat在D:\android\apk_decode\dex2jar-0.0.7-SNAPSHOT路径下,classes.dex在D:\Android下,所以你进入到dex2jar.bat路径后,输入dex2jar.bat D:\Android\classes.dex,这样会生成一个jar文件。
2、用jd-gui反编译工具将得到.jar文件反编译成.java文件。
三、使用apktool得到apk的xml文件
1、Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入命令:
apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC
2、 在解压后的文件夹中可以得到apk的xml配置文件。
四、第二步得到的程序源代码和第三步得到的xml文件组合下,就成一个android工程,即可得到完整的apk源码。
❸ 安卓手机上可以实现apk安装包的反编译吗用什么软件
手机上目前不太可能,APKTOOL也只是电脑上的,手机上如果要反编译,必须具备java虚拟机的全部环境才可以,当然,不排除以后有高手能直接提取需要的java类放到手机中,建立一个轻量级的反编译环境
❹ 安卓apk文件如何反编译
安卓apk文件反编译:
一、反编译xml文件
1>
首先下载我给你们提供的文件夹apk_fanbianyi,把它放到某个盘的根目录下(为了方便输入dos命令),然后打开apktool文件夹,安装win+r键,然后输入cmd,进入dos命令行,大家别怕,不用晕,很简单的。
2>
然后在dos命令中首先输入文件夹所在盘符+“:”回车,接着再输入cd+apktool所在目录,切换dos工作空间到apktool文件夹下。
3>
接着输入
apktool.bat
d
【需反编译apk文件路径】
{【反编译文件反编译后的路径】},其中最后一部分可以省去,系统会默认把apk文件反编译到apktool目录下,例如输入
apktool.bat
d
d:/apk_fanbianyi/ttkp.apk,在apktool文件夹下就会生成一个ttpk的文件夹,所有的xml文件全部反编译成功。
二、反编译java文件
1>
首先解压需要反编译的apk文件,拷贝出里面的classes.dex文件到dex2jar文件夹(为了方便操作,省去dos命令输入路径的麻烦)
2>
把工作空间切换到dex2jar文件夹下,输入命令cd
d:/apk_fanbianyi/dex2jar回车
3>
输入命令dex2jar.bat
classes.dex回车,发现dex2jar文件夹下多了一个classes_dex2jar.jar文件,这是反编译成功的java文件
三、xml文件的打开
1>
打开apktool文件夹下的ttkp文件夹,任意找到一个xml文件,选中单击右键,选择notepad++打开(需下载),如果没有此软件,可以选择打开方式,选择记事本打开
四、java文件的打开
1>
dex2jar文件夹下的classes_dex2jar.jar拷贝到apktool文件夹的ttkp文件夹中,不能用notepad++打开,不然会乱码的
2>
启动apk_fanbianyi文件夹下的jd-gui.exe,然后点左上角file,选择open
file,找到classes_dex2jar.jar文件,可以发现有很多包,选择包下的任意一个java文件,打开不乱码了,是不是很神奇,哈哈,你学会了安卓apk文件反编译
❺ 如何反编译android应用并重新打包
反编译android步骤入下:
第一:使用apktool直接反编译apk
第六:把生成的hellodemo.apk安装到手机,可以看到主界面上已经显示的是hello,而不再是你好。说明反编译重新打包成功!
❻ android 怎么进行反编译
下载附件解压在桌面,打开桌面Android lollipop special文件夹里点击Android lollipop special.bat文件输入apktool回车测试apktool可用性 提取ROM里的框架和ui 放在桌面Android lollipop special文件夹里点击Android lollipop special.bat文件输入apktool if framework-res.apk回车加载框架完成 反编译ui打开桌面Android lollipop special文件夹里点击Android lollipop special.bat文件输入apktool d SystemUI.apk回车反编译完成 回编译ui打开桌面Android lollipop special文件夹里点击Android lollipop special.bat文件输入apktool b SystemUI回车回编译完成
❼ 如何进行android 反编译
一.看android的源代码
1)将Apkd.apk 用zip解压后,出现了一个classes.dex文件
2014/02/19 19:42
.
2014/02/19 19:42
..
2014/02/19 15:35 1,656 AndroidManifest.xml
2014/02/19 15:35 687,024 classes.dex
2014/02/19 15:49
META-INF
2014/02/19 15:49
res
2014/02/19 15:35 2,200 resources.arsc
2)进入到dex2jar目录中,运行情况如下:
D:\developer\tools\test_apk\dex2jar-0.0.9.15>dex2jar.bat "..\Apkd(d2j)\classes.d
ex"
this cmd is deprecated, use the d2j-dex2jar if possible
dex2jar version: translator-0.0.9.15
dex2jar ..\Apkd(d2j)\classes.dex -> ..\Apkd(d2j)\classes_dex2jar.jar
Done.
在apk所在的目录会出现 classes_dex2jar.jar 文件。
3) 用JD-GUI对jar包进行查看,可以查看源文件
二.反编译apk
1.在下载APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos命令.
2012/12/06 11:44 854,016 aapt.exe
2014/02/19 17:15 277,372 Apkd.apk//示例用apk文件
2012/12/23 23:39 92 apktool.bat
2013/02/03 02:37 2,655,843 apktool.jar
2.进入到apktool.bat所在的目录,运行:
apktool d Apkd.apk decode_dir
反编译后,decode_dir目录下的内容如下:
2014/02/19 17:16 716 AndroidManifest.xml
2014/02/19 17:16 237 apktool.yml
2014/02/19 17:18
build
2014/02/19 17:16
res
2014/02/19 17:16
smali
此时我可以查看原文件AndroidManifest.xml了,也是查看smali源文件(是用smali语言写的,可以对照java看)。
三.APKTOOL的使用
1).decode
该命令用于进行反编译apk文件,一般用法为
apktool d
代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk
代表了反编译后的文件的存储位置,比如C:\MusicPlayer
如果你给定的已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令
apktool d –f
这样就会强行覆盖已经存在的文件
2).build
该命令用于编译修改好的文件,一般用法为
apktool b
这里的
就是刚才你反编译时输入的
(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。
3).install-framework
该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。具体情况请看常见问题
四.smali与java源码对照,并做出相应的修改
java源代码:
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.*;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView a = (TextView)this.findViewById(R.id.test) ;
a.setText("raoliang");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
对应的smali源代码:
.class public Lali/text/apkd/MainActivity;
.super Landroid/app/Activity;
.source "MainActivity.java"
# direct methods
.method public constructor ()V
.locals 0
.prologue
.line 8
invoke-direct {p0}, Landroid/app/Activity;->()V
return-void
.end method
# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
.locals 2
.parameter "savedInstanceState"
.prologue
.line 12
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
.line 13
const/high16 v1, 0x7f03
invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->setContentView(I)V
.line 14
const/high16 v1, 0x7f08
invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/TextView;
.line 15
.local v0, a:Landroid/widget/TextView;
const-string v1, "raoliang"
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 16
return-void
.end method
.method public onCreateOptionsMenu(Landroid/view/Menu;)Z
.locals 2
.parameter "menu"
.prologue
.line 21
invoke-virtual {p0}, Lali/text/apkd/MainActivity;->getMenuInflater()Landroid/view/MenuInflater;
move-result-object v0
const/high16 v1, 0x7f07
invoke-virtual {v0, v1, p1}, Landroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V
.line 22
const/4 v0, 0x1
return v0
.end method
❽ 如何反编译android应用以及重编译,签名和对齐优化
首先,了解一下为什么需要反编译apk
大部分情况下,是由于想本地化一款优秀的应用,才需要做这事儿;又或者进行少量的smali修改以达到想要的效果(如添加归属地,使3G版Nexus 7支持Wi-Fi热点)。
下面先准备运行环境和工具
建立工作目录,如.\workspace\apktoolbox (下面同样以此路径为例)
必不可少的JDK:Oracle Java下载,安装完成后把<jdk-inst-path>\bin添加到$PATH环境变量中
反编译和重编译工具apktool:Google Code下载,按平台下载(一个apktool-install-<platform>-<ver>-tar.bz2,一个apktool<ver>.tar.bz2,下载完成后解压至.\workspace\apktoolbox\bin
密钥文件,共4组。test/shared/media/platform,从android source中获取,分别对应不同共享用户ID时签名所需(查看应用AndroidManifest.xml第二行android:sharedUserId项 ),放到.\workspace\apktoolbox\bin下
test - 无android:sharedUserId项
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
签名工具signapk.jar,放到.\workspace\apktoolbox\bin下
对齐优化工具zipalign(从android sdk中获取,在tools目录下),放到.\workspace\apktoolbox\bin下
准备工作完成
接下来就要开始工作了(以本地化工作为例)
把待反编译的apk放到.\workspace\apktoolbox\apks下
在命令行模式下进入.\workspace\apktoolbox\bin目录,输入以下命令进行解包(反编译)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目录(英文原版)和values-r<locale>目录(本地化)就是需要的对象。
本地化工作完成后,在命令行中输入以下命令进行重新打包(重新编译)
apktool b ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\dist目录下会生成重新打包后的apk(未签名,未对齐优化)
重新打包完成后,在命令行中输入以下命令进行签名(根据实际情况选用密钥,这里以test密钥为例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk
签名完成后,在命令行中输入以下命令进行对齐优化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk
<apkfile>_zipaligned.apk就是最终需要的apk了。
完成
部分apk需要系统框架资源,没有的话在重新打包时会报错,这种情况下只需要先安装一下对应系统框架即可(从目标ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中输入以下命令进行安装
apktool if ..\apks\framework-res.apk
❾ 安卓系统中如何为程序反编译JAVA适用环境
Android_complier这种反编译工具直接可以把apk包反编译(产生的文件夹里会有classes.dex.dex2jar.jar这个文件,用jd-gui这个工具查看代码即可),如果没有的话用dex2jar工具的命令在命令行里把编译后的文件夹里的classes.dex文件编成classes.dex.dex2jar.jar,注意写正确classes.dex的路径