-
-
[讨论][分享]给大家分享一下这几年学习Android逆向遇到的环境问题吧,希望大家不要在这上面浪费时间(文章一直更新,也期待大家留言补充)
-
发表于:
2022-11-21 14:26
9681
-
[讨论][分享]给大家分享一下这几年学习Android逆向遇到的环境问题吧,希望大家不要在这上面浪费时间(文章一直更新,也期待大家留言补充)
adb驱动
首先我们电脑连接手机就是要使用adb驱动,
那么这个adb驱动是什么呢,在哪里呢
当我们下载Android studio的时候我们会下载一个sdk的目录:
我们的adb驱动就是在这个目录下的
然后当我们刷机的时候,这个驱动最好是经常更新到最新版本的,不然你会在刷机过程在遇到各种各样奇奇怪怪的问题,更新的地方在Android studio的这个位置:
我这里把我用的刷机网站记录一下吧,这个是需要付费的,想白嫖的xdm私信我,我冲完钱了:镜像地址,google官方也有的其实,如果想刷入su,就得下载twrptwrp
动态调试java层
这里非常简单,就是用ak反编译出一个项目,然后导入android studio中,但是你在Android studio中动态调试的时候需要导入一个smalidea插件
(安装插件File->Settings->Plugins->install plugin from disk->选择下载的zip包),没有这个插件我记得也有一些错误,导入的时候我记得是直接导入压缩包就行,不用解压
导入时直接导入这个project就可以了:
这个是smalidea链接:smalidea
这里其实没有什么大问题,但是调试so的时候就多了
我这里把文章写详细一点吧,不在引用其他帖子了,之前收藏的好多帖子都被删除找不到了
首先用ak反编译一下这个apk文件: ,然后找到project
(这里插一句,用完android killer 就关了,要不占用端口)
将这个poject导入Android studio:
然后加一个8700的remote:
然后挂起来:
用moniter记录端口:24121
还是用完moniter就把他关了,免得占用端口:
然后端口转发:
然后找到需要下断点的位置:
就能开始调试了:
点击这个小虫子也可以:
这样就可以调试了
动态调试so层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | C:\Users\ 86139 \Desktop\adb>adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
04e3926509d38d77 device
C:\Users\ 86139 \Desktop\adb>adb install E:\ 2022.07 .apk + re\ctf\apk\easy - dex\easy_dex.apk
1839 KB / s ( 597480 bytes in 0.317s )
pkg: / data / local / tmp / easy_dex.apk
Success
C:\Users\ 86139 \Desktop\adb>adb shell
shell@hammerhead: / $ su
su
root@hammerhead: /
cd data / local / tmp
root@hammerhead: / data / local / tmp
ls
as
frida
re.frida.server
root@hammerhead: / data / local / tmp
chmod 777 as
root@hammerhead: / data / local / tmp
. / as
|
再开一个cmd窗口:
1 2 3 | adb forward tcp: 23946 tcp: 23946
adb shell am start - D - n com.a.sample.findmydex / android.app.NativeActivity
|
提前下好断点:
然后用jdb挂接一下:
1 | jdb - connect com.sun.jdi.SocketAttach:hostname = localhost,port = 8700
|
这里经常出现一些问题,输入上面那个命令之前,一定要先打开moniter,
当你使用moniter看端口的时候,就会出来一些问题了,由于这个moniter是早期Android studio的工具(如果找不到早期版本的ddms的xdm私信我就行,之前的链接我找不到了),所以他支持的jdk的版本比较低,我这里使用的是jdk8,在往后的就不行了,之前的我没试验过,还有就是调试的时候关闭Android studio和Android killer,他们会占用端口:
这里我展示一下我配置的环境变量吧:
这里就是只有用ddms的时候换成jdk8就行了,其他的时候,我这里使用的android11的版本,所以还是用as自带的jdk的版本,要不编译的时候会出现问题:
然后执行完上面的命令之后:
还有就是ddms打开不显示应用进程的问题,我们可以这样解决
(修改ro.debuggable = 1):
1 2 3 4 | adb shell
su
magisk resetprop ro.debuggable 1
stop;start;
|
frida环境
首先第一个问题就是frida的版本和objection版本不匹配的问题,这里参考一下这个大佬的文章,找到了几个可以使用的frida+objection:
frida+objection
我使用的是这个对应的版本
1 2 3 4 5 6 7 8 9 10 11 12 | pip install frida = = 15.2 . 2
发布时间: 2022 07 21 ,是到 20220804 为止的最新版
pip install frida - tools = = 11.0 . 0
到 20220804 为止的最新版
Objection安装的前置条件:
python版本 > 3.4
pip版本 > 9.0
pip install objection = = 1.11 . 0
20220804 自动匹配的版本
|
然后我们如果想在windows下使用不同版本的frida版本我提供一种这样的方法吧:
首先用pycharm新建一个工作空间:
然后再工作空间的这个路径下安装frida,然后以后要是想使用这个版本的frida直接把路径切换到这里就可以了:
我们还可以编写一个这样的bat脚本文件,放在C:\Windows\System32这个目录下,下次使用的时候直接从命令行窗口打开就行了
如果想使用不同版本的frida直接按照上面的步骤来就行了
然后就是要编写js脚本了
这里我们首先需要安装一下nodejs,这个东西的作用就是帮我们进行代码自动补全,然后切换到我们编写js脚本的目录下面执行这条命令:
然后就会生成这三个文件
我们不要动他们就ok了,然后这样就可以编写js脚本了
虚拟机一定不要删快照!!!!!!
修改ro.debuggable
1 2 3 4 | adb shell
su
magisk resetprop ro.debuggable 1
stop;start;
|
ps:本篇文章持续更新,遇到问题就记录一下,也希望大家多多留言记录问题,免得在这上面浪费时间
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2023-6-23 23:15
被以和爲貴编辑
,原因: