关于安卓的调试方法(一)

2019-04-12 约 108 字 预计阅读 1 分钟

声明:本文 【关于安卓的调试方法(一)】 由作者 Peanuts 于 2019-04-12 09:20:00 首发 先知社区 曾经 浏览数 43 次

感谢 Peanuts 的辛苦付出!

smali语法简单介绍

  1. invoke-statio 执行函数
  2. move-result-object v1 执行结果放在v1
  3. invoke-virtual 执行一些函数存在返回值
  4. const-string v0 .. 定义变量v0=什么

简单记录下问题当突然adb找不到设备的时候可以执行adb kill-server and start-server一般就能够解决

关于smali的调试

first

apktools d .apk(反编译出安卓smail包,因为很多教程是用安卓killer但是我是mac系统所以也就用了apktools。

second
  1. 把其中的smail包改名为src然后放到别的文件中

  1. 打开android studio(这里我用的版本是3.3目前最新的,已经移除了android devices monitor,之前因为这个问题搞了好久)。把文件导入到其中。

这里一路点下去就行,选择create project选项即可。然后点开如下图即可。

  1. 然后打开android设备,这里我用的是网易mumu浏览器。利用adb命令输入adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity会开启调试模式

  1. 按照之前我看见的大佬的套路这部基本就是打开Android Devices monitor进行查看Oline值。但是我相信很多小白都遇到过找不到monitor(安装最新版后),我就是其中之一所以我选择利用命令行操作。==提示这里所谓的online值其实程序的PID值==(这里我用的是netstat -p因为我不太熟悉他的名字,如果读者熟悉名字可用ps | grep 名字)

接着执行命令进行一个端口的转发(tcp为之后我们remote的端口,jdwp在monitor里脚online值这里就是pid,端口可以任意转变)
adb forward tcp:8700 jdwp:1599(其中可能会有些端口占用问题换一个就可以了)

  1. 接下来继续在AS中设置先设置端口,然后设置名字,接着改端口既可以ok了。

  1. 接着设置File->project structs,接着设置sdk即可。

  1. 下断点然后运行调试,接下来就完成了设置和调试了。

在smali文件中插入log

简单记录一下利用apktools的整个过程。
apktool b 反编译后的文件夹 -o 生成apk名称.apk
jarsigner -verbose -keystore 签名名称 -signedjar 签名后Apk.apk 需要签名Apk.apk 签名别名

简单演示
打印字符串

反编译出smali文件。利用log打印来获取我们所想要的信息。

  1. 这里我写了一个switch语句,读者可以自己也写一个试试,然后利用log打印一些信息。

  1. 反编译成smali查看,这里就不多说其中的语法细节了,可以看见存在一个log信息打印的段,接下来我们复制这个段并且更改其中的数据。

  1. 这个时候编译回去并且进行签名安装,这个时候利用adb指令adb logcat | grep "Hello"就可以查看我们改过的程序的log信息。

可以发现我们已经成功打印了!

打印寄存器信息

这里是比较有用的操作了。

  1. 首先写一个Demo来测试

  1. 还是一样的套路查看一下smail文件来进行打印

  1. 接下来我加入几句话来进行一个fun2 和fun3参数的打印

  1. 接下来一波编译签名安装看看我们修改成功了没。就大功告成了。
    #### 总结
    入门安卓分享记录下自己的学习心得,大佬勿喷。
    参考链接:
    https://www.52pojie.cn/thread-658865-1-1.html

关键词:[‘技术文章’, ‘技术文章’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now