apktool + eclipse 动态调试APK
用了会AndBug,虽然挺强大的但是作为习惯了OD,EDB作为动态调试工具的人,自然有些不习惯,于是乎寻求新的动态调试解决方案。但大多数都是NetBeans + apktool,想着还得多下一个IDE就各种烦躁,还是去寻求Eclipse的组合吧。
http://code.google.com/p/android-apktool/wiki/SmaliDebugging
找到apktool的官网,看到有可以实现动态调试。可以在反编译和回编的时候通过设置参数给目标APK中的manifest文件中加入android:debuggable="true",,同时为了结合Eclipse,之后也会自动把.smali后缀改为了.java。这样就可以用来调试了。当然,别忘了回编后还需要签名等,于是自己写了个简易的脚本:
'''
Created on 2014-5-28@author: Xbalien
'''
import os
import sys
import subprocessclass APKdebugger(object):
def unpackaging(self, apk_path):
print 'Start Unpackaging...'
subprocess.call(['apktool_2.0.0b9.jar','d','-d',apk_path],shell=True)def packaging(self, file_path):
print 'Start Packaging...'
subprocess.call(['apktool_2.0.0b9.jar','b','-d',file_path],shell=True)def signer(self, unsigned_path):
print 'Start Signing...'
signer_comm=['jarsigner','-verbose','-keystore','key','-digestalg','SHA1','-sigalg', 'MD5withRSA' ,'-signedjar','signed.apk']
signer_comm += [unsigned_path,'key']
p = subprocess.Popen(signer_comm,stdin=subprocess.PIPE,stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True)
p.communicate(input='key123456')
p.wait()def zipalign(self, outapk_path):
subprocess.call(['zipalign','-v','4','signed.apk',outapk_path],shell=True)if __name__ == '__main__':
if len(sys.argv) >1:
print 'Start Create APKdebugger...'
apk_path = sys.argv[1]
file_path = apk_path[:-4]
unsigned_path = './'+file_path+'/dist/'+apk_path
outapk_path = file_path+'//'+apk_path
apk_debugger = APKdebugger()
apk_debugger.unpackaging(apk_path)
apk_debugger.packaging(file_path)
apk_debugger.signer(unsigned_path)
apk_debugger.zipalign(outapk_path)
else: print 'useage:main.py apk_name'
脚本处理好之后,apk也就生成了。之后将其安装到手机上。点击运行。这时候可以通过DDMS查看
文章图片
这时候打开Eclipse,新建java工程,加入源代码(反编译代码smali目录)
文章图片
之后我们可以打开个文件下断点
文章图片
接着设置调试配置文件,选定远程调试以及对应端口即可开始调试
【apktool + eclipse 动态调试APK】
文章图片
之后点击debug。这时候可以在手机上开始了点击。到相应断点的时候就断下来了
文章图片
之后就可以愉悦的单步调试了
推荐阅读
- 动态组件与v-once指令
- iview|iview upload 动态改变上传参数
- react-navigation|react-navigation 动态修改 tabBar 样式
- K14|K14 9/15销售提问法D2
- 动态|诗歌《在精神科诊室》发《小说与诗》(香港)报
- C语言静态动态两版本通讯录实战源码
- Trie树(动态规划)
- eclipse上传项目到github操作步骤
- java动态代理技术解析
- 纯CSS实现动态的天气图标