用了会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。这时候能够在手机上開始了点击。到对应断点的时候就断下来了

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

apktool + eclipse 动态调试APK的更多相关文章

  1. Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)

    一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk  主要采用的是静态方式,步骤也很简单,首先使用 ...

  2. Android Studio 动态调试 apk 反编译出的 smali 代码

    在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...

  3. Eclipse+APKTool动态调试APK

    1. 所需工具 Eclipse. Apktool v2.0.6. 安卓SDK工具. 2. 重编译APK apktool d -d -o test test.apk 此时当前test目录下就是apkto ...

  4. ida 动态调试apk

    1,启动 android_x86_server 2 adb forward tcp:23946 tcp:23946 调试应用命令:adb shell am start -D -n com.droidh ...

  5. apktool动态破解apk

    那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围.当然动态方式很多,所以这里就分 ...

  6. 反编译与调试APK

    0×01前言 这年头,apk全都是加密啊,加壳啊,反调试啊,小伙伴们表示已经不能愉快的玩耍了.静态分析越来越不靠谱了,apktool.ApkIDE.jd GUI.dex2jar等已经无法满足大家的需求 ...

  7. Android studio动态调试

    Reference:  http://cstsinghua.github.io/2016/06/13/Android%20studio%E5%8A%A8%E6%80%81%E8%B0%83%E8%AF ...

  8. apk逆向 - smali动态调试

    author: Dlive date: 2016/10/6 0x00 前言 ​ 之前有人问过smali的动态调试方法,其实网上已经有很多文章讲这些内容,但是为了方便大家学习,我还是写一下让大家少走点坑 ...

  9. Android APK程序的smali动态调试

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/71250622 一.Apktool的下载和安装 Apktool是Android逆向分 ...

随机推荐

  1. Bootstrap 模态框(Modal)插件数据传值

    原文:http://blog.csdn.net/baalhuo/article/details/51178154 模态框具体代码如下: <!-- 模态框(Modal) --> <di ...

  2. 【CF1027B】Numbers on the Chessboard(数学)

    题意:给定一个n*n的矩阵与生成矩阵的方式,多次询问同一个方格内(x,y)的数字是多少 题意:浪费人生的矩阵题,找规律 #include<cstdio> #include<cstri ...

  3. net6:创建Membership对象数据源的代码

    原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] 添加了一个db的类作为了对象数据源: using System;using System.Data;using S ...

  4. declaration specifier, declarator, type specifier

    static struct abc * b; static struct abc : declaration specifier * b : declarator struct abc : type ...

  5. svn不是内部或外部命令?

    svn不是内部或外部命令? 我的系统是Win7, [计算机]-->右键[属性]-->[高级系统设置]-->[环境变量]-->[系统变量 (S)]-->[Path]--&g ...

  6. 解决win2008下IIS7的HTTP500错误

    造成500错误常见原因有:ASP语法出错.ACCESS数据库连接语句出错.文件引用与包含路径出错.使用了服务器不支持的组件如FSO等.另外,对于win2008的IIS默认不显示详细出错信息的问题以下就 ...

  7. react状态

    组件的生命周期分成三个状态: Mounting:已插入真实 DOM Updating:正在被重新渲染 Unmounting:已移出真实 DOM React 为每个状态都提供了两种处理函数,will 函 ...

  8. Ubuntu 16.04下使用Wine安装PowerDesigner15

    说明: 1.关于没有.wine文件夹的解决方法:在命令行上运行winecfg: 2.使用的Wine版本是深度出品(Deepin),已经精简了很多没用的配置,使启动能非常快,占用资源小. 下载: (链接 ...

  9. 【redis】5.spring boot项目中,直接在spring data jpa的Repository层使用redis +redis注解@Cacheable直接在Repository层使用,报错问题处理Null key returned for cache operation

    spring boot整合redis:http://www.cnblogs.com/sxdcgaq8080/p/8028970.html 首先,明确一下问题的场景 之前在spring boot整合re ...

  10. update tableView contenSize

    NSIndexPath *messageIndexPath = [NSIndexPath indexPathForRow:afterRowCount-1 inSection:0];    [self. ...