会反编译了,会smali修改了,会二次打包了,那么在java的源码方面还有什么要走的呢?
那大概就是debug调试smali了吧,我第一次了解smali也能调试的时候,也是很震惊的
好了,不说废话,来说下要准备什么吧
1.smalidea-0.05.zip:IDEA或者AS插件,能识别smali文件并在其上打断点,没有的话则IDE只把smali文件当成普通的文件,而不能打断点
最新下载地址:https://bitbucket.org/JesusFreke/smali/downloads/
(IDEA插件商店里里我找过了,没有,只能去手动下下来安装)
安装方式有二:
一:解压zip文件得到插件文件夹,点开idea的插件菜单,选择从硬盘去安装这个插件
二:解压zip文件得到插件文件夹,把文件夹直接扔到idea安装目录下的plugins文件夹内,重启idea
2.IDEA:听说AS对这个插件有什么BUG
3.一个APK反编译后的文件夹:对此就拿上一篇的APK来用http://blog.csdn.net/ons_cukuyo/article/details/78919754
好了,开始吧
1.打开反编译文件
首先把上次反编译的apk安装到手机上(不然怎么调试啊)
然后使用打开的方式反编译文件夹,后面就一路next就好了,不要选什么其他model的(这一步之前请把插件安装上,很简单的,我就不写了)
选择反编译后的文件夹
进去后IDEA识别到你的项目里有mainfest,所以认定为安卓项目,这里一定要点这个设置,不然不会给你弹出调试的按钮
调试按钮出来了
2.开始调试
在手机上运行该程序,以让连接按钮能找到程序进程
(题外话:做过安卓开发的,应该都知道进入debug模式有两种方法,一种代码变了然后点击debug按钮重新安装程序进入debug,一种是使用上面的按钮,attach debugger to android process,代码没变的情况下直接选择进程进入debug模式调试)
之后会显示连接的地址和方式
网上还有种做法,就是在run里面增加一个renmote方式,编辑IP和端口,然后运行,我猜是上面题外话说到的类似第一种进入debug的方式。亲测了下,没成功,不知道为什么。放弃了,是吧,我们有这种方便的方式,还用那种繁琐的方式干嘛,是吧
最后在smali文件上打断点,运行程序就可以像平常和debug一样执行了,注意,如果断点是在程序运行开头,则需要先运行程序连接上,然后退出重进(因为退出后,进程也不会立马会死)
3.总结
整个过程,最关键还是smalidea这个插件,这个插件起到了至关重要的作用,能让idea识别smali文件并打上断点,之后连接上进程就能debug了。
1.有的时候debug、debug程序就崩了,不知道为什么
2.一定要点那个设置本文件夹为安卓项目的按钮,这样才能显示进程连接的按钮