用了会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 subprocess class 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,新建javaproject。增加源码(反编译代码smali文件夹)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWGJhbGllbjI5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

之后我们能够打开个文件下断点

接着设置调试配置文件,选定远程调试以及相应port就可以開始调试

之后点击debug。这时候能够在手机上開始了点击。到对应断点的时候就断下来了

之后就能够愉悦的单步调试了

最新文章

  1. PHP cURL 使用cookie 模拟登录
  2. Spark计算均值
  3. android handler ,message消息发送方式
  4. gulp 使用介绍
  5. Android自动连接指定的wifi,免密码或指定密码
  6. MyBatis知多少(18)MyBatis系统
  7. 如何在SQLServer中处理每天四亿三千万记录
  8. 去掉字符串中的空格 JS JQ 正则三种不同写法
  9. C#公历转农历算法
  10. 2 weekend110的SecureCRTPortable远程连接 + 上传安装jdk + 上传安装配置hadoop
  11. leetcode Binary Tree Postorder Traversal python
  12. 深度分析DataTable如何筛选
  13. maven配置本地仓库(从本地仓库下载jar包到.m2仓库)
  14. 201521123054 《Java程序设计》 第2周学习总结
  15. 基于 Vue.js 之 iView UI 框架非工程化实践记要
  16. python字符串常用的方法解析
  17. python添加post请求
  18. 【java】类的继承
  19. CF 888E Maximum Subsequence
  20. Mongod服务器安装

热门文章

  1. springboot+Jib+Maven+Idea+Docker 实践
  2. tyvj 2002 扑克牌
  3. button 默认类型是submit
  4. postgresql 10 ltree 使用说明
  5. Python Challenge 第四关
  6. 使用 Craft CMS 搭建blog模型
  7. (2)Unity3d菜单
  8. Codeforces 620F Xors on Segments(暴力+DP)
  9. 网络入侵检测规避工具fragrouter
  10. (BruteForce)暴力破解经典题目总结