1. Smalidea无源码调试android应用

一.安装smalidea

https://github.com/JesusFreke/smali/wiki/smalidea

1. 进入IntelliJ IDEA/Android Studio开始安装插件,进入Settings->Plugins点击Install plugin from disk选中下载好的压缩包

2. apply->restart Android Studio

3. 该调试方法的原理

采用 hook 方式达到开启所有应用调试的目的,xposed 插件代码如下

public class Debug implements IXposedHookLoadPackage {

    public boolean debugApps = true ;

    public static final int DEBUG_ENABLE_DEBUGGER = 0x1;

    public String tag = "IDG";

    @Override

    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {

        if(lpparam.appInfo == null ||

                (lpparam.appInfo.flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) !=0){

            return;

        }

        tag = tag + lpparam.packageName;

        XposedBridge.hookAllMethods(Process.class, "start", new XC_MethodHook() {

            @Override

            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {

                int id = 5;

                int flags = (Integer) param.args[id];

                Log.d(tag,"flags is : "+flags);

                if (debugApps) {

                    if ((flags & DEBUG_ENABLE_DEBUGGER) == 0) {

                        flags |= DEBUG_ENABLE_DEBUGGER;

                    }

                }

                param.args[id] = flags;

                Log.d(tag,"flags changed : "+flags);

            }

        });

    }

}

二.安装调试工具

安装Xposed框架

1.下载相关工具

XposedInstaller下载

http://repo.xposed.info/module/de.robv.android.xposed.installer

XposedBridged.jar下载

https://github.com/rovo89/XposedBridge/releases

2.安装XposedInstaller并激活

激活步骤: 启动XposedInstaller -> 框架 -> 安装更新 ->模拟器重启 (ps:模拟器会直接屏幕黑掉,直接结束进程即可,不行就反复试几下 )

激活后这里会有绿色的数字信息

安装XInstaller

1.XInstaller下载地址

XInstaller源码

https://github.com/pylerSM/XInstaller

XInstaller APK下载

http://repo.xposed.info/module/com.pyler.xinstaller

2.安装后启动一下,并在Xposed的模块中勾选,重启系统

3.配置XInstaller

3.1启动砖家模式

3.2设置调试应用

其他设置->调试应用

三.项目设置

1.生成smali文件

baksmali-2.0.5.jar 360.apk -o 360/projects/360/src

2.Android Studio导入项目

启动Android Studio->File->New->Import Project

选择上面生成的路径,选定src的上层目录

选择Create Project from existing sources

选择Make Directory AS->Sources Root

File->Project Structure  选择对应的SDK版本

配置调试选项

Run->Edit Configurations

四.开始调试

1. 方法一: 使用DDMS进行调试(一定要开启DDMS)

真机

a.勾选USB调试

b勾选USB调试通知

c.在开发者选项中->选择调试的应用->选择你要调试的程序->勾选等待调试器

d.启动程序,程序会停在等待调试器界面

此时ddms可以看到

Android Studio中对代码下好断点->Run->Debug->DebugOnly即可开始调试

Console控制台输出

Connected to the target VM, address: ‘localhost:8700‘, transport: ‘socket‘

调试截图如下:

2. 方法二:使用adb调试

在AndroidManifest.xml得到主Activity如下:

com.qihoo.antivirus.desktopclean.ui.DesktopQuickCleanActivity

调试启动目标程序

adb shell am start -D -W -n com.qihoo.antivirus/.desktopclean.ui.DesktopQuickCleanActivity

设置端口转发

adb shell ps | grep antivirus

u0_a36    5766  154   907116 29496 ffffffff b7544d11 S com.qihoo.antivirus

adb forward tcp:8700 jdwp:5766

PS:使用Windows自带的cmd将会找不到grep, 如果一定要用cmd,可以把cygwin和mingw64的路径添加到环境变量

Android Studio中对代码下好断点->Run->Debug->DebugOnly即可开始调试

实际测试方法二Droid4x上可以断下来

来自为知笔记(Wiz)

时间: 2024-11-09 03:16:59

1. Smalidea无源码调试android应用的相关文章

Smalidea无源码调试 android 应用

smalidea是一款 IntelliJ IDEA/Android Studio的 smali 插件 已有功能 语法高亮/错误提示 字节码级别调试 断点 单步调试 寄存器查看 本地窗口 java 语法支持,debug 模式下同样支持 支持跳转,方便追踪变量/函数/类.(Xref也支持) 查找用法 重命名 从 java 代码引用 smali 类 错误反馈... 安装 下载插件smalidea 进入IntelliJ IDEA/Android Studio开始安装插件,进入Settings->Plug

Android应用逆向——最好用的两个无源码调试器

要逆向分析并修改一个Android应用,首先是对APK进行解包和打包,这一部分网上资料铺天盖地,不再赘述了.值得一提的一点就是,如果apktool无法解包或打包的话,可以尝试国人在apktool基础上开发的ShakaApktool,另外也可以使用AndroidKiller这个工具,当然AndroidKiller内部是使用ShakaApktool来进行解包打包. 关于如何解包和打包.反编译为JAVA代码.修改smali代码的资料很多,按部就班做起来也比较简单.dex2jar.JD-GUI获得了反编

无源码调试smali

0x01    工具①Android Studio最新版.(用的1.5)②apktool尽量使用最新版的.(反编译本人用baksmali-2.1.3.jar)③smalidea插件.下载地址https://github.com/JesusFreke/smali/wiki/smalidea 0x02     具体步骤安装smalidea插件,选择File->Settings->Plugins,安装之前下载的smalidea插件. 以调试状态启动app (这一步不是必须的,可以先开启app)  

Android源码开发利器——Java源码调试(基于4.1.2)

原文地址:http://blog.csdn.net/jinzhuojun/article/details/8868038 调试Android Java源码 草帽的后花园--Neo 写在之前的话:这里主要是以调试Java源码为主,应该说是在system_process之后的源码,这对于调试和修改frameworks层的人来说真是一个利器,但至于为什么在system_process之后,我还在分析,如果有结果我会更新此文章,并正在尝试调试C++的代码,就是native中的代码,如果这个可行那将会大大

使用eclipse调试android的framework源码

http://www.eoeandroid.com/forum.php?mod=viewthread&tid=325492 这篇文章中的第3和第4章分别介绍了java和c/cpp代码的调试,调试可以大大减少log查看花费的工作量. (1)调试java代码已经验证过了,主要是在eclipse中建立一个相同package名的安卓应用工程, 工程目录中导入源码,并在java窗口打开:在DDMS中去指定要调试的thread,在Debug窗口打开源码设置断点: 如果目录结构能同包名,则可以直接调试 如果目

采用Reflector的VS.net插件断点调试无源码DLL 分类:

.Net的编程利器Reflector可以反编译基于.net开发的应用程序和DLL,其功能强大不用多说.今天想试验一把利用VS.net的插件断点调试外部无源码的DLL(只要是程序集都可以,所以exe也行)功能. 一.加载VS.net的Reflector插件 从官网下载的Reflector程序(最新版本为6.1.0)包中自带了VS.net的插件,名称为“RedGate.Reflector.Addin.dll”,打开Red Gate’s .Net Reflector程序,选择菜单Tools->Inte

利用 Chrome 开发者工具远程调试 Android 中的原生 WebView

之前写过一篇关于 Android Studio 断点调试技巧 的文章,但都是针对 Native 代码的调试,对于 Hybrid 开发模式下的 WebView 却无从下手.幸运的是,PC 中的 Chrome 浏览器提供的开发者工具能够帮助我们远程调试 Android 中的 WebView 加载的网页. Android 4.4 (KitKat) 开始,使用 Chrome 开发者工具可以帮助我们在原生 Android 应用中远程调试 WebView 网页内容.一起来看看怎么操作吧. 第一步,设置 We

gdb 远程调试android进程 -转

什么是gdb 它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C.C++代码. 它主要可以做4件事情: 随心所欲地启动你的程序. 设置断点,程序执行到断点处会停住.(断点可以是表达式) 程序被停住后,可以查看此时程序中发生的事. 动态改变程序的执行环境. GDB远程调试原理图 如图上所示,我们需要使用gdbserver依附到我们要调试的进程上,gdb通过adbd和手机上的gdbserver 进行socket通信. 远程调试实战 在手机上启动gdbserve

如何调试 Android 上 HTTP(S) 流量

转自: http://greenrobot.me/devpost/how-to-debug-http-and-https-traffic-on-android/ 如何调试 Android 上 HTTP(S) 流量 前面的话 在Android开发中我们常常会和API 打交道,可能你不想,但是这是避不开的.大部分情况下,调试发送网络请求和接收响应的过程都是十分痛苦的. 有多少次我们经过调试发现API的调用失败仅仅是因为我们的编码错了或者丢失了一个HTTP头部参数?在调试的过程中,我们发现出现错误的原