android 反编译和打包签名

apktool  

     作用:主要查看res文件下xml文件、AndroidManifest.xml和图片。(注意:如果直接解压.apk文件,xml文件打开全部是乱码)

dex2jar

     作用:将apk反编译成Java源码(classes.dex转化成jar文件)

jd-gui

     作用:查看APKclasses.dex转化成出的jar文件,即源码文件

 

然后我们把下到的工具放到同一个目录:如我放在D:\APKTools目录,重命名apktool_2.1.1.jarapktool.jar;解压其他两个文件压缩文件

 android 反编译和打包签名

APKToolsdex2jar-2.0的路径配置到系统环境变量中

 

准备一个测试apkTest_android.apk放进新建的test文件夹中,复制一个副本重命名为Test_android.zip,然后解压,你就可以看到一些东西了,不过这种方式看到的大部分文件内容都是乱码,基本不可读。不过不用担心,通过apktool我们就可以得到除代码文件外的大部分刻可读文件了

 android 反编译和打包签名

之后就得到反编译的文件夹,里面的资源文件基本和原文件一样,还原率超高

 

不过对于java文件就看不了,因为这种方式得到的是.smali文件,必须通过另一种方式

android 反编译和打包签名

经过这一步之后就生成了一个jar文件,在

 android 反编译和打包签名

 

之后用jd-gui.exe打开Test_android-dex2jar.jar,就得到了源代码,

 android 反编译和打包签名

 

 

Smali2JavaUI不能用???

对于博主说得,先dex2jarclasses.dex转为jar,再jd-guijar转为源码*.java文件。

现在可以用Smali2JavaUI这个软件,一部到位。可以把这两个步骤化为一个步骤。

 

所以,如果只想反编译看*.java文件的话,只用Smali2JavaUI软件就可以了。

这个软件可以直接打开***.apk文件,然后就直接看到*.java文件了。

Smali2JavaUI最新版本下载链接http://www.hensence.com/cn/smali2java/#Download

 

http://blog.****.net/ysc123shift/article/details/52985435

https://www.cnblogs.com/chen110xi/p/6612437.html


https://blog.****.net/wh_19910525/article/details/7915738/

1) 汉化apk应用程序省略

2)修改图标标签
每一个apk文件都有一个“图标标签”。将apk程序安装进手机后,在图标下面显示图标标签文字。这个图标标签的内容是可以修改的。\res\values下找到strings.xml,修改其中的一行:
<string name="app_name">图标标签</string>
例如:<string name="app_name">静音启动</string>
同理,如果是窗口小插件,要修改widget_name。

3) 去掉apk中的广告
有很多apk应用都带有广告。为了去掉程序中的广告,要修改main.xml文件与广告有关的内容。在/res目录下找到文件main.xml。通常在/layout目录下,有时也被放在其它目录下。甚至,有时不存在main.xml文件,广告行被放在其它xml文件内。只能细心逐个文件进行查找。无论哪一种情况,查看其内容,你会看到有一项类似的命令如下。这就是广告显示。
<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”fill_parent” android:layout_height=”wrap_content” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” /> 
将其改为:
<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”0.0dip” android:layout_height=”0.0dip” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” /> 
可以看到,关键是要把fill_parent改为0.0dip,把wrap_content改为0.0dip,其它内容保持不变即可。这种改法就是不给广告显示空间,当然你就看不到广告了。

https://ibotpeaches.github.io/Apktool/documentation/

Decoding 

The decode option on Apktool can be invoked either from d or decode like shown below.

$ apktool d foo.jar// decodes foo.jar to foo.jar.out folder

$ apktool decode foo.jar// decodes foo.jar to foo.jar.out folder

$ apktool d bar.apk// decodes bar.apk to bar folder

$ apktool decode bar.apk// decodes bar.apk to bar folder

$ apktool d bar.apk -o baz// decodes bar.apk to baz folder

 

Building 

The build option can be invoked either from b or build like shown below

$ apktool b foo.jar.out// builds foo.jar.out folder into foo.jar.out/dist/foo.jar file

$ apktool build foo.jar.out// builds foo.jar.out folder into foo.jar.out/dist/foo.jar file

$ apktool b bar// builds bar folder into bar/dist/bar.apk file

$ apktool b .// builds current directory into ./dist

$ apktool b bar -o new_bar.apk// builds bar folder into new_bar.apk

$ apktool b bar.apk// WRONG: brut.androlib.AndrolibException: brut.directory.PathNotExist: apktool.yml

// Must use folder, not apk/jar file

 

Info 

In order to run a rebuilt application. You must resign the application. Android documentation can help with this.

 

修改完xml后,编译apktool b bar

选择 bar/dist/bar.apk file  去签名

cddist目录中

 

jarsigner [ options ] jar-file alias

jarsigner -verify [ options ] jar-file

 

-verify

如果它出现在命令行中,则指定的 JAR 文件将被校验,而不是签名。如果校验成功,将显示“jar verified”。如果试图校验未签名的 JAR 文件,或校验被不支持的算法(例如未安装 RSA 提供者时使用的 RSA)签名的 JAR 文件,则将有如下显示: "jar is unsigned. (signatures missing or not parsable)"

可以校验使用 jarsigner JDK 1.1 javakey 工具或共用二者签名的 JAR 文件。

有关校验的详细信息,参见 JAR 文件校验

 

-verbose

如果它出现在命令行中,则代表“verbose”模式,它使 jarsigner JAR 签名或校验过程中输出额外信息。

 

-keystore url

指定**仓库的 URL。缺省值是用户的宿主目录中的 .keystore 文件,它由系统属性“user.home”决定。

签名时需要**仓库,因此如果没有缺省的(或要使用非缺省的)**仓库,就必须明确指定一个。

校验时不需要**仓库,但如果指定了一个,或存在缺省的,且 -verbose 选项也被指定了,则将输出该**仓库中是否包含了用于校验 JAR 文件的证书的附加信息。

注意: -keystore 参数实际上可以是指定的文件名(及路径)而不是 URL,这种情况下它将当作“file:” URL. 也就是说,

  -keystore filePathAndName

被当作等价于

  -keystore file:filePathAndName

 

 

 jarsigner -verbose -keystore F:\code_android\generatesignedapk.jks app-debug.apk williamshen

 android 反编译和打包签名

  jarsigner -verify app-debug.apk,忽略警告

android 反编译和打包签名