反编译a文件|Android 如何对apk文件进行反编译以及重新

Ⅰ Android 如何对apk文件进行反编译以及重新

第一:使用apktool直接反编译apk

第六:把生成的hellodemo.apk安装到手机,可以看到主界面上已经显示的是hello,而不再是你好。说明反编译重新打包成功!

Ⅱ 如何反编译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.xml2014/02/19 15:35 687,024 classes.dex2014/02/19 15:49META-INF2014/02/19 15:49res2014/02/19 15:35 2,200 resources.arsc2)进入到dex2jar目录中,运行情况如下:D:\developer\tools\test_apk\dex2jar-0.0.9.15>dex2jar.bat "..\Apkd(d2j)\classes.dex"this cmd is deprecated, use the d2j-dex2jar if possibledex2jar version: translator-0.0.9.15dex2jar ..\Apkd(d2j)\classes.dex -> ..\Apkd(d2j)\classes_dex2jar.jarDone.在apk所在的目录会出现 classes_dex2jar.jar 文件。3) 用JD-GUI对jar包进行查看,可以查看源文件二.反编译apk1.在下载APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos命令.2012/12/06 11:44 854,016 aapt.exe2014/02/19 17:15 277,372 Apkd.apk//示例用apk文件2012/12/23 23:39 92 apktool.bat2013/02/03 02:37 2,655,843 apktool.jar2.进入到apktool.bat所在的目录,运行:apktool d Apkd.apk decode_dir反编译后,decode_dir目录下的内容如下:2014/02/19 17:16 716 AndroidManifest.xml2014/02/19 17:16 237 apktool.yml2014/02/19 17:18build2014/02/19 17:16res2014/02/19 17:16smali此时我可以查看原文件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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView a = (TextView)this.findViewById(R.id.test) ;a.setText("raoliang");}@Overridepublic 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 8invoke-direct {p0}, Landroid/app/Activity;->()Vreturn-void.end method# virtual methods.method protected onCreate(Landroid/os/Bundle;)V.locals 2.parameter "savedInstanceState".prologue.line 12invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V.line 13const/high16 v1, 0x7f03invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->setContentView(I)V.line 14const/high16 v1, 0x7f08invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->findViewById(I)Landroid/view/View;move-result-object v0check-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 16return-void.end method.method public onCreateOptionsMenu(Landroid/view/Menu;)Z.locals 2.parameter "menu".prologue.line 21invoke-virtual {p0}, Lali/text/apkd/MainActivity;->getMenuInflater()Landroid/view/MenuInflater;move-result-object v0const/high16 v1, 0x7f07invoke-virtual {v0, v1, p1}, Landroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V.line 22const/4 v0, 0x1return v0.end method通过对比可以看到,常量是没有必变的,可以根据的smali的语法,进行相应的修改五.3、打包、签名和安装修改后的apk修改完了,就可以打包回apk了。执行以下命令:apktool b decode_dir在mygame目录下的dist在会看到打包好的apk。当然,现在一般是无法安装的,因为apk还没有签名。下面就来签名。签名需要keystore文件,我已经有专用的keystore了,如果还没有,请参阅这里进行生成。执行以下命令为重新编译的my_game.apk签名:jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore最后,在安装到手机前,需要把手机中的已有版本先卸载,因为如果签名不同,是不能覆盖安装的,会提示“应用程序未安装”错误。完整的运行情况如下:D:\developer\tools\test_apk\new\decode\dist>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore输入keystore密码:再次输入新密码:您的名字与姓氏是什么?[Unknown]: rao您的组织单位名称是什么?[Unknown]: rao您的组织名称是什么?[Unknown]:您所在的城市或区域名称是什么?[Unknown]:您所在的州或省份名称是什么?[Unknown]:该单位的两字母国家代码是什么[Unknown]:CN=rao, OU=rao, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 正确吗?[否]: y输入的主密码(如果和 keystore 密码相同,按回车):D:\developer\tools\test_apk\new\decode\dist>jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore输入密钥库的口令短语:正在添加: META-INF/MANIFEST.MF正在添加: META-INF/DEMO_KEY.SF正在添加: META-INF/DEMO_KEY.RSA正在签名: res/drawable-hdpi/ic_launcher.png正在签名: res/drawable-mdpi/ic_launcher.png正在签名: res/drawable-xhdpi/ic_launcher.png正在签名: res/drawable-xxhdpi/ic_launcher.png正在签名: res/layout/activity_main.xml正在签名: res/menu/main.xml正在签名: AndroidManifest.xml正在签名: classes.dex正在签名: resources.arscD:\developer\tools\test_apk\new\decode\dist>到此为止,修改后的apk可以正常的安装了,不过,在安装之前,必须要先卸载以前的apk,不能直接替换(因为签名不一样)

Ⅲ 如何使用apktool反编译apk

1.下载apktool所需文件:a、 apktool1.5.2.tar.bz2 b、apktool-install-windows-r05-ibot.tar.bz2 (windows系统)2.解压刚刚下载的文件,并将解压的文件放入C:\Windows目录下3.启动控制台,输入apktool,回车可查看到apktool工具常用指令4.新建一个文件夹,用于存放apk及待解压的文件,这里笔者将文件夹建在D:\apk目录,同时放入用于测试的android app包(test.apk)5.控制台输入:apktool d D:\apk\test.apk D:\apk\test 进行反编译操作中句话中“D:\apk\test.apk”指apk存放位置,“D:\apk\test”指反编译后文件存放的位置 6.反编译成功之后,进入D:\apk\test文件目录可以查看到反编译后的文件

Ⅳ apk反编译和重新打包

操作系统:Mac OS X 软件:apktool 进入官网 https://ibotpeaches.github.io/Apktool/ ,点击官网首页的install( https://ibotpeaches.github.io/Apktool/install/ )进入安装指南,里面有Windows,Linux和Mac的安装方法,不同的操作系统按不同的步骤来就可以了。在终端输入: apktool d xxx.apk ,我在反编译时出现了以下错误: 看提示是无法写入到这个目录 /Users/xxx/Library/apktool/framework (xxx为电脑用户名),那就在 /Users/xxx/Library 下新建apktool文件夹,并在apktool文件夹下再新建个framework文件夹,然后为了保险起见设置新建文件夹到权限,在终端输入: chmod -R 777 /Users/xxx/Library/apktool 接着再重新执行反编译命令就可以成功了,在xxx.apk相同目录下会出现反编译后的文件夹。 在终端输入编译命令: apktool b xxx (xxx为刚才反编译的文件夹),成功后会在xxx文件夹下的dist文件夹下生成打包好后的apk文件 现在打包好后的apk是没有签名的,所以无法安装,现在给apk签名 20000为时间,这个设置长点就好了,-keystore后面是签名文件保存路径。输入命令按回车键会让输入密码等信息,按提示输入,不要忘了密码,签名时要用。 2.接着在终端输入: -keystore后面的为签名文件的路径,-signedjar后面为签名好后apk的存放路径,在这个后面的一个为需要签名的pak的路径,最后的android.keystore为证书的别名,如果不知道别名,可以在终端输入: keytool -list -v -keystore /Users/xxx/Desktop/android.keystore 查看具体信息,里面有别名。 这一步还要注意,签名文件和需要签名的apk要在同一目录下。

Ⅳ 安卓apk文件如何反编译

安卓apk文件反编译:一、反编译xml文件1>首先下载我给你们提供的文件夹apk_fanbianyi,把它放到某个盘的根目录下(为了方便输入dos命令),然后打开apktool文件夹,安装win+r键,然后输入cmd,进入dos命令行,大家别怕,不用晕,很简单的。2>然后在dos命令中首先输入文件夹所在盘符+“:”回车,接着再输入cd+apktool所在目录,切换dos工作空间到apktool文件夹下。3>接着输入apktool.batd【需反编译apk文件路径】{【反编译文件反编译后的路径】},其中最后一部分可以省去,系统会默认把apk文件反编译到apktool目录下,例如输入apktool.batdd:/apk_fanbianyi/ttkp.apk,在apktool文件夹下就会生成一个ttpk的文件夹,所有的xml文件全部反编译成功。二、反编译java文件1>首先解压需要反编译的apk文件,拷贝出里面的classes.dex文件到dex2jar文件夹(为了方便操作,省去dos命令输入路径的麻烦)2>把工作空间切换到dex2jar文件夹下,输入命令cdd:/apk_fanbianyi/dex2jar回车3>输入命令dex2jar.batclasses.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,选择openfile,找到classes_dex2jar.jar文件,可以发现有很多包,选择包下的任意一个java文件,打开不乱码了,是不是很神奇,哈哈,你学会了安卓apk文件反编译

Ⅵ 请问下在iphone开发中.a文件可以反编译吗

你们都说可以,但是反编译后的代码能不能看,看得懂吗?求解答,lz

Ⅶ a 类似的文件是什么,能被反编译吗

.a静态库不能进行反编译,反汇编的可能袭核拦性也极低。 静态库:静态库仅在程序启动时被连接使用,程序运行时将不再需要该静态库。 与静态库相对的是动态库:程序编译时并不会被氏扮连接到目标代码中,而是在程序运行是才被载入,因此在程序运行拍胡时还需要…

Ⅷ 反编译Android APK的具体步骤是怎样的

反编译步骤方法:

一、apk反编译得到程序的源代码、图片、XML配置、语言资源等文件

下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,

打开命令行界面(运行-CMD),定位到apktool文件夹,输入以下命令:apktool.bat d -f test.apk test

通过反编译,可以获知该应用用到了什么第3方的库文件,它的代码是如何编写的等等。

然而,如果该APK进行了混淆处理,那么看到的类文件名称以及里面的方法名称都会以a,b,c….之类的样式命名,所以可以想找到所想得知的界面代码可能会十分费劲,找到了代码可能看起来也会很费劲,可是一个大体的思路会获得,有了这个思路,就可以去尝试了。

Ⅸ 怎样反编译 Android APK

APK文件是用专业软件eclipse编译生成的文件包。在网上可以找到许多软件来对APK的内容进行反编译,例如:可以通过AXMLPrinter2工具和命令:java -jar AXMLPrinter2.jar AndroidManifest.xml 解开在apk中的AndroidManifest.xml。最近,业界有一个功能强大的解包打包工具包apktool,可以在Windows下用来方便快速地对APK文件进行解包和打包,给修改和编辑工作带来许多方便。下面来介绍它的使用。1) APKtool软件包APKtool软件包有2个程序组成:apktool.jar 和 aapt.exe另外提供一个批处理文件:apktool.bat,其内容为:java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9运行apktools.jar需要java环境(1.6.0版本以上)。apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。2) APK文件的解包下面以解开Contacts.apk为例。首先把Contacts.apk Copy到当前工作目录下(例:Test)。在DOS下打入命令apktool d Contacts.apk ABC这里“d”表示要解码。Contacts.apk是要解包的APK文件。ABC是子目录名。所有解包的文件都会放在这个子目录内。3) APK文件的打包在DOS下打入命令apktool b ABC New-Contacts.apk这里“b”表示要打包ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。New-Contacts.apk是打包后产生的新的APK文件。4) Framework框架文件在解开APK文件时,apktool需要框架文件(framework-res.apk)来解码和打包。Apktool已经包含了标准的框架,所以在大多数APK文件的解包时,不需要另外提供框架文件。但是,某些制造商使用了他们自己的框架文件,为了解包,就不得不从手机中把框架文件(framework-res.apk)提取出来,然后安装到计算机。安装命令是:apktool if framework-res.apk 安装后就会得到:~\apktool\framework\1.apk5) 解包、解包和签名批处理在实际使用时,可能对多个APK文件进行处理。方便的做法是写成批处理文件。打包和签名可以一次完成。解包批处理命令:for %%i in (*.apk) do java -jar apktool.jar d %%i _%%i && move _%%i Modifying_Files && %%i Backuped_Raw_Files && @echo File [%%i] unpacking process is completed!打包和签名批处理命令:for /d %%i in (*) do cd.. && java -jar apktool.jar b Modifying_Files\%%i && java -jar signapk.jar testkey.x509.pem testkey.pk8 Modifying_Files\%%i\dist\*.apk %%i && ren %%i New%%i && move New%%i Modified_Signed_Files && @echo %%i Complete repacking and Signing! && cd Modifying_Files


赞 (0)