反编译,主要用到两类工具,一个就是获取apk包的包名(appPackage)和类名(appActivity)的工具,其实就是反编译出java源代码,dex2jar和jd-gui;一个是将一个apk包反编译然户加入自己签名,修改一些参数,让它更好的用于自动化测试的apptoools,下面简单介绍这两个工具的使用:
一、dex2jar和jd-gui
1、下载APK,修改APK后缀名为zip并解压该zip文件;
2、打开文件夹找到classes.dex文件,并把他复制到dex2jar文件夹下面,在cmd命令行中执行dex2jar.bat classes.dex命令,得到classes_dex2jar.jar文件;
3、打开jd-gui,选择open file 找到反编译文件classes_dex2jar.jar,就可以得到包名和类名
二、apptool
反编译命令:apptool.bat -d -o E:/test/ test.apk 反编译test.apk文件到E:test目录下
回编译命令:apptool.bat -b -o E:/test/ test1.apk 回编译E:/test目录下文件为test1.apk
反编译完之后是根据smaile修改底层源码
res是apk相关资源,重新打包之后签名还是原来的,对于自动化来说是不可以的,所以还需要重新签名。
三、重新签名
1、自己用eclipse生成一个签名文件debug.keystore
也可以自己生成一个签名,命令如下:keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000
2、按照二中,然后删除MANIFEST文件夹;
3、重签名:
JARSIGNER -VERBOSE -KEYSTORE %KEYSTORE_NAME% -STOREPASS %KEYSTORE_STOREPASS% %TEMP_PREFIX%%%I %KEYSTORE_ALIAS% -KEYPASS %KEYSTORE_KEYPASS% -DIGESTALG SHA1 -SIGALG MD5withRSA
四、其他
查看精简信息 apkhelper
查看签名信息 keytool -list -v -keystore apkname