第一歩: 使用apktool decompile apk
Apktool 是一个decompile的工具, 使用它就可以将apk 变为source file
与.apk 相同的文件夹下 shift+right click, w 启动cmd 按照下图依次键入两个命令进行decompile
浏览一下decompile后的文件夹
Build是系统自动生成的,lib是库, original 里面是 manifast, res一般是用到的图片按钮之类的, smali应该就是源码了.
注意到decompile后的源码是smali语言, 了解到 java 转换为smali 的时候会丢失一些信息, 尤其class的信息, 所以smali转换为java可能会有些问题, 所以就学习一下smali语言, 修改这个project.
打开small, android 中是support -v4 library, com 里面就是我们要找的源码!
现在大概分析一下这个app的结构
目测它只有两个Activity
R开头的在android中都是resource, 这个MainActivity一定就包含我们想找的onCreate入口了, $1是他的sub-class.
了解语法后, 我们就可以修改源码了
第三步: recompile:
在文件夹同一文件夹下 Shift+right click ,w 按照下图进行recompile 得到 .apk
对recompile后的apk进行压缩, 得到imissTest-final.apk, 如果不进行压缩, app运行时会对系统资源占用较大.
第四步: signature
将这个apk放到真机中, 发现未安装, 卸载原来的apk 发现还是无法安装. 想到用eclipse或者android studio开发的时候, 安装apk时 最后的signature都是自动进行的, 在这里并没有.
于是下载keytool 生成.keystore, 参照下图:
再使用jarsigner 进行signature时 ,发现它需要 JDK1.7, 只好将1.8先卸载, 去Oracle 安装1.7
之后再使用jarsigner signature 发现还出现问题, 它说未能找到sun..........类,
在stackoverflow上查了一下, 把jdk7下面的 tools复制过来即可
最后再次使用jarsigner, 就成功签名了.
原文地址:http://blog.csdn.net/qq_21970857/article/details/45798147