day1:linux基础命令与Android环境基础知识

 

一.学习linux 命令

借助Vmwore workstation 基于Ubuntu20.04

1)运用apt-get install/remove 指令继续类似windows的软件包安装与管理

更换下载源,以及科学上网两种方法

a. 命令行

修改 /etc/apt/sources.list 文件

sudo apt-get update 更新源

b.图像化

关于->软件更新 -> 下载自 -> 其他站点 -> aliyun

2)了解三种网络连接

桥接:直接与真机连接,有独立的ip地址,占用同一网段ip(eg:本机与虚拟机均192.168.3.xxx)

【*】一般逆向调试选用这个方式

缺点:不适合同一网段存在大量网络设备环境下使用,易造成IP冲突

NAT模式:

使用VMnet8网卡,可以与主机和外网通信,不占用IP地址,不易造成IP冲突

(eg:本机192.168.3.xxx 虚拟机192.168.98.xxx)

Host-only:

使用VMnet1网卡,只能与主机通信(主机可以ping通虚拟机,虚拟机ping不通主机【网络不可达】)

3)常用命令:

a.Ubuntu下超级用户root

sudo passwd 更新root密码

b.cd

cd xxx 切换到指定目录

cd ~ 切换到自己的用户目录

. 和 ..

cd .. 切换到上级目录

c.相对路径与绝对路径

pwd显示的是当前目录的绝对路径

d.命令其实是bin下的二进制文件

【*】Linux中一切皆文件(包括硬件)

明白可执行文件之所以在任意目录下均可使用是有$PATH

echo $PATH (打印当前环境变量的值)【环境变量是PATH,$表示引用,echo表示打印输出】

image-20230905211911133

通过命令去修改创建软连接的方式是临时的,重启就没了,想永久生效,需写入配置文件

e.ls

ls -a 显示所有目录和文件(包括隐藏文件)

【创建隐藏文件touch .a】

ls -al / ll 显示详细信息

ls -alh / ll -h 统计[区别于al:会计算文件大小,将比特进行转换(eg:将4096->4k)]

f.创建touch,mkdir

touch xxx 创建空文件/更新文件状态

eg:mkdir aaa

mkdir aaa bbb 同时创建多个目录

mkdir -p aaa/bbb 递归创建

g.删除 rmdir,rm

rmdir xxx 删除空目录

rm xxx 删除文件

rm aaa bbb 同时删除多个

[rm * 表示删除所有]

rm -f xxx

rm -rf xxx

-r 递归删除整个目录

-f 强制删除且不提示确认信息

h.复制cp

cp a /tmp 将a复制到tmp目录名称不变

cp a,b /tmp 复制a,b多个文件

cp a /tmp/b 将a复制到tmp目录名称改为b

cp -r a b 复制目录 需要加-r

-p 保持文件属性(可读可写可执行)

-r 递归复制整个文件夹

i.移动mv

mv oldName newName 移动文件(目录不变)重命名

mv oldName /tmp/newName 移动文件同时重命名

mv oldName /tmp 移动文件不改名

j.history

history 看执行过的历史命令

k.grep 匹配

-n 显示行号

-i 忽略大小写匹配

-r 递归查找(可以匹配到子目录下文件里的内容)

【eg:grep -n Mist /home/hello】输出home目录下hello文件里与Mist有关的行号和该行内容

【eg:grep -l Mist *】匹配该目录下所以文件中包含Mist的文件名

l.打印文件内容cat

cat hello 查看hello文件内容

cat -n hello 显示行号

m.管道命令

一般组合使用,用于高效的从大量信息中筛选有效信息

【eg:】cat -n hello |grep Mist

【eg:】sailfish:/#logcat |grep Mist

【eg:】 sailfish:/#ps -A|grep Mist

n.软链接

类似Windows的快捷方式(存放链接其他文件的路径)

  通过ln -s 对原文件或目录进行软链接

image-20230905215640203

(将python与python3绑定)

o.查找文件/目录

find /home -name hello 指定目录,递归查找文件

p.压缩与解压缩

gzip----gunzip

gzip 文件

gunzip 文件.gz

zip----unzip

zip -r xxx.zip /home/

unzip -d /opt/tmp /home/xxx.zip

-r: 递归压缩,即压缩目录

-d 目录: 指定解压后文件的存放目录

tar(针对.tar.gz格式)【*安卓源码一般就用tar】

tar -zcvf myhome.tar.gz /home/ 压缩

tar -zxvf myhome.tar.gz 解压

tar -zxvf /home/myhome.tar.gz -C /opt/tmp 解压到指定目录

-z 用gzip进行压缩或解压

-x 从压缩的文件中提取文件

-c 产生.tar打包文件

-v 显示详细信息

-f 指定压缩后的文件名

q.权限(通过ls -l显示)

lrwxrwxrwx 1 root root 8 May 29 04:09 sbin -> usr/sbin

第一个root 表示用户,第二个root表示组

第0位确定文件类型

-是普通文件

I是链接,后面会用 -> 打印出指向的真实文件

d是目录, 相当于windows的文件夹

c是设备文件,鼠标,键盘 /dev

b是块设备,比如硬盘 /dev

第1-3位确定所有者拥有该文件的权限

第4-6位确定所属组拥有该文件的权限

第7-9位确定其他用户组拥有该文件的权限

    rwx:可读可写可执行【**r=4,w=2,x=1**】

chmod进行修改(种方法)

1)+ = -

u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)

chmod u=rwx,g=rx,o=x hello文件/自录名

chmod o+w hello文件/目录名

chmod a-x hello文件/目录名 所有人都不可以执行该文件

2)通过数字

chmod 777 hello 所有人都对hello文件可读可写可执行

4)Linux常用目录

/etc 默认配置文件保存位置

/mnt 用来临时挂载别的文件系统,比如U盘、移动硬盘

/proc 虚拟文件系统,内容都是动态创建的,访问这个目录来获取系统和进程信息

【*】软件可以通过proc中的进程信息的检测来检查是否被调试

二.安卓环境及相关基础知识

安装Androidstudio,配置jar和下载相关sdk,cmake等 选empty项目开始第一次学习

真机Google pixel

image-20230905222326622

1)adb

a.工作原理

image-20230905220829294

client端将命令发送给server端

server端会将命令发送给daemon端

daemon端进行执行

将执行结果,返回给server端

server端将结果再返回给client端

b.adb常用命令

adb version 查看adb版本信息

adb start-server/kill-server

adb devices 显示当前连接的设备列表

adb (-r )install xxx.apk 通过adb安装app -r 覆盖安装

adb uninstall xxx.apk 通过adb卸载app

adb push xxx xxx推送电脑文件到手机

adb pull xxx xxx 从手机拉去文件到电脑

adb shell 从cmd进入手机的Linux控制台

adb -s 设备名 shell -s 在多台设备时,指定设备

2)包名的几种获取方式

a)借助jadx,jeb对app反编译,查看其清单文件(xml格式文件)

b)借助ps -A

c)通过shell命令

【注意在什么环境下执行的命令,Windows环境下筛选用findstr,Linux环境下用grep】

·adb shell dumpsys window windows |findstr mFocusedApp

·adb shell

dumpsys window windows |grep mFocusedApp

【*】需要保持app打开在最前端

3)app界面控件的查看

为何要查看界面控件?

原生方式开发的app,使用Java和C++开发,加密用的是Java和C++

H5的app,使用Webview控件加载网页,加密用的是JS

app自动化测试,需要知道控件的id,或者说需要定位到控件

a)借助工具 uiautomatorviewer.bat

位置在Android SDK根目录\tools\bin

b)使用Appium查看

Appium的配置 1)安装Java SDK 2)配置android SDK 3)设置ANDROID_HOME环境变量

进入软件后配置:

image-20230905222639850

【*】注意platformVersion,是手机Android的版本

deviceName:根据真机数据进行配置(通过adb devices查看)

image-20230905222749638

既然,可以通过截屏来检测何种方式开发,肯定也有方式来阻止

【禁止截屏】

activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

image-20230905223449817

【*】当然也可以通过hook,来hook掉这段代码,注意FLAG_SECURE=8192。

activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);[解除禁止截屏]

采用此方法hook要注意hook的时机,要在addflags之后

4)logcat 打印日志

adb logcat -help 查看帮助

adb logcat 常规显示

adb logcat -c 清除日志

adb logcat -g 显示缓冲区大小

adb logcat -G 256M 修改缓冲区大小

a.根据tag过滤日志

adb logcat -s Mist 过滤出日志中包含标签Mist的内容

image-20230905223829989

b.根据pid过滤

ps -A |grep com.mist1.myapplication(此次替换成pid) 获取进程的pid(Linux命令)

adb logcat |findstr mist (Windows命令)

5)android扫盲

可以在proc中看临时的文件

image-20230906122542787

进入以后可以查看当前进程内部的一些信息,可以查看监听的端口(先cd net,再cat tcp);

image-20230906123619213

也可以查看加载了那些so,在maps里(cat maps);

image-20230906123703163

还可以检测是否被调试,通过stat(cat stat,看是S(休眠),还是T(被调试))

image-20230906123744665

一般,通过status(cat status) 中的state是否为T判断是否被调试,同时TracePid是否为0(0则表示没有)来判断是否被调试

image-20230906123831579

【*】/system/lib:存放32位so;/system/lib64:存放64位so;

如果一个app只有32位so,没有64位so,也可以在64位的手机上运行;

a.apk 结构

assets 资源文件(图片、音频、数据库、网页、配置文件等)

res 资源文件,需要编译(布局)

lib 各种平台下使用的对应的so文件

META-INF 签名文件(校验)

resources.arsc 资源加密(语言包)

AndroidManifest.xml 清单文件(图标、界面、权限、入口)

classes.dex 源代码(一个dex文件最多包含65535个方法,超过了就有classes2.dex)

b. data目录下

data/app目录 用户安装的app存放在这个目录下

data/local/tmp 临时目录,权限比较大

system/app目录 存放系统自带的app

system/lib目录 system/lib64目录 存放app用到so文件

system/bin目录 存放shell命令

system/framework目录 Android系统所用到框架,如一些jar文件,XposedBridge.jar

sd卡目录 不管手机有没有存储卡都会有这个目录 权限比较大,但是app操作sd卡目录需要申请权限

四种进入方式

/sdcard -> /storage/self/primary

·cd /sdcard

· cd /storage/self/primary

·cd /storage/emulated/0

·cd /mnt/sdcard

image-20230906130134664

下载的文件存放位置/storage/emulated/0/Download,此目录可以直接拖出文件到电脑端

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值