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 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文件夹)

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

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

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

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

时间: 2024-10-12 12:14:47

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

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

一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk  主要采用的是静态方式,步骤也很简单,首先使用apktool来反编译apk,得到smail源码,然后分析smail代码,采用代码注入技术来跟踪代码,然后找到关键方法进行修改,进而破解,同时还可以使用一些开源的hook框架,比如:Xposed和Cydia Substrate,来进行关键方法的hook.所以这里我们可以看到我们破解的第一步是使用ap

Android逆向之旅---动态方式破解apk前奏篇(Eclipse动态调试smail源码)

一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk  主要采用的是静态方式,步骤也很简单,首先使用apktool来反编译apk,得到smail源码,然后分析smail代码,采用代码注入技术来跟踪代码,然后找到关键方法进行修改,进而破解,同时还可以使用一些开源的hook框架,比如:Xposed和Cydia Substrate,来进行关键方法的hook.所以这里我们可以看到我们破解的第一步是使用ap

Eclipse 动态调试smali

学习看雪的文章: http://bbs.pediy.com/showthread.php?t=189610,算是学习笔记,整理一下,万一忘记了可以到博客来查一下. 1. 首先使用apktool反编译apk文件 apktool d -d xxxxx.apk  (-d一定要加, 否则Eclipse中无法设置断点,也就无法调试了) 2. 在输出的文件夹中,用文本编辑工具打开AndroidManifest.xml 搜索以下关键字 <intent-filter><action android:na

ida 动态调试apk

1,启动 android_x86_server 2 adb forward tcp:23946 tcp:23946 如果出现错误: Bogus or irresponsive remote server 解决方案: 在控制台输入:adb forward tcp:23946 tcp:23946 不是: adb forward tcp:23946 tcp:5555 原文地址:https://www.cnblogs.com/dzqdzq/p/11229094.html

利用IDA6.6进行apk dex代码动态调试

网上公开IDA6.6已经有一段时间,这个版本有个好处就是可以动态调试java代码.正好现在需要动态调试,所以顺便练习一下. 根据android的官方文档,如果要调试一个apk里面的dex代码,必须满足以下两个条件中的任何一个: 1.apk中的AndroidManifest.xml文件中的Application标签包含属性android:debuggable=”true” 2./default.prop中ro.debuggable的值为1 由于一般软件发布时都会把android:debuggabl

android动态调试samli代码

转载自看雪http://bbs.pediy.com/showthread.php?t=189610,非常感谢原作者分享! 初涉移动端,请各位前辈多多指教! 本文参考http://www.kaifazhe.com/android_school/380973.html在此,对作者表示感谢! 跟踪apk一般的做法是在反编译的smali代码中插入log输出,然后重新编译运行看输出日志,这种方法费时费力,如果能够动态调试就最好了.下面就给大家介绍apk+eclipse来调试smali. 前期准备:ecli

Android studio动态调试smali

前面介绍了使用IDA动态调试smali,这种方法设置简单,不用重打包,用起来方便,但是如果变量类型设置错误则会马上退出调试,这是让人不爽的地方,而使用Android studio则不会. 0x01    工具①Android Studio最新版.②apktool尽量使用最新版的.③ideasmali插件.下载地址https://github.com/JesusFreke/smali/wiki/smalidea 0x02     具体步骤安装ideasmali插件,选择File->Settings

安卓动态调试七种武器之长生剑 - Smali Instrumentation

安卓动态调试七种武器之长生剑 - Smali Instrumentation 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器.因此,笔者将会在这一系列文章中(共7篇)分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用. 0x01 长生剑 长生剑是把神奇的剑,为白玉京所配,剑名取

安卓程序动态调试方法

一.使用DDMS 1.将程序使用apktool转化为smali代码,在关键代码左右注入log代码(的smali形式,如输出寄存器v0的值),之后重新打包apk,再执行时可以从 logcat 中看到输出. 2.栈跟踪法:如,在关键代码左右插入new Exception("print trace").printStackTrace();的smali代码形式,之后重新打包签名,再次运行可以在logcat窗口中得到栈跟踪信息. 3.method profiling: 可以用ddms中的meth