关于安卓的调试方法(一)
Peanuts 移动安全 9792浏览 · 2019-04-12 01:20

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
1 条评论
某人
表情
可输入 255