apk反编译步骤
Android APK反编译得到Java源代码和资源文件
Android APK反编译得到Java源代码和资源文件2011年3月9日iStar发表评论阅读评论这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。
在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。
一.反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
以下是下载地址:dex2jar:/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI:/files/jdgui.zip具体步骤:1.首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;2.解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。
在命令行下定位到dex2jar.bat所在目录,运行dex2jar.bat classes.dex生成classes.dex.dex2jar.jar3.运行JD-GUI,打开上面生成的jar包,即可看到源代码了。
二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件如果是只是汉化软件,这将特别有用。
首先还是下载工具,这次用到的是apktool,下载地址:/p/android-apktool/,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。
具体步骤:1.将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar;2.在命令行下定位到apktool.bat文件夹,输入以下命令:apktool d C:\***.apk C:\***文件夹命令行解释:apktool d [要反编译的apk文件 ] [输出文件夹],特别注意:你要反编译的文件一定要放在C盘的根目录里;3.将反编译完的文件重新打包成apk,很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可。
Android APK反编译得到Java源代码和资源文件
Android APK反编译得到Java源代码和资源文件一、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件工具下载:地址:/p/android-apktool/downloads/list如下图,途中红圈的两个都要下载。
将上面2个文件解压到同一个文件夹下面,将有3个文件被解压出来,如下图所示打开cmd命令行窗口定位到刚才解压的文件夹下,即apktool.bat所在的文件夹,如下图所示1. 将APK反编译将待反编译的apk文件放到c盘根目录下,特别注意,一定要放到根目录下。
输入反编译命令apktool d c:\xxxxx.apk c:\***文件夹命令行解释:apktool d [要反编译的apk文件] [输出文件夹]如:注意:demo文件夹不能是已存在的文件夹,否则会报错2. 将反编译完的文件重新打包成APK很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可。
二、反编译apk得到Java源代码工具下载:dex2jar:/p/dex2jar/downloads/listJD-GUI:/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zi p&can=2&q=如下图的两个文件:具体步骤:1. 解压上面两个压缩文件。
2. 从apk文件中解压出classes.dex,将它复制到dex2jar.bat所在的文件夹下3. 命令行下定位到dex2jar.bat所在的目录,然后运行dex2jar.bat classes.dex如图:注:classes.dex不一定要复制到这个文件夹下,在其前面加上路径也是一样的,这里只是为了输命令方便。
如上图所示,看到Done表示成功,将得到下图中红圈内所示的jar文件4. 然后双击jd-gui.exe,打开刚才生成的jar文件,即可看到下图如此,便可看到代码了。
附上上文中所有用到的工具:apk2android.rar在此郑重声明:分享此文,不是为了破解别人的软件,完全是一种学习态度,代码要自己手敲出来才会有感情的。
apktool反编译详细使用教程
apktool反编译详细使⽤教程安装反编⼯具地址apktool⼯具包下载地址apktool.rar1.⾸先安装需要JAVA环境,先下载JDK/JRE,已经有JAVA环境的可跳过此步java JDK:java JRE:还得设置JAVA环境变量CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jarJAVA_HOME C:\Program Files\Java\jdk1.6.0_10 解释JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin环境变量配置好了,我们就可以反编译了,(如果有不明⽩的有两种⽅法,1,请教我,2在论坛搜搜怎么设置JAVA环境变量)反编译的使⽤反编译⼯具,⽹上有很多,有APKTOOL,Doapk ,apkmanage..........,你们可以随便下载⼀个,地址我就不提供了,你们⾃⼰搜索⼀下,上百度,上论坛上搜都有的,但apkTOOL⼯具必须包含⼀下⼏个下载完成反编译⼯具后,验证是否安装成功,点击开始菜单,运⾏,输⼊CMD回车按⼀下回车出现,在输⼊APKTOOl,输⼊apktool,要看腻把apkTOOL安装在哪个盘,举例我的,我是安装在D盘APkTOOL⽂件下,先在cmd下输⼊D:回车,在输⼊CD apktool,转⼊apktool⽂件夹下,输⼊apktool 出现如下反应,,说明你安装成功了,可以进⾏APK反编译了,下⾯我已反编译SystemUI.apk为例。
⾸先的知道⼀下⼏条指令的意思1,apktool d SysteUI.apk 12意思是将SystemUI.apk解包到12⽂件下,12⽂件夹不⽤创建,会⾃动⽣成2,apktool b 12打包12⽂件夹(将会⾃动把12⽂件夹⾥的修改过得APK解包后修改完后⾃动打包,⽣成resources.arsc,⽂件,这就是我们反编译的主要⽬的,当然还有其他⽬的,后⾯将会说明怎么apktool需要反编译的⽬的,⽣成的⽂件。
反编译APK文件的三种方法(转)
反编译APK⽂件的三种⽅法(转)因为学习Android编程的需要,有时我们需要对⽹络上发布的应⽤项⽬进⾏学习,可是Android项⽬⼀般是通过APK⽂件进⾏发布的,我们看不到源代码,嘿嘿,办法总会有的,⽽且不⽌⼀个...ps:对于软件开发⼈员来说,保护代码安全也是⽐较重要的因素之⼀,不过⽬前来说Google Android平台选择了Java Dalvik VM的⽅式使其程序很容易破解和被修改,⾸先APK⽂件其实就是⼀个MIME为ZIP的压缩包,我们修改ZIP后缀名⽅式可以看到内部的⽂件结构,类似Sun JavaMe的Jar压缩格式⼀样,不过⽐较去别的是Android上的⼆进制代码被编译成为Dex的字节码,所有的Java⽂件最终会编译进该⽂件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。
所有的类调⽤、涉及到的⽅法都在⾥⾯体现到,⾄于逻辑的执⾏可以通过实时调试的⽅法来查看,当然这需要借助⼀些我们⾃⼰编写的跟踪程序。
Google最然在Android Market上设置了权限保护app-private⽂件夹的安全,但是最终我们使⽤修改定值的系统仍然可以获取到需要的⽂件。
⼀、dexdump⽅法dexdump是emulator⾃带提供的查看dex⽂件的⼯具,可使⽤类似这样的命令将dex⽂件dump到txt⽂件中:D:\Program Files\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexdump.exe -d classes.dex > spk.dump.txt 得到的⽂件内容,描述了类的信息,但实在是不好读啊~~~~⼆、dex2jar + XJad ⽅法该⽅法是使⽤dex2jar.jar包,将classes.dex⽂件解包成jar,在通过XJad(或者其他class反编译⼯具)进⾏java反编译。
如:1、dex2jar.bat d:\play\classes.dex默认的输出路径同classes.dex,⽣成的⽂件名为classes.dex.dex2jar.jar2、使⽤XJad反编译该jar包之后的使⽤⽅法,⼤家都懂的:)该⽅法的好处在于,通过XJad反编译后,⼤家可直接开到java源⽂件,缺点在于只能反编译出开发时的java⽂件,⽽开发时使⽤的lib包不能反编译出来。
AndroidStudio反编译APK获取代码资源
AndroidStudio反编译APK获取代码资源
1.要准备的三个⼯具
1. apktool:获取资源⽂件,提取图⽚⽂件,布局⽂件,还有⼀些XML的资源⽂件
2. dex2jar:将APK反编译成Java源码(将classes.dex转化为jar⽂件)
3. jd-gui:查看2中转换后的jar⽂件,即查看Java⽂件
2.使⽤apktool反编译APK获得图⽚与XML资源:
把下载好的apktool解压后,我们可以看到下述⽂件(忽略那两个csdn,⼀个是反编译的apk,⼀个是反编译后⽂件):
接下来,双击cmd.exe,来到命令⾏,键⼊: apktool.bat d csdn.apk 即可,Enter回车:
然后就可以看到⽣成的csdn⽂件夹,⾥⾯就有我们想要资源
好的,就是XML资源到⼿了是吧!图⽚素材也到⼿了!
3.使⽤dex2jar将classes.dex转换成jar⽂件:
把下载好的dex2jar⽂件夹解压,apk解压后中的classes.dex复制到dex2jar.bat所在的⽬录下:
打开cmd,来到这个⽬录下:键⼊:d2j-dex2jar.bat classes.dex
接着我们可以看到,⽣成了⼀个jar包:
好的,转换完成!
4.使⽤jd-gui查看jar包中的Java代码:
好的,打开jd-gui的⽂件夹
打开后,打开我们3中转换后的jar包,我们可以看见⾥⾯的代码:
csdn的客户端竟然不混淆代码...可能是本着开源的精神吧,给我们学习代码吧!⼀般的话,apk发布都会进⾏混淆,然后进⾏⼀些加密,或者使⽤第三⽅的加密平台,⽤的⽐较多的"爱加密",有兴趣的也⾃⾏百度查看更加详细的介绍!。
Android apk反编译之android APK有效加密方法
Android apk反编译之有效防止破解和反编译加密方法对于Android开发者来说,自己开发的Android APP被破解是个让人头疼的事。
那有什么办法能防止Android apk反编译和破解呢?一般的混淆代码和防二次打包还有效么?我们通过下面的内容来验证一下!首先我们找一个经过混淆代码和防二次打包的Android APK,这样的Android APK包不难找!只要到爱加密APK源代码安全检测平台,检测一下就可以知道做过什么保护。
通过图片我们可以看到这款Android APK做了混淆代码和防二次打包保护,对于其他的Android APK中的DEX、RES、SO库等文件未做任何保护。
下面我就通过对APK源代码的安全分析,看看这Android APK的安全怎么样!首先我先将APK反编译,看看能不能拿到代码!经过简单的反编译我们就可以轻松的拿到APK里面的源代码,下面我们就修改一下里面的东西,看看之前的APK保护是否有效!1、配置用户权限(重要)2、添加必须组件(重要)完成这2个步骤我们的sdk就已经植入成功了,如图:那么我们怎么解决这款APK做的保护呢?不用着急,我们慢慢来!首先我们发现当登录的时候会提示签名信息不一致,导致不能登录!经过分析发现他是给apk做了签名信息认证,这时我们需要找到他获取签名信息的地方,如下图:到这一步就可以绕过这款APK的二次打包防护了,这样我们就可以登录了!登陆后我们可以看到这款Android APK已被植入广告!这里我要简单介绍一下APK的混淆代码、防二次打包的加密技术是怎么回事!混淆代码:Android APP的源码进行混淆后混淆器将代码中的所有变量、函数、类的名称加密为简短的英文字母代号,在APP被破解后增加破解者对代码的阅读难度。
但是混淆的功效只能运作在APP已经被破解后,而且只是增加破解者的难度时间,对其防止破解的作用意义不是很大。
防二次打包:二次打包是指将APK拆包后重新打包,二次打包必将丢失原有的签名。
Unity3D对apk反编译、重编译、重签名
Unity3D对apk反编译、重编译、重签名⼯具Java环境Apktool(这玩意有些坑爹,不是官⽹最新的就好,找到⼀个好⽤的版本号能少⾮常多坑)ApktoolJarsigner反编译var argList = ProcessHelper.CreateArgumentsContainer();argList.Add("java -jar");argList.Add(ApkToolPath);argList.Add("d");argList.Add(pathToBuildProject);argList.Add("-o");argList.Add(GetDecodeApkFolder(pathToBuildProject));var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));var result = p.StandardOutput.ReadToEnd();var error = p.StandardError.ReadToEnd();p.WaitForExit();p.Close();Debug.Log(result);Debug.Log(error);- 反编译之后的图如上(unknown是没有的)- 反编译之后能够做⼀些改动。
通常会改动AndroidMainifest.xml- ⽜逼⼀点的。
能够改动smali,⽐如前⾯提及到的重编译var unsignedApk = GetUnSignedApkPath(pathToBuildProject);FileHelper.DeleteFile(unsignedApk);var argList = ProcessHelper.CreateArgumentsContainer();argList.Add("java -jar");argList.Add(ApkToolPath);argList.Add("b");argList.Add(GetDecodeApkFolder(pathToBuildProject));argList.Add("-o");argList.Add(unsignedApk);var cmd = string.Join(" ", argList.ToArray());var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));var result = p.StandardOutput.ReadToEnd();var error = p.StandardError.ReadToEnd();p.WaitForExit();p.Close();Debug.Log(result);Debug.LogError(error);重签名var unsignedApk = GetUnSignedApkPath(pathToBuildProject);var finalApk = GetFinalApkPath(pathToBuildProject);FileHelper.DeleteFile(finalApk);var argList = ProcessHelper.CreateArgumentsContainer();argList.Add("jarsigner");argList.Add("-keystore 路径");argList.Add("-storepass password");argList.Add("-signedjar");argList.Add(finalApk);argList.Add(unsignedApk);argList.Add("别名");var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));var result = p.StandardOutput.ReadToEnd();var error = p.StandardError.ReadToEnd();p.WaitForExit();p.Close();Debug.Log(result);Debug.LogError(error);⼀个Keystore能够相应多个Key假设Key的password不⼀样,还得另外输⼊Key的password。
JDK1.6安装详解、环境变量设置、APK应用程序的反编译与编译
JDK1.6安装详解、环境变量设置、APK应用程序的反编译与编译JDK1.6安装详解1.下载JAVA JDK SE 6,下为下载地址之一:/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i 586-p-12_sep_2008.exe2. 进入下载的文件夹并双击安装程序开始安装:单击“接受”。
选择程序功能和安装路径,单击“下一步”。
单击“下一步”安装jre。
单击“完成”。
3. 设置环境变量在系统变量中分别设置JAVA_HOME,CLASSPATH,PATH三环境变量。
JAVA_HOME环境变量设置:右击我的电脑——属性——高级——环境变量——系统变量——新建注意事项:(1)变量值根据java安装目录的不同而不同,最好到安装文件中找到相关文件再复制路径。
变量名:JAVA_HOME变量值:D:\Program Files\Java\jdk 1.6.0_10变量名:CLASSPATH变量值:.;D:\Program Files\Java\jdk1.6.0_10\bin;D:\Program Files\Java\jdk1.6.0_10\lib\tools.jar 变量名:Path变量值:D:\Program Files\Java\jdk1.6.0_10\bin;D:\Program Files\Java\jdk1.6.0_10\jre\bin(是在原有的值上添加)(2)classpath变量是以“.;”开始的!单击确定,退出环境变量设置。
4. 测试安装:测试JAVA是否安装成功,编写测试文件为HelloWorld.java。
文件内容为:1.public class HelloWorld{2.public static void main(String[] args){3.System.out.println("Hello world!");4.}5.}运行cmd注意事项:测试时应将HelloWorld.java所在的路径加入path环境变量。
教你如何反编译APK
教你如何反编译APKAPK文件是Android应用程序的包装文件,包含了应用的代码、资源文件和其他相关信息。
反编译APK可以帮助开发人员分析应用的代码结构和功能实现,以及学习其他应用的设计思路和技术实现方法。
下面是一种常用的反编译APK的方法。
步骤1:安装反编译工具步骤2:准备APK文件步骤3:打开终端或命令提示符在你的计算机上打开终端或命令提示符窗口。
如果你使用的是Windows系统,可以按下Win+R组合键,输入“cmd”并按下回车键。
步骤4:进入APK文件所在的目录在终端或命令提示符中输入“cd”命令,然后加上APK文件所在的目录路径,回车进入该目录。
步骤5:执行反编译命令在终端或命令提示符中输入以下命令:apktool d 文件名.apk其中,文件名是你准备反编译的APK文件的文件名。
执行该命令后,apktool将自动解压缩APK文件,并将解压后的文件保存在当前目录。
步骤6:查看反编译结果步骤7:反编译APK的其他方法除了使用apktool之外,你还可以尝试其他的反编译APK的工具。
dex2jar可以将APK文件转换为JAR文件,然后你可以使用Java反编译器对JAR文件进行反编译。
JD-GUI是一个流行的Java反编译器,你可以将JAR文件拖放到JD-GUI的界面中,然后查看反编译后的Java代码。
步骤8:分析和学习通过反编译APK文件,你可以深入了解应用的实现细节、功能实现和资源文件。
你可以借鉴其他应用的设计思路和技术实现方法,提升自己的开发能力。
需要注意的是,在使用反编译工具时,你必须遵守相关法律法规,并尊重其他开发者的知识产权。
只有在合理范围内使用反编译才是合法的,不得用于非法用途。
总结:通过上述步骤,你可以轻松地反编译APK文件。
这个过程可以让你更好地了解应用程序的代码和实现细节,同时也可以为你的开发工作提供参考和借鉴。
但请务必遵守相应法律法规,尊重知识产权。
android apk修改方法(反编译、修改、打包)
1、baksmali:classes.dex反编译为smali格式(smali:smali格式编译打包为classes.dex,但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助)2、dex2jar:classes.dex转为jar包3、jdgui:jar反编译并阅读操作顺序:apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar 处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali 里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名文件,最后重新签名。
注意安装时要先删除原来手机里的版本,因为签名不同。
1、apk用zip解开,得到classes.dex2、用baksmali处理为smali(只是反编译看代码就不需要这一步,修改才用) java -jar baksmali-1.4.1.jar -x classes.dex得到out目录,里面是smali文件3、用dex2jar处理classes.dex为jar包dex2jar.bat classes.dex得到classes.dex.dex2jar.jar4、用jdgui打开classes.dex.dex2jar.jar好了,可以看代码,但还不能直接修改,需要对比着来修改smali文件改好后,用java -jar smali-1.2.6.jar -o classes.dex out得到修改后的classes.dex,用这个文件替换fishing_joy_1.apk中的同名文件但这个apk是不能用的,还没有进行重新签名先用keytool生成keystorekeytool -genkey -keystore mykeystore -alias mykeystore -validity 999 把apk中的META-INF删除,再用jarsigner 签名jarsigner -verbose -keystore mykeystore -signedjar fishing_joy_1_signed.apk fishing_joy_1.apk mykeystore先卸载原来手机中安装的这个游戏,再用fishing_joy_1_signed.apk安装最后工作目录是这个样子。
APK应用程序的解包、修改、编辑、汉化、打包及应用
APK应⽤程序的解包、修改、编辑、汉化、打包及应⽤第⼆部分:三星闭源系统apk⽂件的处理,汉化和签名在这⼀部分,我们要进⼊实战。
⾸先,利⽤⼀个具体的例⼦来阐述apk⼯具包的使⽤,对apk⽂件进⾏解包、汉化、打包和签名。
然后,我们来对付三星闭源系统的apk程序,达到我们修改、汉化和美化的⽬的。
我们假定所有apk⽂件都是单个独⽴⽂件,不含odex⽂件(在官版ROM中,通常每个apk都分成两部分,第⼀部分是apk,第⼆部分是odex。
将它们合并是另⼀个题⽬,这⾥不作叙述)。
1. 配置框架(Framework)环境在处理APK⽂件时,apktool需要框架⽂件(framework-res.apk)来解码和打包。
apktool已经包含了标准的框架,所以在⼤多数APK⽂件的解包时,不需要另外提供框架⽂件。
但是,某些制造商(例如三星)使⽤了他们⾃⼰的框架⽂件,为了解包,就不得不从⼿机中或从ROM中把框架⽂件(framework-res.apk)提取出来,然后安装到计算机。
安装命令是:apktool if framework-res.apk安装后就会得到:~\apktool\framework\1.apk注意:三星系统(例如:I897)有两个框架⽂件:framework-res.apk和twframework-res.apk。
在使⽤apktool之前,要安装这两个框架⽂件。
安装⽅法同上:apktool if framework-res.apkapktool if twframework-res.apk安装后就会得到:~\apktool\framework\1.apk和~\apktool\framework\2.apk。
许多⼈拿来apktool⼯具包⽤,说解不开包,运⾏出错。
原因是没有配置框架环境。
2. akp⽂件的汉化和修改我⾸先来讲对⼀般的(⾮三星)apk应⽤程序进⾏解包、汉化和打包。
为你们⽅便和叙述⽬的,我在上传的apktool和apk manager⼯具包⾥都带了⼀个⼩的apk应⽤程序SilentBoot_EN.apk。
修改和反编译定制ROM合并apk odex
如果是修改CM的apk很简单,修改原始代码使用命令单独编译该apk 就可。
这篇文章主要讲那该死三星闭源系统是如何在有限的环境下最大化修改你的东西。
本人不是什么高手,只是接触android的时间比较长(从G1就开始用起),爱好收集andorid 历史上比较有代表性的机器,时常爱摆动手机,倒腾ROM,因为个人时间问题,一直没制作完整的作品(我比较懒XD),就连自己使用的ROM还停留在CMbeta3中文化版本。
个人关注aosp比较多点,很高兴我编译的中文版能将CM for i9000 推到大家面前,让更多的I9000用户了解到CM,当然从G1时代开始刷CM的兄弟们自然会知道CM的优秀。
CM发展至今,已经不仅仅是手机ROM,他代表了一种精神,开源和共享(国内论坛有多少?),以及无所不能——这是我欣赏和推崇的。
如果将CM放大到无限的时间和个人团体集合,android 会支持理论上一切可以运行它的设备。
一:基本准备!准备工具:Android SDKjava,下载适合您系统的版本。
您需要的是apktool 或者apk manager 4.9(貌似最新版本了)。
推荐用apk manager 4.9,下面主要介绍该工具使用方法。
以上工具Windows和Linux下都有。
三星I9000 FROYO 系统应用软件在 /system/app 同大多数Android系统一样。
但注意三星有着自定义的framework,在 /system/framework/twframework-res.apk。
如果您要修改三星的system app就需要用到他。
首先我们要提取出系统软件。
有两种方法,第一刷完机,获取root权限之后用以下命令:1.windows和linux下面的命令同样:2.adb pull /system/ <your path:>3.//将手机system目录copy到您电脑的某个路径中复制代码或者解压缩三星官方刷机包:挂载factoryfs到某路径:然后拷贝所有文件。
win10最新版apktool反编译
win10最新版apktool反编译改成apktool.jar 和apktool.bat放在同⼀个⽂件夹,并将此⽂件夹加⼊系统变量Path(D:\SoftWare\apktool)apktool.bat:@echo offsetlocalset BASENAME=apktool_chcp 65001 2>nul >nulset java_exe=java.exeif defined JAVA_HOME (set java_exe="%JAVA_HOME%\bin\java.exe")rem Find the highest version .jar available in the same directory as the scriptsetlocal EnableDelayedExpansionpushd "%~dp0"if exist apktool.jar (set BASENAME=apktoolgoto skipversioned)set max=0for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB:skipversionedpopdsetlocal DisableDelayedExpansionrem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repackif "%~1"=="" goto loadif not "%~2"=="" goto loadset ATTR=%~a1if "%ATTR:~0,1%"=="d" (rem Directory, rebuildset fastCommand=b)if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (rem APK file, unpackset fastCommand=d):load%java_exe% -jar nguage=en -Dfile.encoding=UTF8 "%~dp0%BASENAME%%max%.jar" %fastCommand% %*rem Pause when ran non interactivelyfor /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" pauseC:\Users\Administrator>apktool d D:\SoftWare\apktool\xb.apk -o D:\SoftWare\apktool\baz2I: Using Apktool 2.6.0 on xb.apkI: Loading resource table...I: Decoding AndroidManifest.xml with resources...I: Loading resource table from file: C:\Users\Administrator\AppData\Local\apktool\framework\1.apkI: Regular manifest package...I: Decoding file-resources...I: Decoding values */* XMLs...I: Baksmaling classes.dex...I: Copying assets and libs...I: Copying unknown files...I: Copying original files...I: Copying META-INF/services directoryC:\Users\Administrator>https://ibotpeaches.github.io/Apktool/install/https://ibotpeaches.github.io/Apktool/#Apktool 下载、安装和使⽤字数 329阅读 5,800Apktool简介1. ⽤于反编译Android apk,可以将应⽤中的资源提取出来,也可以在修改资源⽂件后重新打包。
安卓apk反编译查看源代码
安卓apk反编译查看源代码
相信很多初学者很像看看大公司比如jd,qq,淘宝手机端的商城是如何开发的,对于java开发的系统来说,大家都知道,反编译是容易的事情,如果换成android的,安装文件变成apk,那么又是什么情况了
带着好奇,我googl e了一下,分享一下:
反编译apk文件,得到其源代码的方法!!
dex2jar和JD-GUI这2个工具配合学习android太靠谱了,所以放上来给大家共享,开源的好处就是好东西大家一起分享。
dex2jar下载地址:http://laichao.googl /fil es/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI下载地址:http://cod e.googl /p/dex2jar/ 请下载最新版的,旧版本有bug
1.首先找到Android软件安装包中的classes.dex
方法是把apk文件改名为.zip,然后解压缩其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件
2.把classes.dex拷贝到dex2jar.bat所在目录。
windows系统下:
在命令行模式下定位到dex2jar.bat所在目录,运行dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar linux、Ubuntu系统下:在终端下定位到dex2jar.sh所在目录,运行
sh dex2jar.sh classes.dex
则可生成classes.dex.dex2jar.jar
3.运行JD-GUI工具(它是绿色无须安装的)
打开上面的jar文件,即可看到源代码
来源:清源教育。
关于ApkTool回编译的一些小说明
关于ApkTool回编译的一些小说明工具/原料∙apktool∙apkdb∙APK+Dex文件反编译及回编译工具本经验,是针对Apktool反编译APK文件后回编译时,出错的一些问题说明。
-------------------------------------------------------------------------2011-1-11更新一回编译说明1、反编译=回编译后分别是smali目录回编译为classes.dex 文件res目录回编译为resources.arsc 文件2、回编译顺序在回编译时,会先检查“源”即resources当你汉化文件,修改出错了(缺少一个符号也不行),那么回编译会自动跳过编译res文件夹,直接回编译smali 。
所以,如果没有对smali(classes.dex)汉化,那么建议大家删掉这个文件夹,这要会大大加快回编译速度。
3、出错问题1在汉化时,往往会不小心删掉一些符号,如"<" ">"符号等等。
<string name="app_name">File Manager</string><string name="app_name">文件管理器/string><string name="app_name"文件管理器</string>这些小小的错误都会导致回编时译检查出错。
所以汉化时,注意对校,然后再回编译。
建议使用一些高级的文本编辑器,支持语法高亮视图的。
4、出错问题2最近发现有些APK文件反编译后,就算不汉化直接回编译,都会出错。
有可能的原因1,反编译后XML文件语法中@符号前面多了"\" (\@ ),用文本编辑工具直接替换【\@】为【@】,应该可以解决。
建议使用最新版本的反编译工具。
反编译Apk得到Java源代码(apk xml源文件)
1、下载apktool,可以去Google的官方下载,地址:/p/android-apktool/得,apktool1.3.2.tar.bz2和apktool-install-windows-2.2_r01-3.tar.bz2两个包都要下。
解压apktool1.3.2.tar.bz2得到apktool.jar放到 C:\Windows ,解压apktool-install-windows-2.2_r01-3.tar.bz2到C:\Windows下,记住了,解压后的几个文件放到同一文件夹。
2、打开命令窗口(开始 > 运行,输入cmd,回车。
)进入到apktool.bat的文件夹里。
输入:apktool d C:\***.apk C:\***文件夹(命令行解释:apktool d 要反编译的文件输出文件夹)4、如果出了以下的问题:Exception in thread "main" ng.UnsupportedClassVersionError: Bad version n umber in .class fileat ng.ClassLoader.defineClass1(Native Method)at ng.ClassLoader.defineClass(ClassLoader.java:620)atjava.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)at .URLClassLoader.defineClass(URLClassLoader.java:260)at .URLClassLoader.access$100(URLClassLoader.java:56)at .URLClassLoader$1.run(URLClassLoader.java:195)at java.security.AccessController.doPrivileged(Native Method)at .URLClassLoader.findClass(URLClassLoader.java:188)at ng.ClassLoader.loadClass(ClassLoader.java:306)at uncher$AppClassLoader.loadClass(Launcher.java:268)at ng.ClassLoader.loadClass(ClassLoader.java:251)at ng.ClassLoader.loadClassInternal(ClassLoader.java:319)版本问题,装了个jre6,在360中的软件管家可以找到的,记得装完后配置path路径,果然,ok。
Androidapk反编译基础(apktoos)图文教程
Androidapk反编译基础(apktoos)图⽂教程很久有写过⼀个⼴⼯图书馆主页⼀个类爬⾍的demo(因为没接⼝,只能扒取静态⽹页),实现⼀些图书馆系统的⼀些功能。
但最近发现图书馆系统在html页⾯上做了⼿脚,⼀页html 页⾯中嵌⼊了⼏千⾏的注释,并有了⾃⼰的App,应该是为了增加扒取的流量成本来防⽌别⼈去扒取⽹页,不过加注释这⼿段就不敢恭维了,内⽹访问速度还⾏,但外⽹访问的话体验很差的。
如下图:⼀堆注释,导致⼀个⽹页要2MB主页上的APP,必然是⽤了图书馆的后台接⼝和服务器交互的,从⽽想试试⽤反编译的⼿段来看看APP使⽤了什么接⼝。
(另外更简单可以通过来给Android⼿机抓包分析其接⼝,再⽤Wireshark来分析tcp包,不过你想要知道全部接⼝的话,可能需要⼀个个接⼝去调⽤,会⽐较⿇烦,采⽤反编译,可能集中在⼀个类中找到这些接⼝)。
解压缩APKTool,并把要反编译的APK放⼊⽬录中反编译:通过CMD进⼊上⾯的⽬录,执⾏命令: apktool decode ZhaoBenShu.apk outdir稍等⽚刻完成反编译,反编译后的⽂件会在outdir⽬录下。
---outdir⽬录结构res :资源⽂件,跟adnroid⼯程⽬录下的res基本⼀样,各种UI图⽚ XML布局⽂件 values xml⽂件(多了⼀个public.xml,有各个资源的id号(R.java中的id))smail:这个是重点⽂件夹,⾥⾯都是smail格式⽂件,是Dalvik虚拟机执⾏的操作码(Dalvik opcodes),这些操作吗有⾃⼰的语法,如果有学过JNI的话,这些语法还是⽐较容易看懂和理解的。
AndroidManifest.xml:Android⼯程下的AndroidManifest.xmlapktool.yml:⽤于重打包。
smail语法:(全部语法请)smail中的数据类型签名跟java中的是⼀样的,如下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
apk反编译步骤2011-02-24 21:17:25标签:apk反编译休闲Android职场原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/2400264/499893对于软件开发人员来说,保护代码安全也是比较重要的因素之一,不过目前来说Google Android平台选择了Java Dalvik VM的方式使其程序很容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式,然后解压缩可以看到内部的文件结构,类似Sun JavaMe的Jar压缩格式一样,不过不同的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进该文件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。
所有的类调用、涉及到的方法都在里面体现到,至于逻辑的执行可以通过实时调试的方法来查看,当然这需要借助一些我们自己编写的跟踪程序。
Google最然在Android Market上设置了权限保护app-private 文件夹的安全,但是最终我们使用修改定值的系统仍然可以获取到需要的文件。
当然了,我们反编译的目的是为了学习。
1. Apk文件:自己准备apk文件。
2. 将xxx.apk扩展名修改为xxx.rar或者xxx.zip,用WinRar解压缩,你可以看到内部文件的结构,类似下图所示:3. 直接打开AndroidManifest.xml会发现是乱码,这里面是二进制字符,需要用AXMLPrinter2.jar(/p/android4me/downloads/list),下载AXMLPrinter2.jar文件,为了方便,这里我把它放到了Android SDK文件夹下面的tools文件夹中)4. 逆向xml文件:把相应的AndroidManifest.xml放到AXMLPrinter2.jar同一目录,进入命令行模式,输入以下命令(注意空格):java -jar AXMLPrinter2.jar AndroidManifest.xml->AndroidManifest.txt5. 然后,打开AndroidManifest.txt,你就可以看到相应内容了,但是对资源的引用:android:label="@7F080000" android:icon="@7F02002A"(这个是编译后对应资源R.java中的值),对一些属性值的设置:android:configChanges="0x000000A0",还有:android:textColor="?android:01010036"android:textColor="?android:01010212",这个还需要查SDK,看到有android 字样,就知道是系统定义的常量,在android sdk Reference android.R.xxx 页面搜索01010036,找到"?android:01010036" 对应"?android:attr/textColorSecondary","?android:01010212"对应"?android:attr/textColorTertiary"6. 在解压缩后的文件夹中,你会发现还有一个classes.dex文件,这是编译后最终生成的dalvik字节码,还需要另外一个工具dex2jar(下载地址:/p/dex2jar/downloads/list),将Android’s .dex format转换成Java’s .cla ss format,下载后解压后有一个dex2jar.bat文件,把你的classes.dex文件拷贝到该目录中,命令行切换到该目录,运行命令dex2jar.bat classes.dex,将会在目录中生成classes.dex.dex2jar.jar文件。
7. 最后,还需要用工具去查看反编译的类,下载JD-GUI工具(绿色无须安装,下载地址:http://java.decompiler.free.fr/?q=jdgui),将jar文件拷贝到GUI文件夹下,运行JD-GUI,打开这个Jar文件,就能看到相应的类了,同样里面有许多很长的数字。
然而,我们发现上述方法对资源文件(drawable、xml等),反编译的不够完美,在一些汉化工具中,用到了apktool,可以从/p/android-apktool/下载(Windows下需要apktool1.x.x.tar.bz2和apktool-install-windows-r04-brut1.tar.bz2两个文件),下载后解压,为了以后方便使用,可以把得到的3个文件都复制到某个文件夹(比如D:\workspace\apktool)下,使用步骤如下:打开命令行窗口,切换到你复制到的目录,或者直接把目录路径添加到环境变量中;1)apktool d X.apk Y反编译X.apk到文件夹Y例如在命令行窗口输入"apktool d E:\game.apk E:\game_out"(不包含引号),就会启动apktool反编译E盘根目录下的game.apk文件,反编译得到的文件放在到E:\game_out\文件夹。
2)apktool b Y从文件夹Y重建为APK,输出到Y\dist\out.apk例如"apktool b E:\game_out",将E:\game_out文件夹下的文件编译成新的apk 文件,新文件会放在E:\game_out\dist\目录下,文件名为out.apk。
其他参数,请输入apktool -help查看,经过反编译后,classes.dex文件被反编译为smali文件夹下的文件;resources.arsc被分解成若干xml文件,放在res文件夹下;apk中原有的xml文件也变转换为可以直接用文本编辑器查看的形式。
其他的文件会被解压到相应的文件夹。
[2楼] [匿名]learnAndroid 回复2011-04-28 11:16:08 这句都写错了,java –java AXMLPrinter2.jarAndroidManifest.xml->AndroidManifest.txt不知楼主有没有试过正确: java -jar AXMLPrinter2.jar AndroidManifest.xml -> AndroidManifest.txt注意空格XP和WIN7搭建Android开发环境步骤详细图解∙∙|∙浏览:2715∙|∙更新:2013-08-03 15:16∙|∙标签:windows7android开始Android开发之前,首先要搭建开发环境,XP和WIN7搭建Android开发环境步骤比较复杂,大家可以按照下面的步骤一步一步按部就班的进行安装。
1.JDK安装:(1)先下载JDK;(2)设置环境变量步骤如下:我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:JA V A_HOME值为:D:\Program Files\Java\jdk1.6.0_18(你安装JDK的目录)CLASSPATH值:.;%JA V A_HOME%\lib\tools.jar;%JA V A_HOME%\lib\dt.jar;%JA V A_ HOME%\bin;Path: 在开始追加%JA V A_HOME%\bin;NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。
安装完成之后,可以在检查JDK是否安装成功。
打开cmd窗口,输入java –versio n查看J D K的版本信息。
出现类似下面的画面表示安装成功了:2.Eclipse安装:如果你还么有Eclipse的话,可以去这里下载,下载如下图所示的Eclipse IDE for Ja v a D e v e l o p e r s(92M)的w i n32b i t版:解压之后即可使用。
3.Android SDK安装:在Android Developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。
运行SDK Setup.exe,点击Available Packages。
如果没有出现可安装的包,请点击Settings,选中Misc中的"Force https://..."这项,再点击Available Packages 。
选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包在用户变量中新建PATH值为:Android SD K中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。
“确定”后,重新启动计算机。
重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。
运行a n d r o i d–h如果有类似以下的输出,表明安装成功:4.ADT安装:打开Eclipse IDE,进入菜单中的"Help" -> "Install New Software"点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Locati o n输入d l-s s l.g o o g l e.c o m/a n d r o i d/e c l i p s e。
如下图所示:确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。
如下图所示:然后就是按提示一步一步next。
完成之后:选择Window > Preferences...在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:D:\AndroidDevelop\android-sdk-windows点击Apply、OK。
配置完成。
5.创建AVD为使Android应用程序可以在模拟器上运行,必须创建A VD。
1、在Eclipse中。
选择Windows > Android SDK and AVD Manager2、点击左侧面板的Virtual Devices,再右侧点击New3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值4、点击Create A VD即可完成创建A VD注意:如果你点击左侧面板的Virtual Devices,再右侧点击New ,而target下拉列表没有可选项时,这时候你:点击左侧面板的Available Packages,在右侧勾选,如下图所示:然后点击Install Selected按钮,接下来就是按提示做就行了要做这两步,原因是在1.3、Android SDK安装中没有安装一些必要的可用包(Ava ilable Packages)Android SDK安装:EclipseJDK安装。