一.安装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下载
 
2.安装XposedInstaller并激活
激活步骤: 启动XposedInstaller -> 框架 -> 安装更新 ->模拟器重启 (ps:模拟器会直接屏幕黑掉,直接结束进程即可,不行就反复试几下 )
激活后这里会有绿色的数字信息
 
安装XInstaller
1.XInstaller下载地址
XInstaller源码
XInstaller APK下载
 
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上可以断下来

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

  1. android加固系列—4.加固前先学会破解,无源码调试apk

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] 项目关键java代码为,将tv设置为从jni读取的字符串,这里的破解内 ...

  2. APK程序Dex文件无源码调试方法讨论

    那些不靠谱的工具 先来说说那些不靠谱的工具,就是今天吭了我小半天的各种工具,看官上坐,待我细细道来.IDA pro IDA pro6.6之后加入了dex动态调试功能,一时间普天同庆.喜大普奔.兴奋之后 ...

  3. JEB 无源码调试 以dvm smali字节码方式,Demo尝试

    关于调试器看不到进程,无法attach的问题,网上也有很多教程,基本是修改ro.debugable =1  ,ro.secure = 0 让adbd有root权限 attach到其他进程,涉及到要修改 ...

  4. 无源码调试smali

    0x01    工具①Android Studio最新版.(用的1.5)②apktool尽量使用最新版的.(反编译本人用baksmali-2.1.3.jar)③smalidea插件.下载地址https ...

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

    .Net的编程利器Reflector可以反编译基于.net开发的应用程序和DLL,其功能强大不用多说.今天想试验一把利用VS.net的插件断点调试外部无源码的DLL(只要是程序集都可以,所以exe也行 ...

  6. windbg源码驱动调试 + 无源码驱动调试

    windbg源码驱动调试   环境信息 虚拟机:win7 32位 windbg:6.12(版本不存在太大影响) 设置过程 windbg与虚拟机连接:链接 配置windbg 配置好双机调试后,点击win ...

  7. Android FrameWork 学习之Android 系统源码调试

    这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会 ...

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

     原文地址:http://blog.csdn.net/jinzhuojun/article/details/8868038     调试Android Java源码 草帽的后花园——Neo 写在之前的 ...

  9. Android FrameWork学习(二)Android系统源码调试

    通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android 系统源码,今天 ...

随机推荐

  1. jQuery简单实现iframe的高度根据页面内容自适应的方法

    同域下: //注意:下面的代码是放在和iframe同一个页面中调用 $("#myiframe").load(function () { var myiframeH = $(this ...

  2. Oracle VM Virtual

    版本5.xx不能导入 要用旧版的4.3.10

  3. git push.default is unset

    warning: push.default is unset; its implicit value is changing inGit 2.0 from 'matching' to 'simple' ...

  4. Java操作Oracle

    public class DBCon { // 数据库驱动对象 public static final String DRIVER = "oracle.jdbc.driver.OracleD ...

  5. jsonp解决CORS问题

    jsonp是个机智的解决办法: 1.本地页面写个js方法 <script> function abc(data) { alert(data.result); } </script&g ...

  6. H5 使用

    关闭页面 http://www.bcty365.com/content-146-3343-1.html 回退页面: plus.key.addEventListener('backbutton', fu ...

  7. Sublime Text 2 快捷键 (windows)

    转自:http://istyles.blog.163.com/blog/static/1811003892011828111418654/ Lucifr翻译了 Sublime Text 2 快捷键 M ...

  8. jQuery源码-jQuery.fn.attr与jQuery.fn.prop

    jQuery.fn.attr.jQuery.fn.prop的区别 假设页面有下面这么个标签,$('#ddd').attr('nick').$('#ddd').prop('nick')分别会取得什么值? ...

  9. Nginx安装配置(转)

    Nginx 安装配置 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/ ...

  10. 大数据之pig 命令

    1.pig与hive的区别 pig和hive比较类似的,都是类sql的语言,底层都是依赖于hadoop    走的mapreduce任务.    pig和hive的区别就是,想要实现一个业务逻辑的话, ...