android反编译

Android反编译

代码反编译

能够对jar包或者apk进行反编译,查看到代码。

 

工具:jd-jui.exe;dex2jar。

android反编译_第1张图片

Jd-jui.exe反编译jar包

拖动jar包到jd-jui.exe就能看到这个页面

 android反编译_第2张图片

dex2jar反编译apk

         修改apk的后缀为.zip。解压。

android反编译_第3张图片

其中res和manifest.xml都是乱码。

拖动classes.dex到dex2jar的d2j-dex2jar.bat进行反编译,获得jar包。

android反编译_第4张图片

得到jar包后,使用jd-jui.exe查看源码。

 android反编译_第5张图片

Apk资源反编译(解包/打包)

可以对apk进行解包,替换资源后重新打包。

 

解包/打包工具:apktool.jar

apk辅助工具:aapt.exe

 

apktool.jar解包/打包

cmd运行apktool.jar dmyapp.apk会解包出一个myapp的文件夹

         java–jar apktool.jar d myapp.apk   如果存在myapp文件夹 失败

java –jarapktool.jar d myapp.apk –f 存在myapp文件夹会覆盖

解包出来后能看到这样的目录结构:

android反编译_第6张图片

资源文件和manifest.xml都被完整的解析出来了。如果想替换图片、xml、manifest等可以用这种方式去解包-替换-打包。

android反编译_第7张图片

 android反编译_第8张图片

除了代码被解压成了.smali文件。可以去替换相同类名、方法名的代码

 android反编译_第9张图片

apktool.yml则是apk的一些信息

android反编译_第10张图片

当然,如果只是为了查看apk信息,解包查看比较麻烦。

可以使用aapt.exe直接查看更为方便全面。后文会介绍aapt

 

替换资源后进行打包,比如替换掉图标

Cmd运行打包java -jarapktool.jar b myapp

会在myapp文件夹中生成dist文件夹,放置着生成的apk文件

android反编译_第11张图片

当然这个包还未进行签名。

签名后就可以安装了。

jarsigner -verbose –keystore xxx.keystore -storepass 签名密码-signedjar 签名后.apk -digestalg SHA1 -sigalg MD5withRSA 签名前.apk 签名别名

 

aapt.exe查看apk信息

cmd执行aapt.exe d badgingmyapp.apk

获取:包名,versionCode,versionName,最小版本,targetSdkVersion,权限等。

android反编译_第12张图片

 

R文件:

         R文件存在解包后包名下。主要是资源和属性的索引值。

 

当解包后,改变了资源文件名称或新加了资源文件。需要添加新的索引值。否则无法打包。

我们可以重新生成资源文件索引。使用命令:

cmd.exe e: && cd E:\test aapt p -f-m -J 生成R文件位置

-S res位置 -ID:\developtools\Android_SDK\sdk\platforms\android-19\android.jar -M AndroidManifest.xml位置

----------------------------------------------------------------------------------------------------------------------

cmd.exe e: && cd E:\test aapt p -f-m -J TestCaceFeiZhu\smali -S TestCaceFeiZhu\res -ID:\developtools\Android_SDK\sdk\platforms\android-19\android.jar -MTestCaceFeiZhu\AndroidManifest.xml

 

会在指定位置下生成R.java文件。

android反编译_第13张图片

android反编译_第14张图片

 

根据R.java内部类的类名新建smali文件,替换原有的smali文件。

android反编译_第15张图片

smali内部除了包名是活的,内容是类似的。

如R$dimen.smali

android反编译_第16张图片

Drawable的smali文件

 android反编译_第17张图片

手动生成完成后,就可以重新打包。签名后就可以使用了。


 工具下载(apktool、aapt、jd-jui、dex2jar)

 

 

 

 

 

你可能感兴趣的:(android,java)