常用的命令笔记

各种命令

一、Git

  • 1.下载:git clone git://github.com/xxx
  • 2.查看当前远程地址:git remote -v
  • 3.拉取远程代码: git pull
  • 4.初始化:git init
  • 5.本地添加:git add .
  • 6.提交:git push origin master
  • 7.强制提交:git push -f origin master
  • 8.添加远程地址:git remote add origin git://github.com/xxx
  • 9.合并:git pull –rebase origin master
  • 10.代理的开启关闭:
    git config –global http.proxy socks5://127.0.0.1:1086
    git config –global https.proxy socks5://127.0.0.1:1086
    git config –global https.proxy http://127.0.0.1:1086
    git config –global https.proxy https://127.0.0.1:1086
    git config –global –unset http.proxy
    git config –global –unset https.proxy

二、SVN

  • 1.下载:svn checkout URL
  • 2.添加文件:svn add 文件名
  • 3.提交:svn ci -m “提交了什么”

三、逆向常用

  • 1.下载砸壳代码:git clone git://github.com/stefanesser/dumpdecrypted/
  • 2.进入目录:cd dumpdecrypted/
  • 3.生成砸壳工具:make
  • 4.ssh进入手机:ssh root@172.16.2.17
  • 5.退出:logout
  • 6.执行应用:ps -e | grep WeChat
  • 7.sycript查找应用目录:cycript -p WeChat
  • 8.找到应用目录:NSHomeDirectory() @”/var/mobile/Containers/Data/Application/3EE50F8B-42A9-494A-9511-989982600F31”
  • 9.拷贝砸壳工具到应用目录:scp /Users/july/WorkSpeace/iOSReverse/dumpdecrypted/dumpdecrypted.dylib root@172.16.2.17:/var/mobile/Containers/Data/Application/3EE50F8B-42A9-494A-9511-989982600F31/Documents
  • 10.进入应用目录:cd /var/mobile/Containers/Data/Application/3EE50F8B-42A9-494A-9511-989982600F31/Documents
  • 11.砸壳:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/17A4FE7F-0ECF-498E-94AC-6AFA406F901E/WeChat.app/WeChat
  • 12.拷贝出来:scp root@172.16.2.17:/var/mobile/Containers/Data/Application/3EE50F8B-42A9-494A-9511-989982600F31/Documents/WeChat.decrypted /Users/july/WorkSpeace/iOSReverse
  • 13.重签名: ldid -S dumpdecrypted.dylib
  • 14.导出符号表: nm -help .
  • 15.过滤:| grep

四、Theos

  • 1.在.bash_profile 配置环境变量
  • 2.下载git clone –recursive https://github.com/theos/theos.git $THEOS
  • 3.nic.pl 创建项目,按步骤来
  • 4.编写hook代码
  • 5.make,执行
  • 6.make package install 安装到手机

五、查看本机ssh

  • 1.生成:ssh-keygen -t rsa -C “email@163.com
  • 2.查看:cat ~/.ssh/id_rsa.pub

六、Cycript

  • 1.端口映射:python tcprelay.py -t 22:10010
  • 2.查看应用列表:ps -A 使用PS指令列出进程,找到进程id
  • 3.进入应用:cycript -p 进程id 或者 进程名称
  • 4.查看地址对象:#address
  • 5.使用MJAppTools:https://github.com/CoderMJLee/MJAppTools

七、本地端口占用情况

  • 1.查看端口占用lsof -i:8888
  • 2.杀死/关闭进程:kill xxx

八、lldb动态调试

  • 1.需要将瘦身且开通权限的debugsever丢到手机的 /usr/bin 目录下
    瘦身:(lipo -thin armv7s ~/debugserver -output ~/debugserver)
    重签名赋予权限:codesign -s - –entitlements ent.plist -f debugserver
  • 2.赋予运行权限chmod +x debugserver
  • 3.将mac端口号再次映射, 也就是
    原:python /Users/july/WorkSpeace/iOSReverse/usbmuxd/tcprelay.py -t 22:10010
    改为: python /Users/july/WorkSpeace/iOSReverse/usbmuxd/tcprelay.py -t 22:10010 10011:10011
    也就说22手机端口映射到mac的10010端口,再将10011端口 赋予给debugsever的10011端口,端口号不做限制,不是保留端口号就行,比如9527等
  • 4.手机root 内:debugsever *:10011 -a WeChat (使用debugsever的10011端口 监听或者说调试 wechat)
  • 5.mac本地 打开lldb :lldb
  • 6.使用usb的localhost地址以及10011端口连接debugsever: process connect connect://localhost:10011
  • 7.主要调试指令:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    help <command>查看对应 命令的作用
    expression 执行表达式,等同于 p 命令

    相当于po(print object)

    p 打印
    thread backtrace 打印线程函数调用堆栈信息(栈帧一帧一帧对应一个个函数)
    bt是 thread backtrace 简称 也就是说可以直接使用bt去打印线程调用堆栈信息
    thread return 直接将当前函数返回 不执行函数断点之后的代码
    frame variable 查看函数参数和值
    thread step-in , 下一步有函数就函数进去
    thread step-over 也是下一步,但是不进到函数(next 一样效果)
    thread step-out ,出去函数
    c 表示程序继续运行
    n 和 next 和 hread step-over 都是下一步,且把子函数当一步运行
    s 和 step 和 thread step-in,都是下一步,但如果是子函数,就会进到子函数内部
    finish 和 thread step-out 一样,执行完当前函数所有代码
    源码指令级别的控制和汇编指令级别
    ni 在n的基础上加了一个i,表示是汇编级别调试(ni,si)
    breakpoint 添加断点 (breakpoint set -n 函数名称)
    br set 可以简写
    -n 等价于 --name
    breakpoint 添加断点之后会给所有name相同的断点都加上断点
    给指定vc的某个函数添加断点需要加上控制器名称和函数名,
    例:breakpoint set -n "-[ViewController touchBrgan:withEvent]"
    breakpoint set -r aaa(表示正则表达式),表示包含aaa的函数都打上断点
    breakpoint set -s 动态库名称 -r aaa
    breakpoint list 查看断点列表
    断点删除:breakpoint disable 禁用,breakpoint enable 启用,breakpoint deleted 删除 (可以加list编号)
    breakpoint commad add 3,表示添加一些动作,在触发断点3的时候电泳
    breakpoint commad list 3,查看,breakpoint commad delete 3,删除命令
    watchpoint set variable self->_age 查看age内存
    p &self->_age . 查看成员变量age的内存地址
    watchpoint set expression 内存地址
    image list . 查看模块列表
    image lookup -t NSInteger
    image lookup 查看模块信息
    image lookup -a 内存地址 查看内存地址对应信息(包括类包括行号等信息)
    image lookup -n 函数名 ,查找对应函数名
    无法对别人的app方法名打断点,可以使用函数地址

九、Hook命令

  • 1.%new 表示自己新加的函数
  • 2.%ctor 动态库加载时候调用
  • 3.%dtor 程序关闭的时候掉用
  • 4.%orig 函数原来的代码逻辑
  • 5.%(c) 生成一个class对象
  • 6.通配符xm文件:$(wildcard src/*xm)

十、tail查看手机日志

  • 1.在Cydia搜索“syslogd to/var/log/syslog”并安装;
  • 2.在Cydia搜索“Core Utilities”并安装;
  • 3.比如查看微信的日志:tail -f /var/log/syslog |grep WeChat

十一、Mac常用命令\基本命令

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
1、列出文件
ls 参数 目录名 例: 看看驱动目录下有什么:ls /System/Library/Extensions
参数 -w 显示中文,-l 详细信息, -a 包括隐藏文件
2、转换目录
cd 例:想到驱动目录下溜达一圈 cd /System/Library/Extensions
3、建立新目录
mkdir 目录名 例:在驱动目录下建一个备份目录 backup mkdir /System/Library/Extensions/backup
在桌面上建一个备份目录 backup mkdir /User/用户名/Desktop/backup
4、拷贝文件
cp 参数 源文件 目标文件 例:想把桌面的Natit.kext 拷贝到驱动目录中 cp -R /User/用户名/Desktop/Natit.kext /System/Library/Extensions
参数R表示对目录进行递归操作,kext在图形界面下看起来是个文件,实际上是个文件夹。
把驱动目录下的所有文件备份到桌面backup
cp -R /System/Library/Extensions/* /User/用户名/Desktop/backup
5、删除文件
rm 参数 文件 例:想删除驱动的缓存 rm -rf /System/Library/Extensions.kextcache rm -rf /System/Library/Extensions.mkext
参数-rf 表示递归和强制,千万要小心使用,如果执行了 rm -rf / 你的系统就全没了
6、移动文件
mv 文件 例:想把AppleHDA.Kext 移到桌面 mv /System/Library/Extensions/AppleHDA.kext /User/用户名/Desktop
想把AppleHDA.Kext 移到备份目录中 mv /System/Library/Extensions/AppleHDA.kext /System/Library/Extensions/backup
7、文本编辑
nano 文件名 例:编辑natit Info.plist nano /System/Library/Extensions/Natit.kext/Info.plist
目录操作
命令名 功能描述 使用举例
mkdir 创建一个目录 mkdir dirname
rmdir 删除一个目录 rmdir dirname
mvdir 移动或重命名一个目录 mvdir dir1 dir2
cd 改变当前目录 cd dirname
pwd 显示当前目录的路径名 pwd
ls 显示当前目录的内容 ls -la
文件操作
命令名 功能描述 使用举例
cat 显示或连接文件 cat filename
od 显示非文本文件的内容 od -c filename
cp 复制文件或目录 cp file1 file2
rm 删除文件或目录 rm filename
mv 改变文件名或所在目录 mv file1 file2
find 使用匹配表达式查找文件 find . -name "*.c" -print
file 显示文件类型 file filename
选择操作
命令名 功能描述 使用举例
head 显示文件的最初几行 head -20 filename
tail 显示文件的最后几行 tail -15 filename
cut 显示文件每行中的某些域 cut -f1,7 -d: /etc/passwd
colrm 从标准输入中删除若干列 colrm 8 20 file2
diff 比较并显示两个文件的差异 diff file1 file2
sort 排序或归并文件 sort -d -f -u file1
uniq 去掉文件中的重复行 uniq file1 file2
comm 显示两有序文件的公共和非公共行 comm file1 file2
wc 统计文件的字符数、词数和行数 wc filename
nl 给文件加上行号 nl file1 >file2
进程操作
命令名 功能描述 使用举例
ps 显示进程当前状态 ps u
kill 终止进程 kill -9 30142
时间操作
命令名 功能描述 使用举例
date 显示系统的当前日期和时间 date
cal 显示日历 cal 8 1996
time 统计程序的执行时间 time a.out
网络与通信操作
命令名 功能描述 使用举例
telnet 远程登录 telnet hpc.sp.net.edu.cn
rlogin 远程登录 rlogin hostname -l username
rsh 在远程主机执行指定命令 rsh f01n03 date
ftp 在本地主机与远程主机之间传输文件 ftpftp.sp.net.edu.cn
rcp 在本地主机与远程主机 之间复制文件 rcp file1 host1:file2
ping 给一个网络主机发送 回应请求 ping hpc.sp.net.edu.cn
mail 阅读和发送电子邮件 mail
write 给另一用户发送报文 write username pts/1
mesg 允许或拒绝接收报文 mesg n
Korn Shell 命令
命令名 功能描述 使用举例
history 列出最近执行过的 几条命令及编号 history
r 重复执行最近执行过的 某条命令 r -2
alias 给某个命令定义别名 alias del=rm -i
unalias 取消对某个别名的定义 unalias del
其它命令
命令名 功能描述 使用举例
uname 显示操作系统的有关信息 uname -a
clear 清除屏幕或窗口内容 clear
env 显示当前所有设置过的环境变量 env
who 列出当前登录的所有用户 who
whoami 显示当前正进行操作的用户名 whoami
tty 显示终端或伪终端的名称 tty
stty 显示或重置控制键定义 stty -a
du 查询磁盘使用情况 du -k subdir
df /tmp 显示文件系统的总空间和可用空间
w 显示当前系统活动的总信息
Mac OS X 终端命令开启功能
1.Lion下显示资源库
方法一:
显示
在“终端”中输入下面的命令:
chflags nohidden ~/Library/
隐藏
在“终端”中输入下面的命令:
chflags hidden ~/Library/
方法二:
打开Finder,菜单中选择前往按住option键就会显示资源库项(每次打开都需要重复操作一次)。

2.Finder显示隐藏文件
显示隐藏文件
在“终端”中输入下面的命令:
defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder
恢复隐藏文件
在“终端”中输入下面的命令:
defaults write com.apple.finder AppleShowAllFiles -bool false
killall Finder
3.Xcode卸载
在“终端”中输入下面的命令:
sudo /Library/uninstall-devtools –mode=all
为实际安装的目录,默认情况下Xcode安装在/Developer目录下,即可执行
sudo /Developer/Library/uninstall-devtools –mode=all
4.在Finder标题栏显示完整路径
在“终端”中输入下面的命令:
defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES
killall Finder
5.去掉窗口截屏的阴影
对窗口进行截屏的时候(Command-Shift-4, 空格),得到的图片周围会自动被加上一圈阴影。
如果你不喜欢这个阴影的效果,可以把它关掉。
在“终端”中输入下面的命令:
defaults write com.apple.screencapture disable-shadow -bool true
killall SystemUIServer
6.强制Safari在新标签中打开网页
Safari是默认支持标签浏览的。但是,我们在页面上点击链接或者在其他应用程序中点击链接的时候,
Safari往往是打开了一个新的窗口,导致页面上的Safari窗口过多,不好管理。通过下面这个小窍门,
我们可以让Safari默认是在一个新标签中打开网页。
在“终端”中输入下面的命令:
defaults write com.apple.Safari TargetedClicksCreateTabs -bool true
7.改变截屏图片的保存位置
MacOS提供了非常方便的截屏快捷键,可以让我们非常快速的对整个屏幕、部分屏幕或者应用程序窗口进行截屏。不过,这个截屏功能有一个不足之处,就是只能将截 屏图片保存到桌面。如果我们截取的图片特别多,就会让桌面显得特别凌乱。那有没有办法来修改截屏图片的默认保存位置呢?有。方法非常简单,只要在“终端” 中输入下面的命令就可以了。
defaults write com.apple.screencapture location 存放位置
killall SystemUIServer
在输入命令的时候,将“存放位置”替换成真正的文件夹就可以了。例如,你希望存放到自己用户目录的Screenshots文件夹下,就输入
defaults write com.apple.screencapture location ~/Screenshots