最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

adb与安卓shell

业界 admin 2浏览 0评论

以下待测试,隔了好些年,新的安卓版本可能无效

adb 安装与卸载

#安装adb
mount -o remount,rw /system
cp -f '/data/app/crixec.adbtoolkitsinstall-1/lib/x86/libadb.so' '/system/bin/adb'
cp -f '/data/app/crixec.adbtoolkitsinstall-1/lib/x86/libfastboot.so' '/system/bin/fastboot'
setprop service.adb.tcp.port 5555
stop adbd
start adbd
setprop service.adb.tcp.port 0000
stop adbd
#卸载adb
rm -f /system/bin/adb /system/bin/fastboot 2>>/dev/null
rm -f /system/xbin/adb /system/xbin/fastboot 2>>/dev/null
rm -f /vendor/bin/adb /vendor/bin/fastboot 2>>/dev/null

adb 使用

nox_adb.exe connect 127.0.0.1:62001 #夜神
adb install a.apk
adb uninstall com...
adb push ./1.txt /mnt/sdcard/  #推送到设备
adb pull /mnt/sdcard/1.txt /C:/ #拉到电脑
adb forward tcp:23946 tcp:23946	#端口转发,远程端_设备端
adb jdwp					 #查看设备中可以被调试的应用的进程号
adb root
mount
mount -o remount -o rw /system
mount -o remount -w /dev/block/mmcblk0p1 /system

adb -s 127.0.0.1:5555 shell
am start com.android.camera/com.android.camera.CameraActivity #启动app
ps grep 包名 -> kill -9 PID #kill
am force-stop com.android.camera #关闭

am start -D -n  com.z.h		 #以调试方式启动应用
am startservice -n [包名/服务名]	#启动一个服务
am broadcast -a android.NET.conn.CONNECTIVITY_CHANGE	#发送一个广播

tcpdump host 192.168.1.5 and not 192.168.1.7	远程/本机

adb 其他功能

# adb超作一些进程
adb shell `am force-stop com.qiku.healthguard` #关闭 360健康卫士

am start -n com.android.settings/com.android.settings.ChooseLockGeneric --ez confirm_credentials false --ei lockscreen.password_type 0 --activity-clear-task
#来自 解锁失败或安装不成功请运行(迷图神器)
#2013年12月公布,影响4.3及以下所有系统,漏洞产生于com.android.settings.ChooseLockGeneric这个Activity中,一个名为mPasswordConfirmed的boolean被暴露,导致可以从外部触发解锁进程而无需确认解锁密码,具体看下面的分析:
# com.android.settings.ChooseLockGeneric是负责更改系统的解锁方式的类,在用户要更改原先的锁定图案或密码时,需要进行重输确认, 确认后mPasswordConfirmed的值为true,但这个参数被暴露,以至于可以从外部更改,使得系统误认为已经确认了密码,从而清除锁屏

shell 环境

远程JVM,临时开启调试模式,重启手机失效
su
magisk resetprop ro.debuggable 1 # 重置调试模式为1,重启手机失效
stop;start; #一定要通过该方式,重启 Android中注册的所有服务ServiceManager
getprop ro.debuggable #查看 调试模式状态、备版本号、系统属性等
getprop ro.product.model
状态检测
netcfg						#查看设备ip
netstat						#查看设备的端口号信息
ime list -s 				#查看当前存在的输入法
ime set com.android.tvremoteime/.IMEService #切换输入法

logcat -s tag			    #查看并过滤tag日志:logcat | grep tencent
logcat | findstr com.z.h/pid/keyword
screencap -p /sdcard/1.png	 #截图
screenrecord  /data/local/tmp/1.mp4	 #录屏
input text 'hello'			 #输入信息到文本框
input touchscreen swipe 170 200 170 200 3333 #模拟点击
wm size					    #获取当前分辨率
wm size 3840x2160			#设置
top
top [-n/-m/-d/-s/-t] #查看当前哪些应用的cpu消耗信息
 -m # 最多显示多少个进程
 -n # 刷新次数
 -d # 刷新间隔时间(默认5秒)
 -s # 按哪列排序
 -t # 显示线程信息而不是进程
top –d –m 10 |grep cn.wjdiankong.demo #用grep过滤应用信息,查看他的当前cpu使用率。
pm
pm list package 			 #获取包名
pm list package -3 			 #列出第三方应用
pm install/uninstall /sdcard/1.apk	#安装/卸载(-k:卸载软件但是保留配置和缓存)
pm clear com.z.h			#清空应用数据
pm set-install-location 0	 #查找安装apk的位置 默认0[auto]
run-as	com.z.h				#在非root设备中查看指定debug模式的包名应用沙盒数据
dumpsys
dumpsys activity top		 #得到这个页面的activity名称
dumpsys package com.z.h		 #包文件清单
dumpsys meminfo com.z.h/11976 #查看指定进程名或进程id的内存信息
dumpsys dbinfo  com.z.h		 #查看指定包名的数据库存储信息(包括存储的sql语句)
cat /proc/[pid]/maps 		#查看当前进程的内存映射信息,比如加载了哪些so文件,dex文件等
cat /proc/[pid]/status 		#查看进程的状态信息,如TracerPid
cat /proc/[pid]/net/tcp/tcp6/udp/udp6 #查看当前应用使用的端口号信息
app_process
app_process 运行代码目录 #运行Java代码
export CLASSPATH=/data/demo.jar
  exec /system/bin/app_process /data/cn.wjdiankong.Main
想启动一个jar包:需要用dx命令把dex文件转化成jar包功能,实际上他不是一个正常的jar包了,而是一个包含了classes.dex文件的压缩文件了。
dalvikvm
dalvikvm –cp /data/demo.dex #运行一个dex文件
dalvikvm –cp /data/demo.dex cn.wjdiankong.Main
有时为了测试一个dex文件功能可以用到,和上面的命令有很大相似之处,只是运行的文件不一样。
dexdump
dexdump D:\classes.dex #查看apk中dex文件的详细信息,有时候也没必要反编译,可以直接用这个命令即可

开机自启shell脚本

1.启用路由器自带的防火墙,把这嗅探出的ip加入屏蔽规则就成了

chmod 777 /system/etc/adblock.sh
 #! /system/bin/sh
 iptables -I INPUT -s 223.6.253.51 -j DROP
 iptables -I OUTPUT -s 223.6.253.51 -j DROP
sh adblock.sh

#让这段脚本开机自动运行,三种方法
1 修改init.rc,添加一行service即可。
   说这话的人纯属没长脑子,init.rc只是ramdisk.img在内存中的镜像而已,每次修改后开机会重新复原,唯一改动的办法是修改固件后重新刷机,你想让电视变砖吗?
2 修改/system/etc/install-recovery.sh,把adblock.sh的内容添加进去。
   这招在其他安卓平板上可行,可TMD创维在init.rc里把install-recovery.sh给注释掉了,此路不通也。
3 把shell脚本放在/system/etc/init.d目录下,开机就会自动运行。
   你以为这是三星手机啊!这个目录根本就不存在!这个功能早就被创维扣掉了。

2.写一个app,用来调用adblock.sh,把它做成开机自动运行

//方法二的代码给出一段,待测试
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("./system/etc/adblock.sh");
try {
    if (proc.waitFor() != 0) {
        System.err.println( proc.exitValue());
    }
} catch (InterruptedException e) {
    System.err.println(e);
}
----------------------
<receiver android:enabled="true" android:name=".BootBroadcastReceiver"    
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">     
    <intent-filter>     
    	<action android:name="android.intent.action.BOOT_COMPLETED" />     
        <category android:name="android.intent.category.DEFAULT" />     
    </intent-filter>     
</receiver>
----------------------
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
----------------------
// BootBroadcastReceiver.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootBroadcastReceiver extends BroadcastReceiver {
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(ACTION)) {
            Intent mainActivityIntent = new Intent(context, MyActivity.class); 
            mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mainActivityIntent);
        }
    }
}

appt 相关

aapt dump badging app.apk #获取Apk包名和入口Activity
aapt dump xmltree demo.apk AndroidManifest.xml #查看apk中资源文件的信息以及编辑apk程序包
# 替换apk中的文件
aapt remove -v vue.apk res\drawable-xxhdpi-v4\stamp_logo.png
aapt add -v vue.apk res/drawable-xxhdpi-v4/stamp_logo.png

root 备份 rec.img

#高通芯片,shell模式下
dd if=/dev/block/platform/msm_sdcc.1/by-name/recovery of=/sdcard/recovery.img #revoery链接到/dev/block/mmcblk0p16 这个分区块,因此也可以:
dd if=/dev/block/mmcblk0p16 of=/storage/sdcard/recovery.img
 
#MTK芯片,2种方式:
dd if=/dev/recovery of=/storage/sdcard/recovery.img bs=1024 count=6144
dd if=/dev/block/mmcblk0 of=/storage/sdcard/recovery.img skip=xxxx bs=1024 count=6144
# bs:固定1024,count:cat /proc/dumchar_info 对应的recovery来确定(高通平台没有dumchar_info这个文件),
#比如size列为0x600000,那么count的值为6144,也就是6M,如为0x700000,那么count的值为7168,也就是7M大小。
#skip:偏移,MTK平台recovery和boot等都在一个相同的分区中,通过地址偏移量来区分,这就是为什么高通平台不需要执行bs 和count的原因。

#Nvidia芯片
ddif=/dev/block/platform/sdhci-tegra.3/by-name/SOS of=/storage/sdcard/recovery.img 

abootimg 解打包 rec

apt-get install abootimg
解包
abootimg -x recovery.img #bootimg.cfg、zImage、initrd.img
abootimg-unpack-initrd initrd.img #./ramdisk/
打包
abootimg-pack-initrd initrd_new.img ramdisk/ #比之前大则需要修改bootimg.cfg中bootsize大小
abootimg --create recovery_new.img -f bootimg.cfg -k zImage -r initrd.img

#解BL锁
fastboot oem get-bootinfo,将显示当前手机bootloader的状态信息
fastboot oem unlock
fastboot oem unlock 1234567812345678 16位解锁密码
fastboot flash recovery recovery.img

# default.prop 文件
ro.secure=0 关闭保护 
ro.allow.mock.location=1 
persist.service.adb.enable=1 adb远程开

# bootimg 工具
bootimg --unpack-bootimg 解包 boot.img
bootimg --unpack-ramdisk 解包 ramdisk.gz // cd initrd :ro.secure=0,意为关闭保护
bootimg --repack-ramdisk 打包 ramdisk.gz
bootimg --repack-bootimg 打包boot.img

fastboot 指令

adb logcat -d > logcat.log
adb shell dmesg > dmesg.log
adb reboot edl

fastboot getvar all
fastboot getvar rescue_phoneinfo
fastboot oem device-info

fastboot oem unlock_critical
fastboot oem unlock
fastboot oem unlock-go
fastboot oem get-product-model
fastboot oem get-psid
fastboot oem get-build-number
fastboot oem asus-csc_lk(改过的系统上锁会变转)
fastboot flashing unlock
fastboot erase  
fastboot --set-active=b

-----
擦除,引导区,高速缓冲,恢复,系统,用户数据区等。
fastboot erase boot
fastboot erase cache
fastboot erase recovery
fastboot erase system
fastboot erase userdata

把固件写入到设备中。这里使用的是update命令,把系统压缩包直接更新
fastboot -w update image-nakasi-lmy47v.zip

updater-script刷机脚本、函数语法

mount("MTD", "system", "/system");#挂载system分区,设置返回指针"/system”
mount("vfat", "/dev/block/mmcblk1p2", "/system");#挂载/dev/block/mmcblk1p2,返回指针"/system”
unmount("/system");
format("MTD", "system");#格式化system分区
delete("/data/zipalign.log");#删除文件
delete_recursive("/data/dalvik-cache");#删除文件夹

ui_print("It's ready!");#屏幕打印It’s ready!
show_progress(0.1, 10);#show_progress下面的操作可能进行10s,完成后进度条前进0.1(也就是10%)

package_extract_dir("system", "/system");#释放ROM包里system文件夹下所有文件和子文件夹至/system
package_extract_dir("my.zip", "/system");#解压ROM包里的my.zip文件至/system

symlink("toolbox", "/system/bin/ps");#建立指向toolbox的符号链接/system/bin/ps
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
#/system/etc/dbus.conf 
#所有者:1002
#所属用户组:1002
#权限为:所有者有读权限,所属用户组有读权限,其他无任何权限

set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
# /data/app
#所有者和所属用户组:1000,
#app文件夹的权限是:所有者和所属组拥有全部权限,其他有执行权限;
#app文件夹下的文件权限是:所有者有读写权限,所属组有读权限,其他有读权限。

run_program("/sbin/busybox","mount","/system");#运行<path>脚本
write_raw_image("/tmp/boot.img", "boot");#将yaffs2格式的boot包直接写入boot分区

assert(<sub1>,<sub2>,<sub3>);#如果执行sub1不返回错误则执行sub2,如果sub2不返回错误则执行sub3一次类推。
assert(package_extract_file("boot.img", "/tmp/boot.img"),write_raw_image("/tmp/boot.img", "boot"),delete("/tmp/boot.img"));
#执行package_extract_file,如果不返回错误则执行write_raw_image,如果write_raw_image不出错则执行delete
### activity 启动

```shell
am start com.shafa.market/com.shafa.market.ShafaHomeAct #沙发管家
am start hdpfans/com.hdpfans.app.ui.main.MainActivity #HDP直播
am start com.kuaishou.nebula/com.yxcorp.gifshow.HomeActivity #快手
am start com.dangbeimarket/com.dangbeimarket.activity.WelcomeActivity #当贝市场
am start com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.main.MainActivity #抖音

am start com.qihoo.permmgr/com.qihoo.util.StartActivity #360root
am start com.baidu.easyroot/com.baidu.easyroot.SplashActivity #百度root
am start com.mgyun.shua.su/com.mgyun.shua.su.ui.SplashActivity #root大师
am start com.kingroot.kinguser/com.kingroot.kinguser.activitys.SliderMainActivity #Kingroot
am start com.mgyun.superuser/com.mgyun.superuser.ui.SplashActivity #Superuser
am start bin.mt.plus/bin.mt.plus.Main #MT

bt5.sh(手机)

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
echo "Creating necessary directories"
if [ ! -d /data/local/bt ]
then
  mkdir /data/local/bt
fi
mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system

busybox losetup /dev/block/loop254 $kit/bt.img
busybox mount -t ext2 /dev/block/loop254 $mnt
mount -t devpts devpts $mnt/dev/pts
mount -t proc proc $mnt/proc
mount -t sysfs sysfs $mnt/sys
#seting environment
sysctl -w net.ipv4.ip_forward=1

sync
busybox umount -l $mnt/dev/pts
busybox umount -l $mnt/proc 
busybox umount -l $mnt/sys 
busybox umount -l $mnt
busybox losetup -d /dev/block/loop254
mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system

adb的一些操作指令

Android Debug Bridge 是管理android模拟器或者设备的一个工具,简单的说它就是一个调试工具。以下是adb支持的常用命令:

1.选项指令(Options commands)

(1)adb –d shell:
仅通过USB接口管理adb,如果不只是USB接口返回错误
(2)adb –e shell:
仅通过模拟器来管理adb,如果不只是模拟器管理,返回错误
(3)adb –s <serialNumber> :
通过设备的允许的命令号码来发送命令来管理adb,没有指定号码,返回错误
例如:adb –s 04035C1F18006014 shell
(4)adb devices:
查看所有连接的设备/模拟器
(5)connect <host>[:<port>]
以指定端口号连接设备 
(6)disconnect [<host>[:<port>]]
与设备断开连接

2.设备指令(device commands)

(1)adb push <local> <remote> :
复制本地文件到设备上
例如:adb push e:/folder /data/data
(2)adb pull <remote> [<local>]:
复制设备上的文件到本地
例如:adb pull /data/data/folder e:
(3)adb shell :
登录设备的shell
(4)adb shell <command>  :
登录设备的shell并执行command命令
例如:adb shell ls
(5)adb emu <command>  :
执行模拟器控制台命令
(6)adb logcat [ <filter-spec> ] :
查看设备的logcat,相当于eclipse上的logcat
例如:adb logcat arcgallery:V表示输出TAG为arcgallery和级别在V以上的日志。adb logcat arcgallery:V *:s只输出TAG为arcgallery,级别为V的日志
(7)adb forward <local> <remote>:
建立从主机端口到设备端口的转发
例如:adb forward tcp:6100 tcp:7100表示建立从主机端口6100到设备端口7100的转发
(8)adb jdwp:
列出进程ID
(9)adb install [-l] [-r] [-s] <file> :
安装指定路径的apk文件
例如:adb install c:/data/delivery/package/apk/arcmeidagallery.apk
(10)adb uninstall [-k] <package>:
从设备上移除相应的包
例如:adb uninstall arcsoft.android.arcmediagallery
(11)adb bugreport:
查看bug报告
(12)adb help:
查看adb所支持的所有命令
(13)adb version:
显示adb的版本序列号

3.脚本指令(scripting commands)

adb wait-for-device:
仅仅实例状态为device(联机)时执行
(2) adb start-server:
启动adb服务进程
(3) adb kill-server:
终止服务进程
(7)adb get-state:
获取当前设备的状态
(8)adb get-serialno:
获取当前设备序列号
(9)adb status-window:
显示设备详细状态
(10)adb remount:
重新挂载“/system”分区
(11)adb reboot:
重启设备
(12)adb root
以root角色重新进入
(13)adb usb
以USB模式重新进入
(14)adb tcpip <port>
以指定端口重新进入

4.网络(networking)

(1)adb ppp <tty> [parameters] 
通过USB运行app

5.其它

adb shell
sqlite3
连接sqlite数据库

apk 反编译

cmd:
 dx --dex --output=xxx.dex xxx.class
 apktool.bat d -f Settings.apk	ApkTools反编
 java -jar smali-2.1.3.jar ./Settings/smali/ -o setting.dex	smali.jar将smali文件合并成dex
 d2j-dex2jar.bat Settings.dex	dex2jar将dex转jar


adb:
 dumpsys activity top	Activity的包名和fragment


shell:
 dalvikvm -cp /sdcard/name.dex name

tool:
SVADeodexerForArt V5.5(合并odex)
 解压至目录system下。勾选三个选项

baksmali.jar+ smali.jar +apktools:(合并odex)
 java -jar baksmali.jar -d ./system/framework -x Settings.odex
 java -jar smali.jar classout/ -o classes.dex


---------------步骤
.--> SVADeodexerForArt合并odex
.--> apktools反编译
.--> smali.jar打包smali成dex
.--> dex2jar.jar转换dex成jar
.--> jd-gui工具加载jar查看

apk数据库(db文件)路径

wifi
/data/misc/wifi/wpa_supplicant.conf
juissh
/data/data/com.sonelli.juicessh/databases/19a093afcee2a1df8bb6ac14d79843
号码
/data/data/com.android.providers.contacts/databases/contacts2.db
记事本
/data/data/com.yulong.android.memo/databases/coolmemo.db
电话amr
/data/data/com.android.mms/databases/records.db
es分类
/data/data/com.estrongs.android.pop/databases/scanner.db
es网盘
/data/data/com.estrongs.android.pop/shared_prefs/serverlistdb7.xml
短信
/data/data/com.android.mms/databases/smssdk.db
剪切板
/data/data/com.iflytek.inputmethod/files/plugin/08734f88-c932-11e4-8830-0800200c9a66/clipboard.db
蘑菇丁
/data/data/com.smilingmobile.seekliving/shared_prefs/perference.xml
领英
/data/data/com.linkedin.android/shared_prefs/auth_library_prefs.xml

删除 /sdcard 的垃圾文件,看着碍眼

#!/bin/bash

SdFiles="
.Application
.BD_SAPI_CACHE
.DataStorage
.UTSystemConfig
.audio_param
.taobao.dp
.estrongs
.g_b_d_v
.g_m_b_s
.omgid
.sys.log
.tbs
.tcookieid
.thumbnails
.tomb
.transportext
.userReturn
.vivo
.wkchannel
.wkcid
.wpcc
.x_b_d
.zp
.test
.a.dat
.uxx
.um

.360MagazineScreen
.AndroidRealTime
.colorfulFolder
.sfp
.Android
.wubauu
APMasterKey
Apktool_out.txt
360Download
360freewifi
360Log
51job
ApktoolHelper
backup
BaiduMap
Catfish
data
Fonts
Zhaopin
advert
alipay
amap
baidu
com.apowersoft
com.cmri.universalapp
com.huibo.quanzhi
com.job.android
com.smilingmobile.seekliving
com.tencent.mobileqq
com.tencent.mtt
com.zhaopin.social
com.hpbr.bosszhipin
documents
gallery3d
iFlyIME
iphone6
keep
libs
mfcache
mipush
moguding
msc
mtklog
Mob
PaarService_log
qiku
QTAudioEngine
shading
shading_otp
system
tad
tbs
tbslog
techwolf
tmsdual_shark_mq.bat
unitType
weishi_yt_model
WifiMasterKey
UnicomLog
unicom_cache_image
javamanual
AllenVersionPath
anchovy
MQ
qmt
sitemp
setup
at
1503-A01
cameralog
sutui
userexperience
.awp
.gs_file
.gs_fs0
.mttccid
.ttcryptofile
CameraHelper
ICBCWAPLog
OS
autonavi
digu
icbcimlite
statistic
tencentmapsdk
ttan.ini
uac
xianyu
.AndroidOS
.aaa
.bbb
c
.iFly
.iFlyIME
.ids
.jds
.sdk
.system
.system_uuid
.turing.dat
.turingdebug
360docker
360map
Alarms
Lanthanum
Notifications
Podcasts
ceshitest.txt
com.tencent.reading
iFly
oray
t.txt.bak
wandoujia
weather2345
应用中心
del.sh.bak
.OSweather
.SystemConfig
.aide
.fudid
.growingio
.qiyi
.sa
Adhoc
AlivcData
10086
360SDK
360bbs
BaiduWenku
BaiduWenkudownload
GDTDOWNLOAD
Installation
NAD
PreventUpdate
QiYiVideo_Local
Reaper
Ringtones
RongXin
SysQS
Unicom
WechatXposed
Yuntongxun
admin
aplayerlog
audio_manager
baidunlp
bddownload
cmcc_sso_ks
com.jingdong.app.mall
com.tencent.qqlive
com.xunlei.downloadprovider
dht.id
dhtnodes.dat
dhtnodes.dat
down
em
email
filedownloader
geetest
hcdnlivenet.ini
last_logs
mdwechat
net.csdn.csdnplus
now
ramdump
sensetime
shumei.txt
sina
smartlog
sogou
speechsuite
temp
umeng_cache
weixinfanyi
youku
zhihu

.0DFC864F7DF23D084744BBA909901FE7
.3deaedc28469674418c57af6b7cc832b
.kspdf
.mn_-422783075
.skvec
.x_o_b_d
"

del_dirAndfile(){
  for FILE in $SdFiles; do
    if [ -d "$FILE" ]; then 
      rm -fr /sdcard/$FILE
      echo -e 删除 "\033[43;31m $FILE \033[0m" 目录 ...ok;
    fi
    if [ -f "$FILE" ]; then
      echo -e 删除 "\033[31m $FILE \033[0m" 文件 ...ok;
      rm -fr /sdcard/$FILE
    fi
  done
  echo -e "\n\033[32m 垃圾清理完成! \033[0m"
}

del_dirAndfile

以下待测试,隔了好些年,新的安卓版本可能无效

adb 安装与卸载

#安装adb
mount -o remount,rw /system
cp -f '/data/app/crixec.adbtoolkitsinstall-1/lib/x86/libadb.so' '/system/bin/adb'
cp -f '/data/app/crixec.adbtoolkitsinstall-1/lib/x86/libfastboot.so' '/system/bin/fastboot'
setprop service.adb.tcp.port 5555
stop adbd
start adbd
setprop service.adb.tcp.port 0000
stop adbd
#卸载adb
rm -f /system/bin/adb /system/bin/fastboot 2>>/dev/null
rm -f /system/xbin/adb /system/xbin/fastboot 2>>/dev/null
rm -f /vendor/bin/adb /vendor/bin/fastboot 2>>/dev/null

adb 使用

nox_adb.exe connect 127.0.0.1:62001 #夜神
adb install a.apk
adb uninstall com...
adb push ./1.txt /mnt/sdcard/  #推送到设备
adb pull /mnt/sdcard/1.txt /C:/ #拉到电脑
adb forward tcp:23946 tcp:23946	#端口转发,远程端_设备端
adb jdwp					 #查看设备中可以被调试的应用的进程号
adb root
mount
mount -o remount -o rw /system
mount -o remount -w /dev/block/mmcblk0p1 /system

adb -s 127.0.0.1:5555 shell
am start com.android.camera/com.android.camera.CameraActivity #启动app
ps grep 包名 -> kill -9 PID #kill
am force-stop com.android.camera #关闭

am start -D -n  com.z.h		 #以调试方式启动应用
am startservice -n [包名/服务名]	#启动一个服务
am broadcast -a android.NET.conn.CONNECTIVITY_CHANGE	#发送一个广播

tcpdump host 192.168.1.5 and not 192.168.1.7	远程/本机

adb 其他功能

# adb超作一些进程
adb shell `am force-stop com.qiku.healthguard` #关闭 360健康卫士

am start -n com.android.settings/com.android.settings.ChooseLockGeneric --ez confirm_credentials false --ei lockscreen.password_type 0 --activity-clear-task
#来自 解锁失败或安装不成功请运行(迷图神器)
#2013年12月公布,影响4.3及以下所有系统,漏洞产生于com.android.settings.ChooseLockGeneric这个Activity中,一个名为mPasswordConfirmed的boolean被暴露,导致可以从外部触发解锁进程而无需确认解锁密码,具体看下面的分析:
# com.android.settings.ChooseLockGeneric是负责更改系统的解锁方式的类,在用户要更改原先的锁定图案或密码时,需要进行重输确认, 确认后mPasswordConfirmed的值为true,但这个参数被暴露,以至于可以从外部更改,使得系统误认为已经确认了密码,从而清除锁屏

shell 环境

远程JVM,临时开启调试模式,重启手机失效
su
magisk resetprop ro.debuggable 1 # 重置调试模式为1,重启手机失效
stop;start; #一定要通过该方式,重启 Android中注册的所有服务ServiceManager
getprop ro.debuggable #查看 调试模式状态、备版本号、系统属性等
getprop ro.product.model
状态检测
netcfg						#查看设备ip
netstat						#查看设备的端口号信息
ime list -s 				#查看当前存在的输入法
ime set com.android.tvremoteime/.IMEService #切换输入法

logcat -s tag			    #查看并过滤tag日志:logcat | grep tencent
logcat | findstr com.z.h/pid/keyword
screencap -p /sdcard/1.png	 #截图
screenrecord  /data/local/tmp/1.mp4	 #录屏
input text 'hello'			 #输入信息到文本框
input touchscreen swipe 170 200 170 200 3333 #模拟点击
wm size					    #获取当前分辨率
wm size 3840x2160			#设置
top
top [-n/-m/-d/-s/-t] #查看当前哪些应用的cpu消耗信息
 -m # 最多显示多少个进程
 -n # 刷新次数
 -d # 刷新间隔时间(默认5秒)
 -s # 按哪列排序
 -t # 显示线程信息而不是进程
top –d –m 10 |grep cn.wjdiankong.demo #用grep过滤应用信息,查看他的当前cpu使用率。
pm
pm list package 			 #获取包名
pm list package -3 			 #列出第三方应用
pm install/uninstall /sdcard/1.apk	#安装/卸载(-k:卸载软件但是保留配置和缓存)
pm clear com.z.h			#清空应用数据
pm set-install-location 0	 #查找安装apk的位置 默认0[auto]
run-as	com.z.h				#在非root设备中查看指定debug模式的包名应用沙盒数据
dumpsys
dumpsys activity top		 #得到这个页面的activity名称
dumpsys package com.z.h		 #包文件清单
dumpsys meminfo com.z.h/11976 #查看指定进程名或进程id的内存信息
dumpsys dbinfo  com.z.h		 #查看指定包名的数据库存储信息(包括存储的sql语句)
cat /proc/[pid]/maps 		#查看当前进程的内存映射信息,比如加载了哪些so文件,dex文件等
cat /proc/[pid]/status 		#查看进程的状态信息,如TracerPid
cat /proc/[pid]/net/tcp/tcp6/udp/udp6 #查看当前应用使用的端口号信息
app_process
app_process 运行代码目录 #运行Java代码
export CLASSPATH=/data/demo.jar
  exec /system/bin/app_process /data/cn.wjdiankong.Main
想启动一个jar包:需要用dx命令把dex文件转化成jar包功能,实际上他不是一个正常的jar包了,而是一个包含了classes.dex文件的压缩文件了。
dalvikvm
dalvikvm –cp /data/demo.dex #运行一个dex文件
dalvikvm –cp /data/demo.dex cn.wjdiankong.Main
有时为了测试一个dex文件功能可以用到,和上面的命令有很大相似之处,只是运行的文件不一样。
dexdump
dexdump D:\classes.dex #查看apk中dex文件的详细信息,有时候也没必要反编译,可以直接用这个命令即可

开机自启shell脚本

1.启用路由器自带的防火墙,把这嗅探出的ip加入屏蔽规则就成了

chmod 777 /system/etc/adblock.sh
 #! /system/bin/sh
 iptables -I INPUT -s 223.6.253.51 -j DROP
 iptables -I OUTPUT -s 223.6.253.51 -j DROP
sh adblock.sh

#让这段脚本开机自动运行,三种方法
1 修改init.rc,添加一行service即可。
   说这话的人纯属没长脑子,init.rc只是ramdisk.img在内存中的镜像而已,每次修改后开机会重新复原,唯一改动的办法是修改固件后重新刷机,你想让电视变砖吗?
2 修改/system/etc/install-recovery.sh,把adblock.sh的内容添加进去。
   这招在其他安卓平板上可行,可TMD创维在init.rc里把install-recovery.sh给注释掉了,此路不通也。
3 把shell脚本放在/system/etc/init.d目录下,开机就会自动运行。
   你以为这是三星手机啊!这个目录根本就不存在!这个功能早就被创维扣掉了。

2.写一个app,用来调用adblock.sh,把它做成开机自动运行

//方法二的代码给出一段,待测试
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("./system/etc/adblock.sh");
try {
    if (proc.waitFor() != 0) {
        System.err.println( proc.exitValue());
    }
} catch (InterruptedException e) {
    System.err.println(e);
}
----------------------
<receiver android:enabled="true" android:name=".BootBroadcastReceiver"    
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">     
    <intent-filter>     
    	<action android:name="android.intent.action.BOOT_COMPLETED" />     
        <category android:name="android.intent.category.DEFAULT" />     
    </intent-filter>     
</receiver>
----------------------
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
----------------------
// BootBroadcastReceiver.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootBroadcastReceiver extends BroadcastReceiver {
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(ACTION)) {
            Intent mainActivityIntent = new Intent(context, MyActivity.class); 
            mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mainActivityIntent);
        }
    }
}

appt 相关

aapt dump badging app.apk #获取Apk包名和入口Activity
aapt dump xmltree demo.apk AndroidManifest.xml #查看apk中资源文件的信息以及编辑apk程序包
# 替换apk中的文件
aapt remove -v vue.apk res\drawable-xxhdpi-v4\stamp_logo.png
aapt add -v vue.apk res/drawable-xxhdpi-v4/stamp_logo.png

root 备份 rec.img

#高通芯片,shell模式下
dd if=/dev/block/platform/msm_sdcc.1/by-name/recovery of=/sdcard/recovery.img #revoery链接到/dev/block/mmcblk0p16 这个分区块,因此也可以:
dd if=/dev/block/mmcblk0p16 of=/storage/sdcard/recovery.img
 
#MTK芯片,2种方式:
dd if=/dev/recovery of=/storage/sdcard/recovery.img bs=1024 count=6144
dd if=/dev/block/mmcblk0 of=/storage/sdcard/recovery.img skip=xxxx bs=1024 count=6144
# bs:固定1024,count:cat /proc/dumchar_info 对应的recovery来确定(高通平台没有dumchar_info这个文件),
#比如size列为0x600000,那么count的值为6144,也就是6M,如为0x700000,那么count的值为7168,也就是7M大小。
#skip:偏移,MTK平台recovery和boot等都在一个相同的分区中,通过地址偏移量来区分,这就是为什么高通平台不需要执行bs 和count的原因。

#Nvidia芯片
ddif=/dev/block/platform/sdhci-tegra.3/by-name/SOS of=/storage/sdcard/recovery.img 

abootimg 解打包 rec

apt-get install abootimg
解包
abootimg -x recovery.img #bootimg.cfg、zImage、initrd.img
abootimg-unpack-initrd initrd.img #./ramdisk/
打包
abootimg-pack-initrd initrd_new.img ramdisk/ #比之前大则需要修改bootimg.cfg中bootsize大小
abootimg --create recovery_new.img -f bootimg.cfg -k zImage -r initrd.img

#解BL锁
fastboot oem get-bootinfo,将显示当前手机bootloader的状态信息
fastboot oem unlock
fastboot oem unlock 1234567812345678 16位解锁密码
fastboot flash recovery recovery.img

# default.prop 文件
ro.secure=0 关闭保护 
ro.allow.mock.location=1 
persist.service.adb.enable=1 adb远程开

# bootimg 工具
bootimg --unpack-bootimg 解包 boot.img
bootimg --unpack-ramdisk 解包 ramdisk.gz // cd initrd :ro.secure=0,意为关闭保护
bootimg --repack-ramdisk 打包 ramdisk.gz
bootimg --repack-bootimg 打包boot.img

fastboot 指令

adb logcat -d > logcat.log
adb shell dmesg > dmesg.log
adb reboot edl

fastboot getvar all
fastboot getvar rescue_phoneinfo
fastboot oem device-info

fastboot oem unlock_critical
fastboot oem unlock
fastboot oem unlock-go
fastboot oem get-product-model
fastboot oem get-psid
fastboot oem get-build-number
fastboot oem asus-csc_lk(改过的系统上锁会变转)
fastboot flashing unlock
fastboot erase  
fastboot --set-active=b

-----
擦除,引导区,高速缓冲,恢复,系统,用户数据区等。
fastboot erase boot
fastboot erase cache
fastboot erase recovery
fastboot erase system
fastboot erase userdata

把固件写入到设备中。这里使用的是update命令,把系统压缩包直接更新
fastboot -w update image-nakasi-lmy47v.zip

updater-script刷机脚本、函数语法

mount("MTD", "system", "/system");#挂载system分区,设置返回指针"/system”
mount("vfat", "/dev/block/mmcblk1p2", "/system");#挂载/dev/block/mmcblk1p2,返回指针"/system”
unmount("/system");
format("MTD", "system");#格式化system分区
delete("/data/zipalign.log");#删除文件
delete_recursive("/data/dalvik-cache");#删除文件夹

ui_print("It's ready!");#屏幕打印It’s ready!
show_progress(0.1, 10);#show_progress下面的操作可能进行10s,完成后进度条前进0.1(也就是10%)

package_extract_dir("system", "/system");#释放ROM包里system文件夹下所有文件和子文件夹至/system
package_extract_dir("my.zip", "/system");#解压ROM包里的my.zip文件至/system

symlink("toolbox", "/system/bin/ps");#建立指向toolbox的符号链接/system/bin/ps
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
#/system/etc/dbus.conf 
#所有者:1002
#所属用户组:1002
#权限为:所有者有读权限,所属用户组有读权限,其他无任何权限

set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
# /data/app
#所有者和所属用户组:1000,
#app文件夹的权限是:所有者和所属组拥有全部权限,其他有执行权限;
#app文件夹下的文件权限是:所有者有读写权限,所属组有读权限,其他有读权限。

run_program("/sbin/busybox","mount","/system");#运行<path>脚本
write_raw_image("/tmp/boot.img", "boot");#将yaffs2格式的boot包直接写入boot分区

assert(<sub1>,<sub2>,<sub3>);#如果执行sub1不返回错误则执行sub2,如果sub2不返回错误则执行sub3一次类推。
assert(package_extract_file("boot.img", "/tmp/boot.img"),write_raw_image("/tmp/boot.img", "boot"),delete("/tmp/boot.img"));
#执行package_extract_file,如果不返回错误则执行write_raw_image,如果write_raw_image不出错则执行delete
### activity 启动

```shell
am start com.shafa.market/com.shafa.market.ShafaHomeAct #沙发管家
am start hdpfans/com.hdpfans.app.ui.main.MainActivity #HDP直播
am start com.kuaishou.nebula/com.yxcorp.gifshow.HomeActivity #快手
am start com.dangbeimarket/com.dangbeimarket.activity.WelcomeActivity #当贝市场
am start com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.main.MainActivity #抖音

am start com.qihoo.permmgr/com.qihoo.util.StartActivity #360root
am start com.baidu.easyroot/com.baidu.easyroot.SplashActivity #百度root
am start com.mgyun.shua.su/com.mgyun.shua.su.ui.SplashActivity #root大师
am start com.kingroot.kinguser/com.kingroot.kinguser.activitys.SliderMainActivity #Kingroot
am start com.mgyun.superuser/com.mgyun.superuser.ui.SplashActivity #Superuser
am start bin.mt.plus/bin.mt.plus.Main #MT

bt5.sh(手机)

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
echo "Creating necessary directories"
if [ ! -d /data/local/bt ]
then
  mkdir /data/local/bt
fi
mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system

busybox losetup /dev/block/loop254 $kit/bt.img
busybox mount -t ext2 /dev/block/loop254 $mnt
mount -t devpts devpts $mnt/dev/pts
mount -t proc proc $mnt/proc
mount -t sysfs sysfs $mnt/sys
#seting environment
sysctl -w net.ipv4.ip_forward=1

sync
busybox umount -l $mnt/dev/pts
busybox umount -l $mnt/proc 
busybox umount -l $mnt/sys 
busybox umount -l $mnt
busybox losetup -d /dev/block/loop254
mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system

adb的一些操作指令

Android Debug Bridge 是管理android模拟器或者设备的一个工具,简单的说它就是一个调试工具。以下是adb支持的常用命令:

1.选项指令(Options commands)

(1)adb –d shell:
仅通过USB接口管理adb,如果不只是USB接口返回错误
(2)adb –e shell:
仅通过模拟器来管理adb,如果不只是模拟器管理,返回错误
(3)adb –s <serialNumber> :
通过设备的允许的命令号码来发送命令来管理adb,没有指定号码,返回错误
例如:adb –s 04035C1F18006014 shell
(4)adb devices:
查看所有连接的设备/模拟器
(5)connect <host>[:<port>]
以指定端口号连接设备 
(6)disconnect [<host>[:<port>]]
与设备断开连接

2.设备指令(device commands)

(1)adb push <local> <remote> :
复制本地文件到设备上
例如:adb push e:/folder /data/data
(2)adb pull <remote> [<local>]:
复制设备上的文件到本地
例如:adb pull /data/data/folder e:
(3)adb shell :
登录设备的shell
(4)adb shell <command>  :
登录设备的shell并执行command命令
例如:adb shell ls
(5)adb emu <command>  :
执行模拟器控制台命令
(6)adb logcat [ <filter-spec> ] :
查看设备的logcat,相当于eclipse上的logcat
例如:adb logcat arcgallery:V表示输出TAG为arcgallery和级别在V以上的日志。adb logcat arcgallery:V *:s只输出TAG为arcgallery,级别为V的日志
(7)adb forward <local> <remote>:
建立从主机端口到设备端口的转发
例如:adb forward tcp:6100 tcp:7100表示建立从主机端口6100到设备端口7100的转发
(8)adb jdwp:
列出进程ID
(9)adb install [-l] [-r] [-s] <file> :
安装指定路径的apk文件
例如:adb install c:/data/delivery/package/apk/arcmeidagallery.apk
(10)adb uninstall [-k] <package>:
从设备上移除相应的包
例如:adb uninstall arcsoft.android.arcmediagallery
(11)adb bugreport:
查看bug报告
(12)adb help:
查看adb所支持的所有命令
(13)adb version:
显示adb的版本序列号

3.脚本指令(scripting commands)

adb wait-for-device:
仅仅实例状态为device(联机)时执行
(2) adb start-server:
启动adb服务进程
(3) adb kill-server:
终止服务进程
(7)adb get-state:
获取当前设备的状态
(8)adb get-serialno:
获取当前设备序列号
(9)adb status-window:
显示设备详细状态
(10)adb remount:
重新挂载“/system”分区
(11)adb reboot:
重启设备
(12)adb root
以root角色重新进入
(13)adb usb
以USB模式重新进入
(14)adb tcpip <port>
以指定端口重新进入

4.网络(networking)

(1)adb ppp <tty> [parameters] 
通过USB运行app

5.其它

adb shell
sqlite3
连接sqlite数据库

apk 反编译

cmd:
 dx --dex --output=xxx.dex xxx.class
 apktool.bat d -f Settings.apk	ApkTools反编
 java -jar smali-2.1.3.jar ./Settings/smali/ -o setting.dex	smali.jar将smali文件合并成dex
 d2j-dex2jar.bat Settings.dex	dex2jar将dex转jar


adb:
 dumpsys activity top	Activity的包名和fragment


shell:
 dalvikvm -cp /sdcard/name.dex name

tool:
SVADeodexerForArt V5.5(合并odex)
 解压至目录system下。勾选三个选项

baksmali.jar+ smali.jar +apktools:(合并odex)
 java -jar baksmali.jar -d ./system/framework -x Settings.odex
 java -jar smali.jar classout/ -o classes.dex


---------------步骤
.--> SVADeodexerForArt合并odex
.--> apktools反编译
.--> smali.jar打包smali成dex
.--> dex2jar.jar转换dex成jar
.--> jd-gui工具加载jar查看

apk数据库(db文件)路径

wifi
/data/misc/wifi/wpa_supplicant.conf
juissh
/data/data/com.sonelli.juicessh/databases/19a093afcee2a1df8bb6ac14d79843
号码
/data/data/com.android.providers.contacts/databases/contacts2.db
记事本
/data/data/com.yulong.android.memo/databases/coolmemo.db
电话amr
/data/data/com.android.mms/databases/records.db
es分类
/data/data/com.estrongs.android.pop/databases/scanner.db
es网盘
/data/data/com.estrongs.android.pop/shared_prefs/serverlistdb7.xml
短信
/data/data/com.android.mms/databases/smssdk.db
剪切板
/data/data/com.iflytek.inputmethod/files/plugin/08734f88-c932-11e4-8830-0800200c9a66/clipboard.db
蘑菇丁
/data/data/com.smilingmobile.seekliving/shared_prefs/perference.xml
领英
/data/data/com.linkedin.android/shared_prefs/auth_library_prefs.xml

删除 /sdcard 的垃圾文件,看着碍眼

#!/bin/bash

SdFiles="
.Application
.BD_SAPI_CACHE
.DataStorage
.UTSystemConfig
.audio_param
.taobao.dp
.estrongs
.g_b_d_v
.g_m_b_s
.omgid
.sys.log
.tbs
.tcookieid
.thumbnails
.tomb
.transportext
.userReturn
.vivo
.wkchannel
.wkcid
.wpcc
.x_b_d
.zp
.test
.a.dat
.uxx
.um

.360MagazineScreen
.AndroidRealTime
.colorfulFolder
.sfp
.Android
.wubauu
APMasterKey
Apktool_out.txt
360Download
360freewifi
360Log
51job
ApktoolHelper
backup
BaiduMap
Catfish
data
Fonts
Zhaopin
advert
alipay
amap
baidu
com.apowersoft
com.cmri.universalapp
com.huibo.quanzhi
com.job.android
com.smilingmobile.seekliving
com.tencent.mobileqq
com.tencent.mtt
com.zhaopin.social
com.hpbr.bosszhipin
documents
gallery3d
iFlyIME
iphone6
keep
libs
mfcache
mipush
moguding
msc
mtklog
Mob
PaarService_log
qiku
QTAudioEngine
shading
shading_otp
system
tad
tbs
tbslog
techwolf
tmsdual_shark_mq.bat
unitType
weishi_yt_model
WifiMasterKey
UnicomLog
unicom_cache_image
javamanual
AllenVersionPath
anchovy
MQ
qmt
sitemp
setup
at
1503-A01
cameralog
sutui
userexperience
.awp
.gs_file
.gs_fs0
.mttccid
.ttcryptofile
CameraHelper
ICBCWAPLog
OS
autonavi
digu
icbcimlite
statistic
tencentmapsdk
ttan.ini
uac
xianyu
.AndroidOS
.aaa
.bbb
c
.iFly
.iFlyIME
.ids
.jds
.sdk
.system
.system_uuid
.turing.dat
.turingdebug
360docker
360map
Alarms
Lanthanum
Notifications
Podcasts
ceshitest.txt
com.tencent.reading
iFly
oray
t.txt.bak
wandoujia
weather2345
应用中心
del.sh.bak
.OSweather
.SystemConfig
.aide
.fudid
.growingio
.qiyi
.sa
Adhoc
AlivcData
10086
360SDK
360bbs
BaiduWenku
BaiduWenkudownload
GDTDOWNLOAD
Installation
NAD
PreventUpdate
QiYiVideo_Local
Reaper
Ringtones
RongXin
SysQS
Unicom
WechatXposed
Yuntongxun
admin
aplayerlog
audio_manager
baidunlp
bddownload
cmcc_sso_ks
com.jingdong.app.mall
com.tencent.qqlive
com.xunlei.downloadprovider
dht.id
dhtnodes.dat
dhtnodes.dat
down
em
email
filedownloader
geetest
hcdnlivenet.ini
last_logs
mdwechat
net.csdn.csdnplus
now
ramdump
sensetime
shumei.txt
sina
smartlog
sogou
speechsuite
temp
umeng_cache
weixinfanyi
youku
zhihu

.0DFC864F7DF23D084744BBA909901FE7
.3deaedc28469674418c57af6b7cc832b
.kspdf
.mn_-422783075
.skvec
.x_o_b_d
"

del_dirAndfile(){
  for FILE in $SdFiles; do
    if [ -d "$FILE" ]; then 
      rm -fr /sdcard/$FILE
      echo -e 删除 "\033[43;31m $FILE \033[0m" 目录 ...ok;
    fi
    if [ -f "$FILE" ]; then
      echo -e 删除 "\033[31m $FILE \033[0m" 文件 ...ok;
      rm -fr /sdcard/$FILE
    fi
  done
  echo -e "\n\033[32m 垃圾清理完成! \033[0m"
}

del_dirAndfile
发布评论

评论列表 (0)

  1. 暂无评论