一. 开始调试
smali调试从最早的重打包用各种JAVA IDE进行调试, 到后来的可以不用重打包用xposed插件, 在到最后的修改系统源码刷机或者修改boot.img刷机一劳永逸
apk可调试可以为下面几个点满足一个几个, 
1. invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
2. AndroidManifest.xml中Application注明android:debuggable为true
3. 修改系统/system/build.prop或者default.prop让ro.debuggable=1即可调试所有进程,然而直接修改会出现问题
          linux系统下可以用getprop和setprop命令来读写, Android系统下只能读取, 
          Android下可以通过System.getProperty("ro.debuggable");来获取指定的属性
system/build.prop和default.prop,都是init进程来进行解析的, 这些ro开头的属性信息只能init进程进行修改
所以对于ro.debuggable属性我们可以
         ①. 修改系统源码, 编译android源码,然后刷入到设备中
         这个过程我已经做成功过了,参考之前的文章<<编译android源码绕过反调试>>

        ②. 直接导出手机里面boot.img, 然后修改里面的ro,debuggable, 然后刷机回去(对于第三方没有源码的手机这样做是有意义的)
        我没有做过, 看雪上有人做过了
        <<修改Nexus5的boot.img - 打开系统调试>>

         ③. 第三用一些别人写的第三方工具
         比如mprop, 这个的原理是注入到init进程进行修改
         当然需要root权限, 开启selinux之后, 可能需要忽略安全策略选项
         可能不兼容所有的android设备, 当然肯定是需要root权限的
         
         或者使用xposed的插件, tx应急安全响应中心有一个dbopener也可以实现类型的效果
         之前网上流行的smalidea无源码调试android程序估计也是类似的方法, XInstaller插件

总结一下就是: 
方法3不用重打包, 方法1, 2都需要重打包
我们熟悉了解调试的流程, 我们就可以在流程上做手脚, 来进行反调试, 当然如何进行反调试又是另外一个话题了

重打包的话, 可以看我之前写的一个脚本程序, 可以一键重打包, 当然脚本写的还不够完美
<<一键调试脚本的使用>>

启动并等待调试器
安装完apk之后, 我们可以通过adb shell命令调试的方式启动apk
adb shell am start -D -n 包名/主Activity

二. 映射原理
adb shell ps | grep antivirus                                                                                                    
u0_a36    5766  154   907116 29496 ffffffff b7544d11 S com.qihoo.antivirus
adb forward tcp:8700 jdwp:5766

这里说明下为什么要这样做, 该命令的格式如下:
adb forward [协议名]:[本地端口号] [协议名]:[远程端口号]
这样就完成了一个映射关系, 发到远程端口的数据都会映射到本地指定的端口上,实质上就是客户端和服务端的关系

8700端口号可以随便给, 比如你需要用Android Studio来链接调试器, 就在配置远程调试器界面加上
刚刚那里映射为8700 AndroidStudio里面就填多少

当然也可以使用DDMS, ddms会默认从8600开始映射列表起第一个app 
不过ddms和手动adb forward会有冲突, 开启ddms之后就会出问题

当然建议用第一种方法, 这样可以写成脚本完成自动化, 当然这样就需要注意使用logcat了

小贴士:
当我们adb forward了很多次之后, 我们可以使用如下命令来管理
adb forward --list  查看当前所有映射关系
adb forward --remove--all   移除所有映射管理
adb forword --remove tcp:8700 移除本地指定映射关系

之后就可以开始调试了







 
















smali调试总结的更多相关文章

  1. Netbeans 6.8 + apktool_2.0.0b9 动态调试smali文件

    前言 很早就知道用Netbeans能够单步调试smali,一直拖到现在才真正的自己实现了一次~ 下面是详细步骤! 0×1 环境及工具 a.apktool_2.0.0b9 下载地址:http://con ...

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

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

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

    一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk  主要采用的是静态方式,步骤也很简单,首先使用 ...

  4. Android studio动态调试

    Reference:  http://cstsinghua.github.io/2016/06/13/Android%20studio%E5%8A%A8%E6%80%81%E8%B0%83%E8%AF ...

  5. android smali代码注入 实战一

    有同学在通服里面干活,最近一直忙着4g基站搭建的干活,测试设备(android)测量移动网络数据,没有自动保存记录的功能,只能手动记录各种测试参数,不知道测试软件供应商是怎样想的,竟然不提供的这样的功 ...

  6. apktool动态破解apk

    那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围.当然动态方式很多,所以这里就分 ...

  7. Android Stdio 调试Smali

    一 安装插件 1)Android stdio 安装插件 二 反编译smali 1)java -jar baksmali-2.1.2.jar app-debug.apk -o test/src2)and ...

  8. apk逆向 - smali动态调试

    author: Dlive date: 2016/10/6 0x00 前言 ​ 之前有人问过smali的动态调试方法,其实网上已经有很多文章讲这些内容,但是为了方便大家学习,我还是写一下让大家少走点坑 ...

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

    安卓动态调试七种武器之长生剑 - Smali Instrumentation 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是 ...

随机推荐

  1. OLTP(on-line transaction processing)与OLAP(On-Line Analytical Processing)

    OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...

  2. C/C++ 标准输入输出重定向

    转载自:http://www.cnblogs.com/hjslovewcl/archive/2011/01/10/2314356.html 这个对经常在OJ上做题的童鞋们很有用.OJ基本都是用标准输入 ...

  3. [转]ExtJs入门之filefield:文件上传的配置+结合Ajax完美实现文件上传的asp.net示例

    原文地址:http://www.stepday.com/topic/?459 作文一个ExtJs的入门汉子,学习起来的确是比较费劲的事情,不过如今在这样一个网络资源如此丰富的时代,依然不是那么难了的. ...

  4. [速记]关于指针,引用和递归和解递归——C++

    在写基于二叉排序树的查找时,分为三个过程 1.二叉排序树的插入 2.二叉排序树的建立 3.基于二叉排序树的查找 其中第三部可以递归方式实现,也可以用while循环解递归,于是我想也解解第一步的递归,看 ...

  5. git的详细说明文档

    http://www.ihref.com/read-16369.html fork 后如何保持同步 http://www.tuicool.com/articles/6vayqen git clone ...

  6. centos在线安装svn

    centos在线安装svn 用下列命令安装svn服务 yum install subversion 创建svn版本库目录 mkdir -p /var/svn/svnrepos 创建版本库 svnadm ...

  7. [bigdata] 使用Redis队列来实现与机器无关的Job提交与执行 (python实现)

    用例场景: 定时从远程多台机器上下载文件存入HDFS中.一开始采用shell 一对一的方式实现,但对于由于网络或者其他原因造成下载失败的任务无法进行重试,且如果某台agent机器down机,将导致它对 ...

  8. YII Install 安装

    Download     Yii is an open source project released under the terms of the BSD License. This means t ...

  9. Echarts 饼图标题文字换行问题

    var option = { title : { text: '数据来源', x:'center' }, tooltip : { trigger: 'item', formatter: "{ ...

  10. SQL Server 2016正式版安装(超多图)

    微软数据库SQL Server 2016正式版在2016年6月就发布,由于近期工作忙,一直拖到现在才有时间把安装过程写到博客上,分享给大家.本人一直习惯使用英文版,所以版本和截图都是英文版的.废话少说 ...