利用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:debuggable设置为false,所以要达成条件1需要反编译原apk,修改AndroidManifest.xml并进行重新打包,这样不仅麻烦,而且很多软件进行了加固,要破解很难。所以想办法满足第2个条件是个一劳永逸的办法。

由于default.prop是保存在boot.img的ramdisk中,这部分每次重新启动都会重新从rom中加载,所以要到目的必须修改boot.img中的ramdisk并重新刷到设备中。修改步骤如下:

1.从Google官方网站下载到boot.img

2.使用工具(abootimg,gunzip, cpio)把boot.img完全解开,获取到default.prop

3.修改default.prop

4.把修改后的文件重新打包成boot_new.img

5.使用fastboot工具把boot_new.img刷入设备(fastboot flash boot boot_new.img)

具体可参考:http://www.cnblogs.com/goodhacker/p/4106139.html

由于我们这篇文章的重点是如何动态调试dex代码,所以我们就假设该dex是可调试的。

1.用ida打开apk文件,选择dex文件进行加载
2.设置debugger选项,Debugger->Debugger options->Set specific options,按如图1所示进行设置,然后一路确定返回
3.找到要下断点的位置,光标移到要下断点的那一行,按f2下断点
4.手机开启调试选项,连接到电脑,运行apk
5.选中IDA pro窗口,按f9运行,如果出现如图2的画面,就说明设置成功,可以进行动态调试了。

图1 调试设置

图2 调试界面

注意:如果运行过程中一直显示如图3所示窗口,就需要关注一下你的手机屏幕,看是否是需要与用户进行交互了。

图3

时间: 2024-10-25 10:02:29

利用IDA6.6进行apk dex代码动态调试的相关文章

阿里ctf-2014 android 第三题——so动态调试及破解加固

通过做题来学习android逆向是一个比较不错的方法. 虽然有投机取巧的方法解决这题,但是对这个题目的深入研究,学习到了dex的动态调试.破解加固等技术. 要感谢各位android大牛对此题的详细介绍.我只是照着做了一遍,对有些不明确的地方自己演练了一下,并对android的so调试进行了一下简单的归纳. 从零开始进行android的so代码调试: 一.工具准备: jre--java runtime enveroment    //下面的一切工具都要这个支持 jdk--java developm

IDA Pro使用(静态分析+动态调试)

链接:http://skysider.com/?p=458 IDA Pro使用(静态分析+动态调试) 1.静态分析 IDA FLIRT Signature Database -- 用于识别静态编译的可执行文件中的库函数 IDA signsrch -- 寻找二进制文件所使用的加密.压缩算法 IDA scope -- 自动识别windows函数和压缩.加密算法 Ponce -- 污点分析和符号化执行工具 snowman decompiler -- C/C++反汇编插件(F3 进行反汇编) keyst

Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)

一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为了安全或者效率问题,会把一些重要的功能放到native层,那么这样一来,我们前篇说到的Eclipse调试smali源码就显得很无力了,因为核心的都在native层,Android中一般native层使用的是so库文件,所以我们这篇就来介绍如何调试so文件的内容,从而让我们破解成功率达到更高的一层.

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

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

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逆向之旅---动态方式破解apk前奏篇(Eclipse动态调试smail源码)

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

apktool + eclipse 动态调试APK

用了会AndBug,尽管挺强大的可是作为习惯了OD.EDB作为动态调试工具的人,自然有些不习惯,于是乎寻求新的动态调试解决方式.但大多数都是NetBeans + apktool.想着还得多下一个IDE就各种烦躁,还是去寻求Eclipse的组合吧. http://code.google.com/p/android-apktool/wiki/SmaliDebugging 找到apktool的官网,看到有能够实现动态调试. 能够在反编译和回编的时候通过设置參数给目标APK中的manifest文件里增加

New UI-Java代码动态添加控件或xml布局

New UI-Java代码动态添加控件或xml布局  --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目录:http://blog.

Android基础入门教程——1.10 反编译APK获取代码&资源

Android基础入门教程--1.10 反编译APK获取代码&资源 标签(空格分隔): Android基础入门教程 本节引言: "反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件:不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载别人的APK,然后改下后缀名,改成xxx.zip,然后解压: 笔者随便解压了一个APK: