Apk文件Hack试验
试验1:反编译dex文件并查看
(1)将Apk文件作为zip文件解压缩得到classes.dex
(2)使用dex2jar(http://code.google.com/p/dex2jar/)工具将dex文件转为jar文件
(3)使用jd-gui(http://java.decompiler.free.fr/?q=jdgui)工具查看得到的jar包
试验2:修改apk文件的图标或者文本
1)使用android-apktool(http://code.google.com/p/android-apktool/)工具解包apk。
?? ?apktool d apk文件 输出目录
(2)编辑res目录下面有图片文件以及保存有文本的xml文件
(3)编辑smali目录下的代码文件,有些文本可能是直接写到代码中的,比如文件路径。
?? ?smali是一种汇编形式的dex代码,具体参见http://code.google.com/p/smali/
(4)重新打包生成apk
?? ?apktool b apk文件 输入目录
(5)签名并发布
?? ?生成签名库,生成的签名库可以重复使用。
?? ?keytool -genkey -alias asaiAndroid.keystore -keyalg RSA -validity 20000 -keystore asaiAndroid.keystore
?? ?-alias 后面跟的是别名这里是 asaiAndroid.store
?? ?-keyalg 是加密方式这里是RSA
?? ?-validity 是有效期 这里是20000
?? ?-keystore 就是要生成的keystore的名称 这里是asiAndroid.keystore
?? ?然后按回车键
?? ?按回车后首先会提示你输入的密码:这个在签名时要用的,要记住
?? ?然后会再确认你的密码。
?? ?之后会依次叫你输入姓名、组织单位、组织名称、城市区域、省份名称、国家代码 (CN)等。
(6)签名
?? ?jarsigner -verbose -keystore asaiAndroid.keystore -signedjar Lotteryonline_signed.apk LotteryOnline.apk?? ?asaiAndroid.keystore
?? ?-keystore: keystore的名称
?? ?LotteryOnline_signed.apk: 签名后的APK
?? ?LotteryOnline.apk: 签名前的APK
??? asaiAndroid.keystore要使用的key条目名称,一个keystore中可能有多个key条目。如果忘记了可以用keytool -list -keysotre store的路径 来查看
??? 如何判断一个apk是否已经签名?
?? ?jarsigner.exe -verify android_assistant.apk