一.安装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. 入门:JavaWeb Cookie

    总结: JavaWeb 利用Cookie 存储在本地用户名和密码,设置Cookie的生存时间. 两个页面,一个登陆页面,一个登陆后的页面,在登陆页面选择是否保存Cookie(保存Cookie,下次自动 ...

  2. Django开发web环境搭建的简单方法(CentOS6.5环境)

    这几天跟Linux下的Python + Django环境搭建卯上了.经过几天的琢磨,找到了一条自己认为给力的路径. 这里给出命令行,过程如下: 首次登陆,切换管理员: [web@bogon ~]$ s ...

  3. 跟着ttlsa一起学zabbix监控呗

    本章转载至:http://www.ttlsa.com/zabbix/follow-ttlsa-to-study-zabbix/ 虽然接触zabbix时间很长,但是中间相当一段时间没去配置,这次算是重新 ...

  4. PHP 短连接生成

    <?php #短连接生成算法 class Short_Url { #字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQR ...

  5. Spring之FactoryBean

    首先要分辨BeanFactory 与 FactoryBean的区别, 两个名字很像,所以容易搞混 BeanFactory: 以Factory结尾,表示它是一个工厂类,是用于管理Bean的一个工厂 Fa ...

  6. [CentOS]添加删除用户

    摘要 在安装CentOS的时候,我们只设置了root,类似windows的超级管理员.当然我们在工作的时候,为了安全考虑,不可能对外开发root,一方面是从安全的角度,另一方面也是方便管理. 添加删除 ...

  7. asp.net中使用单例

    摘要 有这样一个service,需要运行的asp.net站点上,但要保证这个实例是唯一的.单例用来启用聊天机器人,保证唯一,以免启动多个,造成客户端发送消息的时候,会造成每个机器人都发送消息,app收 ...

  8. 【转】Flume日志收集

    from:http://www.cnblogs.com/oubo/archive/2012/05/25/2517751.html Flume日志收集   一.Flume介绍 Flume是一个分布式.可 ...

  9. netstat miscellaneousness

    netstat -a (--all) : show both listening and non-listening sockets 默认是不显示正在侦听的进程,只显示已经established的 n ...

  10. CF455C Civilization (并查集)

    CF456E Codeforces Round #260 (Div. 1) C Codeforces Round #260 (Div. 2) E http://codeforces.com/conte ...