常用的命令笔记
各种命令
一、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
40help <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 | 1、列出文件 |