smali调试总结

一. 开始调试
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 移除本地指定映射关系

以后就能够开始调试了







 


















相关文章
相关标签/搜索